grt/cugr: implement resistance-aware stage and resistance costs during congestion handling#10759
Conversation
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>
… strategy Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
…e edges 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>
There was a problem hiding this comment.
Code Review
This pull request introduces resistance-aware global routing to the CUGR engine, enabling the biasing of critical nets onto lower-resistance upper metal layers to improve timing. It adds support for calculating net resistance, scoring nets based on slack, resistance, fanout, and length, and re-routing critical nets in a new stage. Additionally, a congestion gate penalty is introduced to bias vias upward when edges are full. Feedback on these changes highlights three critical issues: a logic bug in markResAwareNets that incorrectly skips short or positive-slack clock and NDR nets, a missing null check in the res_aware_order sorting comparator that could lead to segmentation faults, and a missing null check on sta_ in initCUGR that could cause crashes when STA is uninitialized.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 27cd0dc034
ℹ️ 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".
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>
…ROAD into grt_cugr_res_aware_stage
|
@codex review |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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
Adds resistance-aware global routing to the CUGR engine. With
-resistance_awareand a non-zero
-critical_nets_percentage, timing-critical nets are biased ontolower-resistance upper-metal layers to improve post-route timing.
Mechanism:
updateSlacks(clock/NDR always;short/single-pin/positive-slack excluded; rest ranked by a multi-factor
slack/resistance/fanout/length score). The set accumulates across passes.
route, re-routes the critical set on real per-net tree resistance.
-debug_level GRT resAware <1|2>.Type of Change
Impact
-resistance_awareis set with anon-zero
-critical_nets_percentage.critical_nets_percentagefor CUGR changed 0 -> 10.spurious congestion warnings on the CUGR path.
percentage is forced to 0 (matches the FastRoute path).
renumbering, and the new logs.
Verification
./etc/Build.sh).Related Issues
None.