grt/cugr: support pins above the max routing layer - #11206
Conversation
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
|
@codex review |
There was a problem hiding this comment.
Code Review
This pull request addresses issues where pins sitting above the maximum routing layer would cause CUGR global routing to abort or fail. It introduces layer clamping for pins and vias above the ceiling, ensuring that top-metal pins retain their real layers for proper via stacking while preventing out-of-bounds layer indices. Additionally, a potential null pointer dereference was identified in Design.cpp where bpin_box->getTechLayer() is called without checking if the returned pointer is null.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8dd3991d6a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Summary
global_route -use_cugraborted (SIGABRT) when a net had a pin above the maxrouting layer (bumps, top-metal ports): CUGR's layer universe stops at the
ceiling but pin shapes did not, so
selectShapeAccessPointindexedlayer_directions_out of bounds. FastRoute routes these designs, so:Design::makeNetPins: clamp pin shapes to the top routable layer (plus theROUTINGfilter the iterm loop already had).updatePinAccessPoints: keep a top-metal pin's real connection layer, soconnectTopLevelPinsstill stacks the vias above the ceiling.CUGR::buildTreeFromRoute: clamp above-ceiling vias instead of rejecting thetree, so post-DRT adoption doesn't force a reroute.
Type of Change
Impact
These designs now route with
-use_cugr, with guides matching the FastRoutebaseline. All changed paths are CUGR-only and were unreachable before (the
abort was unconditional), so nothing previously working changes.
Verification
./etc/Build.sh).Related Issues
None.