| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
There was a problem hiding this comment.
This pull request extends the application of the "DETAIL_PLACEMENT_ARGS" environment variable to all stages of the flow that perform detailed placement, specifically including Clock Tree Synthesis (CTS) and Global Routing (GRT). The documentation in "FlowVariables.md", "variables.json", and "variables.yaml" has been updated to reflect this change, and the TCL scripts "cts.tcl" and "global_route.tcl" have been modified to pass these arguments to their respective "detailed_placement" calls. There are no review comments, and I have no feedback to provide.
Sorry, something went wrong.
detail_place.tcl passed DETAIL_PLACEMENT_ARGS to detailed_placement; the
four other calls -- after clock tree synthesis and after repair_timing in
cts.tcl, after repair_design and after repair_timing in global_route.tcl
-- were bare. A design that picks a legalizer for the place stage, say
-use_diamond_legalizer -max_displacement {450 450} because the default
negotiation legalizer could not place its wire buffers, was legalized by
the default again as soon as CTS inserted its clock buffers.
Measured on a 1.5 M-instance hierarchical design (asap7, 44 macros):
detailed_placement in the place stage took 149 s with the diamond
search; the re-legalization after clock_tree_synthesis in the same flow
ran the negotiation legalizer over 212,700 violations for 400 iterations,
17 minutes, on the same floorplan.
All five calls now go through detailed_placement_helper in util.tcl,
beside repair_timing_helper and repair_design_helper, so the argument
handling lives in one place and a sixth call cannot miss it. The variable
is scoped to place, cts and grt in variables.yaml, so a build system that
filters variables by stage passes it to all three. The default is empty,
so a flow that does not set it is unchanged. FlowVariables.md and
variables.json are regenerated.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
🔍 QoR checkMetrics reflect the PR merge build — i.e. what will land on the target branch. Commit a23b622 · Jenkins build #3 · Baseline: build · View build on dashboard 62 design(s) checked — 0 with regression(s), 1 without a comparable baseline. |
Sorry, something went wrong.
|
@LucasYuki @maliberty ORFS origin/master is broken, I'm sure you didn't hear it here first. This PR is approved and will go in when pr-merge goes green after origin/master is fixed. No further action required on this PR. |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
detail_place.tcl passed DETAIL_PLACEMENT_ARGS to detailed_placement; the four other calls, after clock tree synthesis and after repair_timing in cts.tcl, after repair_design and after repair_timing in global_route.tcl, were bare. A design that picks a legalizer for the place stage, say -use_diamond_legalizer -max_displacement {450 450} because the default negotiation legalizer could not place its wire buffers, was legalized by the default again as soon as CTS inserted its clock buffers.
Measured on a 1.5 M-instance hierarchical asap7 design with 44 macros: detailed_placement in the place stage took 149 s with the diamond search; the re-legalization after clock_tree_synthesis in the same flow ran the negotiation legalizer over 212,700 violations for 400 iterations, 17 minutes, on the same floorplan.
All five calls now go through detailed_placement_helper in util.tcl, beside repair_timing_helper and repair_design_helper, so the argument handling lives in one place and a sixth call cannot miss it. variables.yaml scopes the variable to place, cts and grt, so a build system that filters variables by stage passes it to all three. The default is empty, so a flow that does not set it is unchanged; the variable's description already says it configures detailed placement, not one stage of it. FlowVariables.md and variables.json are regenerated with the repository's scripts.
🤖 Generated with Claude Code