Skip to content

pdn: grid: limit via-repair shape extension to ring/domain boundary#10222

Draft
dnltz wants to merge 1 commit into
The-OpenROAD-Project:masterfrom
dnltz:WIP/dnltz/fix-core-ring-extensions
Draft

pdn: grid: limit via-repair shape extension to ring/domain boundary#10222
dnltz wants to merge 1 commit into
The-OpenROAD-Project:masterfrom
dnltz:WIP/dnltz/fix-core-ring-extensions

Conversation

@dnltz

@dnltz dnltz commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

Summary

Shape::extendTo() had no awareness of the grid boundary, allowing repairVias() to extend stripes through the padframe when a via landed at the ring edge. Now the extended shape is accepted only if it stays within getRingArea() (or getDomainBoundary() for ring-less grids).

Type of Change

  • Bug fix

Impact

Should not have any impact except correct power ring/strips.

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 signed my commits (DCO).

@dnltz

dnltz commented Apr 21, 2026

Copy link
Copy Markdown
Contributor Author

Those two images show the issue. The core PDN ring or strips are extended into the padframe when there is a via stack placed:

tm1-shorts Screenshot From 2026-04-21 16-35-10

@dnltz dnltz force-pushed the WIP/dnltz/fix-core-ring-extensions branch from 3703a45 to 1888719 Compare April 21, 2026 15:01

@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 modifies src/pdn/src/grid.cpp to prevent shapes from extending beyond the grid's allowed area during via repair. It introduces an allowed_area calculation that respects either the ring boundary or the domain boundary and adds containment checks for new lower and upper shapes. I have no feedback to provide as there were no review comments.

@github-actions

Copy link
Copy Markdown
Contributor

clang-tidy review says "All clean, LGTM! 👍"

1 similar comment
@github-actions

Copy link
Copy Markdown
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@maliberty maliberty requested a review from gadfort April 21, 2026 15:11
@dnltz

dnltz commented Apr 21, 2026

Copy link
Copy Markdown
Contributor Author

I thought tests are only failing for me, because I have a VIAS mismatch. Let me convert back to draft until this is fixed. Sorry.

@dnltz dnltz marked this pull request as draft April 21, 2026 16:01
@gadfort

gadfort commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

@dnltz I think the actual issue is the obs from the padring isn't accounted for which causes the via to be accepted when it should have clearly been rejected. It's actually on my list to fix after my current tapeout because I ran into this as well, but I dont' have time to fix it properly until later.
If you want a hack that works? You can add routing blockages over the padring which PDN honors and then remove them after pdn had run.

@dnltz dnltz force-pushed the WIP/dnltz/fix-core-ring-extensions branch from 1888719 to 84e8476 Compare April 21, 2026 17:17
Shape::extendTo() had no awareness of the grid boundary, allowing
repairVias() to extend stripes through the padframe when a via landed
at the ring edge. Now the extended shape is accepted only if it stays
within getRingArea() (or getDomainBoundary() for ring-less grids).

Signed-off-by: Daniel Schultz <dnltz@aesc-silicon.de>
@dnltz dnltz force-pushed the WIP/dnltz/fix-core-ring-extensions branch from 84e8476 to 36f7ad6 Compare April 21, 2026 17:20
@github-actions

Copy link
Copy Markdown
Contributor

clang-tidy review says "All clean, LGTM! 👍"

1 similar comment
@github-actions

Copy link
Copy Markdown
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@dnltz

dnltz commented Apr 22, 2026

Copy link
Copy Markdown
Contributor Author

@dnltz I think the actual issue is the obs from the padring isn't accounted for which causes the via to be accepted when it should have clearly been rejected. It's actually on my list to fix after my current tapeout because I ran into this as well, but I dont' have time to fix it properly until later. If you want a hack that works? You can add routing blockages over the padring which PDN honors and then remove them after pdn had run.

@gadfort I found this issue during my last tape-out and finally had time to look at it. Okay, Claude provided this fix...

I don't have any urgent need for this fix. Might be better if you fix this since you have a better knowledge of the PDN sub-system.

@gadfort

gadfort commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

@dnltz maybe if you can raise an issue with a testcase I can take a look next month since it's an issue I'd like to get fixed, but it requires some changes to how obstructions are handled. It looks like this fix break a bunch of tests, which makes it unlikely that this is the correct solution.

@dnltz

dnltz commented Apr 23, 2026

Copy link
Copy Markdown
Contributor Author

@dnltz maybe if you can raise an issue with a testcase I can take a look next month since it's an issue I'd like to get fixed, but it requires some changes to how obstructions are handled. It looks like this fix break a bunch of tests, which makes it unlikely that this is the correct solution.

@gadfort Yes, I can do that and I agree. I don't think this is the correct solution either.

@maliberty

Copy link
Copy Markdown
Member

close?

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 21 days if no further activity occurs. Remove the Stale label or comment to keep it open.

@github-actions github-actions Bot added the Stale A stale PR or issue subject to automated closure. label Jun 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/S Stale A stale PR or issue subject to automated closure.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants