GRT: improved NDR resources management during Fast Route incremental routing#10455
GRT: improved NDR resources management during Fast Route incremental routing#10455openroad-ci wants to merge 16 commits into
Conversation
…match between 2D vs 3D at the end of the FastRoute run. Skip clock nets when rerouting nets involved in congestion Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
…ted to NDR nets Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
…ROAD into grt-incr-congestion-fix
Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
…ROAD into grt-incr-congestion-fix
Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
There was a problem hiding this comment.
Code Review
This pull request enhances the global router's ability to handle Non-Default Rule (NDR) nets during antenna repair, specifically when starting from ODB guides where Steiner trees are not yet initialized. It introduces logic to demote NDR nets to soft NDR (unit edge cost) if they pass through congested 2D edges, ensuring resource usage is correctly tracked in both 2D and 3D stages. Feedback focuses on improving the robustness of grid index calculations and segment traversal to prevent potential out-of-bounds accesses and to correctly ignore via transitions during congestion checks.
|
clang-tidy review says "All clean, LGTM! 👍" |
|
Please explain how "Nets with NDR can have different edge costs depending on the metal layer (3D)." |
I'm not sure how common it is, but the We can also define different width/spacing ratios per layer. So we can have some metal layers with 2x the cost, while other layers with 3x, for example. |
Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
|
@maliberty @eder-matheus I just found a bug in CTS when processing the spacing value to calculate NDR spacing. We are picking the wrong value for some layers on sky130... Other public and private PDKs were not affected. |
|
I think such NDRs are uncommon but at least I understand the issue. Usually people just say something like double-spacing for all layers. This is a case where doing it in 3d would win as you could cost each 3d edge differently. |
Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
…ROAD into grt-incr-congestion-fix
Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
…ROAD into grt-incr-congestion-fix
|
Merge? |
Not yet. Jonas is checking CI one last time before merging it. |
Summary
Nets with NDR can have different edge costs depending on the metal layer (3D). In this example for the sky130hd/hs PDK, the 2D edge cost is always 2 but the 3D edge cost varies from 1 to 2 for NDR nets.
The MazeRoute3D can create routes that are only possible during the 3D stage.
During incremental routing, the initial 2D state is already congested due to the NDR higher edge cost.
If FastRoute can't solve congestion, it triggers a 2D congestion error (even if 3D finds a solution).
Main Features
1. Soft NDR on 2D-3D congestion mismatch
updateDirtyRoutes2. NDR soft-disable when repair_antennas starts uninitialized
When repair_antennas starts from a state where GRT was never run (guides loaded directly from ODB):
disableCongestedNDRNetsFromRoutes/disableNDRNetsFromGridRoutesfunctions3. Regression test loading guides from ODB for repair_antennas
Type of Change
Impact
Don't throw errors on false routing congestion (check for 3D route congestion).
Apply soft NDR to solve congestion during incremental routing.
Verification
./etc/Build.sh).Related Issues
Underflow error after antenna repair