Closed jeanthom closed 4 years ago
Setting https://github.com/jeanthom/gram/blob/master/gram/core/refresher.py#L121-L124 as a sync statement breaks down the critical path (but also breaks the elaboratable behavior).
Issue partially mitigated with https://github.com/jeanthom/gram/commit/33d692fa6dd71b58fdcd98779a60323c0ea04ff9
Current critical path:
Info: Critical path report for clock '$glbnet$sysclk_clk' (posedge -> posedge):
Info: curr total
Info: 0.3 0.3 Source dramcore.controller.U$$3.row_TRELLIS_FF_Q_11_SLICE.Q0
Info: 0.8 1.1 Net dramcore.controller.U$$3.row[3] budget 0.403000 ns (33,40) -> (33,40)
Info: Sink dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_SD_L6MUX21_Z_D1_PFUMX_Z_SLICE.B1
Info: 0.2 1.3 Source dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_SD_L6MUX21_Z_D1_PFUMX_Z_SLICE.OFX0
Info: 0.0 1.3 Net dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_SD_L6MUX21_Z_D1 budget 0.000000 ns (33,40) -> (33,40)
Info: Sink dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_SD_L6MUX21_Z_D1_PFUMX_Z_SLICE.FXB
Info: 0.1 1.5 Source dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_SD_L6MUX21_Z_D1_PFUMX_Z_SLICE.OFX1
Info: 0.7 2.1 Net dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_SD[3] budget 0.402000 ns (33,40) -> (32,37)
Info: Sink dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_D1_L6MUX21_Z_D1_PFUMX_Z_SLICE.D1
Info: 0.2 2.4 Source dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_D1_L6MUX21_Z_D1_PFUMX_Z_SLICE.OFX0
Info: 0.0 2.4 Net dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_D1_L6MUX21_Z_D1 budget 0.000000 ns (32,37) -> (32,37)
Info: Sink dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_D1_L6MUX21_Z_D1_PFUMX_Z_SLICE.FXB
Info: 0.1 2.5 Source dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_D1_L6MUX21_Z_D1_PFUMX_Z_SLICE.OFX1
Info: 0.0 2.5 Net dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_D1 budget 0.000000 ns (32,37) -> (32,37)
Info: Sink dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_D1_L6MUX21_Z_D0_PFUMX_Z_SLICE.FXB
Info: 0.1 2.7 Source dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z_L6MUX21_Z_D1_L6MUX21_Z_D0_PFUMX_Z_SLICE.OFX1
Info: 1.5 4.1 Net dramcore.controller.U$$3.trascon.ready_LUT4_A_Z_PFUMX_ALUT_Z[2] budget 0.503000 ns (32,37) -> (27,56)
Info: Sink dramcore.controller.U$$3.U$$1.source__payload__we_LUT4_B_1_Z_PFUMX_ALUT_SLICE.D1
Info: 0.2 4.3 Source dramcore.controller.U$$3.U$$1.source__payload__we_LUT4_B_1_Z_PFUMX_ALUT_SLICE.OFX0
Info: 0.0 4.3 Net dramcore.controller.U$$3.U$$1.source__payload__we_LUT4_B_1_Z_PFUMX_ALUT_Z budget 0.000000 ns (27,56) -> (27,56)
Info: Sink dramcore.controller.U$$3.U$$1.source__payload__we_LUT4_B_1_Z_PFUMX_ALUT_Z_L6MUX21_D0_D1_PFUMX_Z_SLICE.FXA
Info: 0.1 4.5 Source dramcore.controller.U$$3.U$$1.source__payload__we_LUT4_B_1_Z_PFUMX_ALUT_Z_L6MUX21_D0_D1_PFUMX_Z_SLICE.OFX1
Info: 0.0 4.5 Net dramcore.controller.U$$3.U$$1.source__payload__we_LUT4_B_1_Z_PFUMX_ALUT_Z_L6MUX21_D0_Z budget 0.000000 ns (27,56) -> (27,56)
Info: Sink dramcore.controller.U$$3.U$$1.source__payload__we_LUT4_B_1_Z_PFUMX_ALUT_SLICE.FXB
Info: 0.1 4.6 Source dramcore.controller.U$$3.U$$1.source__payload__we_LUT4_B_1_Z_PFUMX_ALUT_SLICE.OFX1
Info: 0.5 5.1 Net dramcore.controller.multiplexer.choose_req.U$$0.grant_TRELLIS_FF_Q_DI_PFUMX_Z_C0_LUT4_Z_1_C_LUT4_Z_D[2] budget 0.502000 ns (27,56) -> (26,55)
Info: Sink dramcore.controller.multiplexer.tccdcon.ready_LUT4_D_Z_LUT4_Z_SLICE.D1
Info: 0.1 5.3 Source dramcore.controller.multiplexer.tccdcon.ready_LUT4_D_Z_LUT4_Z_SLICE.F1
Info: 0.9 6.1 Net dramcore.controller.multiplexer.tccdcon.ready_LUT4_D_Z[1] budget 0.509000 ns (26,55) -> (23,57)
Info: Sink dramcore.controller.U$$6.trascon.ready_LUT4_A_Z_PFUMX_Z_SLICE.C1
Info: 0.2 6.3 Source dramcore.controller.U$$6.trascon.ready_LUT4_A_Z_PFUMX_Z_SLICE.OFX0
Info: 1.3 7.6 Net dramcore.controller.U$$6.trascon.ready_LUT4_A_Z[4] budget 1.072000 ns (23,57) -> (22,47)
Info: Sink dramcore.controller.U$$6.U$$0.fifo.r_en_LUT4_Z_SLICE.D1
Info: 0.1 7.8 Source dramcore.controller.U$$6.U$$0.fifo.r_en_LUT4_Z_SLICE.F1
Info: 1.1 8.8 Net dramcore.controller.U$$6.U$$0_source__ready budget 1.072000 ns (22,47) -> (22,48)
Info: Sink dramcore.controller.U$$6.U$$0.fifo.storage.0.0.0$DPRAM1_SLICE.CE
Info: 0.0 8.8 Setup dramcore.controller.U$$6.U$$0.fifo.storage.0.0.0$DPRAM1_SLICE.CE
Info: 2.3 ns logic, 6.6 ns routing
~With NMIGEN_synth_opts set to "-retime -abc2" we can easily cut the resource usage in half and have a very comfortable max frequency for the design. Closing this issue.~
Yosys support for retiming is quite limite (no CDC annotations, etc.) so we better not use this.
Critical path seems improved thanks to dramsync rst fixes.