Skip to content

pad: reorganize RDLRoute into per net to allow to better route continuity checking - #11187

Open
gadfort wants to merge 4 commits into
The-OpenROAD-Project:masterfrom
gadfort:pad-rdl-track-route
Open

pad: reorganize RDLRoute into per net to allow to better route continuity checking#11187
gadfort wants to merge 4 commits into
The-OpenROAD-Project:masterfrom
gadfort:pad-rdl-track-route

Conversation

@gadfort

@gadfort gadfort commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Summary

This moves all the routing segments into a single net object to allow to better checking of route completeness. Before is a route contained 3 or more bumps, one of the segments would be unrouted. This ensures we check the net continuity before continuing.
There is some testing noise because this removes a redundant segment and changes the order of routing slightly.

Type of Change

  • Bug fix
  • Refactoring

Impact

Complete routes on daisychained bumps

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 included tests to prevent regressions.
  • I have signed my commits (DCO).

…uety checking

Signed-off-by: Peter Gadfort <gadfort@zeroasic.com>
@gadfort
gadfort requested a review from a team as a code owner August 19, 2026 22:26
@gadfort
gadfort requested a review from maliberty August 19, 2026 22:26

@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 refactors the RDL router by splitting the RDLRoute class into RDLNet (representing a net) and RDLSegment (representing individual routing segments), updating the router, GUI, and tests accordingly. The review feedback highlights a potential crash in RDLNet::finalizeSegments() if segments_ is empty, a logical bug in RDLSegment::getUnroutedTerminals() that incorrectly reports all terminals as unrouted, and an optimization opportunity in RDLNet::isRouted() to include a fast-path check and prevent redundant recursive calls.

Comment thread src/pad/src/RDLNet.cpp Outdated
Comment thread src/pad/src/RDLSegment.cpp
Comment thread src/pad/src/RDLNet.cpp
Signed-off-by: Peter Gadfort <gadfort@zeroasic.com>
Signed-off-by: Peter Gadfort <gadfort@zeroasic.com>
Signed-off-by: Peter Gadfort <gadfort@zeroasic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant