fix(grt): generate via for co-located pins on different routing layers#10028
Closed
alokkumardalei-wq wants to merge 2 commits intoThe-OpenROAD-Project:masterfrom
Closed
Conversation
Signed-off-by: alokkumardalei-wq <alokkumardalei2@gmail.com>
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
Signed-off-by: alokkumardalei-wq <alokkumardalei2@gmail.com>
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
eder-matheus
reviewed
Apr 1, 2026
| && treenodes[treeedge.n2].lID == BIG_INT)) { | ||
| && treenodes[treeedge.n2].lID == BIG_INT) | ||
| || (treeedge.len == 0 && treeedge.n1 < num_terminals | ||
| && treeedge.n2 < num_terminals)) { |
Member
There was a problem hiding this comment.
We did try a similar approach, but it wasn't enough. Unfortunately we don't have a public test case to test it, so we can't validate if your change works. But I'll leave your PR open, and once I have a test case, I'll try it with your branch.
Member
|
@alokkumardalei-wq I've tried your PR, but it didn't fixed the issue. Here's the full fix for the issue: #10044. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #9919
In FastRouteCore::fillVIA(), the condition for generating a via on a zero-length Steiner tree edge (len == 0) only triggered when at least one endpoint had no other connections (hID == BIG_INT && lID == BIG_INT). For multi-pin nets where both co-located pins also connect to the rest of the tree via non-zero edges, layerAssignmentV4() sets their hID to actual edge IDs, causing the via generation to be silently skipped. The fix changes the condition to treeedge.len == 0, which correctly handles all zero-length edges.
Type of Change
Impact
When two pins in a net occupy the same global routing cell (gcell) but on different routing layers, GRT now correctly generates an inter-layer via between them. Previously, the missing via caused a disconnected route topology that manifested as RSZ-0074: failed to build load tree from global routes: found route to N pins, expected M.