Repository navigation
flow: check fixed instances at floorplan, placeable cells afterwards - #4708
Conversation
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
There was a problem hiding this comment.
Code Review
This pull request updates the flow scripts to check placement with the -placeable flag during CTS, detail placement, and global routing. It also introduces a placement check for fixed instances after power distribution network (PDN) generation, utilizing the CELL_PAD_IN_SITES_DETAIL_PLACEMENT variable which is now also enabled for the floorplan stage. The review feedback points out that in flow/scripts/pdn.tcl, resetting the global placement padding to 0 before writing the failure database makes debugging difficult, and suggests writing the database before resetting the padding.
🔍 QoR checkMetrics reflect the PR merge build — i.e. what will land on the target branch. Commit 62 design(s) checked — 0 with regression(s), 0 without a comparable baseline. |
| -left $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) \ | ||
| -right $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) | ||
| set result [catch { log_cmd check_placement -fixed -verbose } errMsg] | ||
| set_placement_padding -global -left 0 -right 0 |
There was a problem hiding this comment.
It was inserted to follow one of the items from the MakefileContract.md file:
A step never leaves configuration for a later step. A command gets its options in its own log_cmd line; a setting it needs is set right before the call and reset right after. State that crosses steps is in the .odb or another result file. Breaks: the later step's log does not show what it ran with, and a checkpoint changes when the design did not.
In practice this is no-op.
…ate/OpenROAD-flow-scripts into dpl-check-fixed-placeable Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Use the new
check_placement -fixed/-placeableoptionsFixed instances (tapcells, endcaps, macros) are not moved after floorplan, so they are now checked once at the end of floorplan, and later stages check only placeable cells. A broken floorplan now fails at 2_4 instead of at detailed placement.
pdn.tcl: runscheck_placement -fixedafterpdngen, because the blocked-layers check needs the power grid. On failure it writes2_4_floorplan_pdn-failed.odb.CELL_PAD_IN_SITES_DETAIL_PLACEMENTpadding, so padding conflicts between fixed instances are still caught. That variable is now also read in thefloorplanstage, and the padding is reset after the check.check_placement -placeable. Fixed cells are still treated as obstacles, so overlaps and padding conflicts between movable and fixed cells are still caught.Testing: ran full flows for nangate45/gcd, nangate45/tinyRocket, asap7/mock-alu, asap7/riscv32i and asap7/tinyRocket. In all of them:
6_final;-placeablegave the same result as the full check at every stage.A tapcell deliberately pushed off the site grid makes 2_4 fail with DPL-41.