Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DO NOT REVIEW] synthesis: ABC_AREA=0 now uses 'if -s' #2541

Closed

Conversation

oharboe
Copy link
Collaborator

@oharboe oharboe commented Nov 1, 2024

@jeffng-or @maliberty FYI, experiment with abc retiming.

retime/results/asap7/BoomTile/1/1_1_yosys.v is below with this PR, so not enormously different in number of lines of code:

$ wc -l retime/results/asap7/BoomTile/1/1_1_yosys.v retime2/results/asap7/BoomTile/1/1_synth.v
  7225342 retime/results/asap7/BoomTile/1/1_1_yosys.v
  7245717 retime2/results/asap7/BoomTile/1/1_synth.v

Just like the megaboom documentation states, the multiplier needs to be retimed:

   Iter   | Removed | Resized | Inserted | Cloned |  Pin  |    WNS   |   TNS      |  Viol  | Worst
          | Buffers |  Gates  | Buffers  |  Gates | Swaps |          |            | Endpts | Endpt
---------------------------------------------------------------------------------------------------
        0 |       0 |       0 |        0 |      0 |     0 | -1476.095 | -22178186.0 |     23 | core.alu_exe_unit_2.PipelinedMulUnit.imul.io_resp_bits_data_pipe_b\[63\]$_DFFE_PP_/D

Signed-off-by: Øyvind Harboe <[email protected]>
@oharboe oharboe changed the title synthesis: ABC_AREA=0 now uses 'if -s' [DO NOT REVIEW] synthesis: ABC_AREA=0 now uses 'if -s' Nov 1, 2024
@oharboe oharboe marked this pull request as draft November 1, 2024 11:07
@oharboe oharboe closed this Nov 1, 2024
@maliberty
Copy link
Member

@QuantamHD do you have any experience with abc retiming? Does it make sense to ask Alan?

@QuantamHD
Copy link

I do not, but it's a much less used feature of ABC. IMO retiming is a hard flow to use if you want to run verification on the final netlist since you don't have flop correspondence any more.

It's rarely used in industry outside of Nvidia from what I've heard.

@oharboe
Copy link
Collaborator Author

oharboe commented Nov 4, 2024

I do not, but it's a much less used feature of ABC. IMO retiming is a hard flow to use if you want to run verification on the final netlist since you don't have flop correspondence any more.

It's rarely used in industry outside of Nvidia from what I've heard.

The main motivation is to study megaboom further https://docs.boom-core.org/en/latest/sections/physical-realization.html

@QuantamHD
Copy link

By default Yosys does not pass flops to abc. So it's like not seeing the whole circuit at once. You should make sure the -dff flag is passed.

@maliberty
Copy link
Member

@povik has to yosys team tried to use abc for retiming?

@oharboe
Copy link
Collaborator Author

oharboe commented Nov 4, 2024

Also, in exploration, retiming reduces investment requirements in exploratory RTL.

Which is effectively the megaboom use-case.

We mitigated the need for retiming of synchronous reset by using a false path in megaboom: no lessons to be learned there, so no value in investing in manual retiming.

@oharboe
Copy link
Collaborator Author

oharboe commented Nov 4, 2024

@QuantamHD FYI, the megaboom study, to see if OpenROAD can replicate 1000ps clock period at 28nm with ASAP7 has stalled out for now on retiming, macro placement and global placement. https://github.com/The-OpenROAD-Project/megaboom

Enormous progress has been made, running times, macro placement, stability, CTS, bazel-orfs, to mention a few.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants