Skip to content

ppl: block regions overlapping pdn wires and obstructions - #11099

Draft
eder-matheus wants to merge 18 commits into
The-OpenROAD-Project:masterfrom
eder-matheus:ppl_pdn_boundary
Draft

ppl: block regions overlapping pdn wires and obstructions#11099
eder-matheus wants to merge 18 commits into
The-OpenROAD-Project:masterfrom
eder-matheus:ppl_pdn_boundary

Conversation

@eder-matheus

Copy link
Copy Markdown
Member

Summary

place_pins and place_pin ignored boundary power grid geometry, so signal IO
pins were placed on top of or abutting -extend_to_boundary straps and the
power/ground BPins pdngen creates there, causing shorts and spacing violations
found only at detailed route.

Blocking shapes are now padded by the pin footprint plus the required spacing,
applied uniformly to special net wires, via landing pads, routing obstructions
and fixed pins, including shapes within pin reach of the edge. Also fixed while
here: mirrored pins landing on blocked slots, polygon dies ignoring blocked
regions, place_pin unaware of this geometry, width dependent
(PARALLELRUNLENGTH) spacing for wide straps, and MINSPACING/EFFECTIVEWIDTH
attributes being discarded. getBlockedRegionsFromDbObstructions() was dead
code and is now wired in.

Type of Change

  • Bug fix

Impact

Slots too close to boundary PDN geometry become unavailable, so IO pin positions
change in designs with boundary PDN (slightly different HPWL). Designs without
it are unaffected — no golden file changes in pre existing tests. A constrained
region fully covered by the power grid now fails with PPL-76/PPL-82 instead of
producing violations.

Verification

  • I have verified that the local build succeeds (./etc/Build.sh).
  • I have run the relevant tests and they pass.
  • My code follows the repository's formatting guidelines.
  • I have included tests to prevent regressions.
  • I have signed my commits (DCO).

162/162 ppl tests pass, including 13 new ones. Also verified the place_pins
consumers in gpl, odb, rsz and mpl.

Related Issues

Fixes https://github.com/The-OpenROAD-Project-private/OpenROAD/issues/3655

Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>

@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 enhances the I/O Placer to respect routing obstructions and Power Delivery Network (PDN) shapes near the die boundary, ensuring proper spacing for placed pins. It introduces caching for pin sizes and layer spacing, updates Hungarian matching to avoid blocked mirrored slots, and refactors getters in Core to return const references. The review feedback focuses on improving code robustness and performance in IOPlacer.cpp, specifically by optimizing map lookups to avoid double lookups or std::out_of_range exceptions, adding null checks for tech_layer and top_grid_, and ensuring non-routing layers are handled correctly.

Comment thread src/ppl/src/IOPlacer.cpp Outdated
Comment thread src/ppl/src/IOPlacer.cpp
Comment thread src/ppl/src/IOPlacer.cpp
Comment thread src/ppl/src/IOPlacer.cpp
Comment thread src/ppl/src/IOPlacer.cpp Outdated
Comment thread src/ppl/src/IOPlacer.cpp
Comment thread src/ppl/src/IOPlacer.cpp
Comment thread src/ppl/src/IOPlacer.cpp
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant