Skip to content

flow: check fixed instances at floorplan, placeable cells afterwards - #4708

Merged
eder-matheus merged 2 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:dpl-check-fixed-placeable
Oct 21, 2026
Merged

eder-matheus merged 2 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:dpl-check-fixed-placeable

Conversation

@eder-matheus

Copy link
Copy Markdown
Member

Use the new check_placement -fixed / -placeable options

Fixed 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: runs check_placement -fixed after pdngen, because the blocked-layers check needs the power grid. On failure it writes 2_4_floorplan_pdn-failed.odb.
  • The check uses CELL_PAD_IN_SITES_DETAIL_PLACEMENT padding, so padding conflicts between fixed instances are still caught. That variable is now also read in the floorplan stage, and the padding is reset after the check.
  • Detailed placement, CTS and global route now use check_placement -placeable. Fixed cells are still treated as obstacles, so overlaps and padding conflicts between movable and fixed cells are still caught.
  • The full check after filler placement is unchanged.

Testing: ran full flows for nangate45/gcd, nangate45/tinyRocket, asap7/mock-alu, asap7/riscv32i and asap7/tinyRocket. In all of them:

  • the floorplan check passed;
  • fixed instances were identical from floorplan to 6_final;
  • -placeable gave 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.

Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
@eder-matheus eder-matheus self-assigned this Oct 20, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread flow/scripts/pdn.tcl
@openroad-ci

openroad-ci commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

🔍 QoR check

Metrics reflect the PR merge build — i.e. what will land on the target branch.

Commit 39fc130 · Jenkins build #2 · Baseline: build · View build on dashboard

62 design(s) checked — 0 with regression(s), 0 without a comparable baseline.

Comment thread flow/scripts/pdn.tcl
-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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this needed?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
@eder-matheus
eder-matheus merged commit 5110a7c into The-OpenROAD-Project:master Oct 21, 2026
12 checks passed
@eder-matheus
eder-matheus deleted the dpl-check-fixed-placeable branch October 21, 2026 18:58
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