Skip to content

Gui synth#3400

Merged
maliberty merged 1 commit into
The-OpenROAD-Project:masterfrom
Pinata-Consulting:gui-synth
Aug 14, 2025
Merged

Gui synth#3400
maliberty merged 1 commit into
The-OpenROAD-Project:masterfrom
Pinata-Consulting:gui-synth

Conversation

@oharboe
Copy link
Copy Markdown
Collaborator

@oharboe oharboe commented Aug 14, 2025

make gui_synth is an important use-case for fast turnaround, less accurate, RTL rinse and repeat cycles when looking at timing reports, endpoint slack histograms in the GUI.

The only reason why an .odb file and canonicalized .sdc file is not always written out by the synth stage by ORFS by default, is that this takes a bit of extra time and space and it was not deemed desirable. It is a bit of a toss-up, accept less consistency in the flow, or pay a moderate performance penalty. Switching to always writing .odb and canonicalized .sdc is simple enough to do if we change our mind and want simpler, more consistency and fewer suprises across stages.

  • gui_synth: improve user experience, same code as for gui_floorplan/grt, etc. GUI_TIMING=0 now works.
  • sta-synth.tcl was trying to do the same as open.tcl. DRY, now we only have open.tcl
  • .odb file output from synth + canonicalization of 1_synth.sdc, i.e. it is written out by OpenSTA instead of copied from user. This means that any dependencies that the user's SDC_FILE has is not dragged into floorplan.

bazel-orfs will be updated to use this. No change to normal ORFS flow.

To use gui_synth, there is an additional step:

make synth
# New step that writes out 1_synth.odb and canonicalizes
# 1_synth.sdc
make do-1_3_synth
make gui_synth

`make gui_synth` is an important use-case for fast
turnaround, less accurate, RTL rinse and repeat cycles
when looking at timing reports, endpoint slack histograms
in the GUI.

The only reason why an .odb file and canonicalized .sdc
file is not always written out by the ORFS by default,
is that this takes a bit of extra time and space and it was
not deemed desirable. It is a bit of a toss-up, accept less
consistency in the flow, or pay a moderate performance
penalty. Switching to always writing .odb and canonicalized
.sdc is simple enough to do if we change our mind and want
simpler, more consistency and fewer suprises across stages.

- gui_synth: improve user experience, same code
  as for gui_floorplan/grt, etc. GUI_TIMING=0 now works.
- sta-synth.tcl was trying to do the same as open.tcl. DRY,
  now we only have open.tcl
- .odb file output from synth + canonicalization of 1_synth.sdc,
  i.e. it is written out by OpenSTA instead of copied from user.
  This means that any dependencies that the user's SDC_FILE has
  is not dragged into floorplan.

bazel-orfs will be updated to use this, no change to normal
ORFS flow.

To use gui_synth, there is an additional step:

    make synth
    # New step that writes out 1_synth.odb and canonicalizes
    # 1_synth.sdc
    make do-1_3_synth
    make gui_synth

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
@maliberty maliberty merged commit 3ede9e4 into The-OpenROAD-Project:master Aug 14, 2025
8 checks passed
@oharboe oharboe deleted the gui-synth branch August 16, 2025 17:51
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.

2 participants