[PartialRouter] Preserve LUT routethru arcs when unpreserving nets - #1404
Merged
Conversation
Previously, arcs leaving the INT tile were dropped when collecting the
PIPs of a preserved net, since the router projects pins to their INT
tile and would never explore them. For a net containing a LUT routethru
this broke the prev pointer chain at the CLE, so finishRouteConnection()
could not recover the existing routing once the net was unpreserved
under softPreserve.
Keep routethru PIPs in all three PIP loops so the chain stays intact.
With lutRoutethru disabled, mark the IMUX feeding such a routethru as
INACCESSIBLE: RWRoute does not normally explore non-sink PINFEED nodes,
and this one is only present because it was on a previously-preserved
net, so no other connection may claim a pin the routethru physically
occupies. Such nodes are skipped when resetting children lists, and
RouteNode.setType() gains a LOCAL_{EAST,WEST} -> INACCESSIBLE demotion.
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
clavin-xlnx
approved these changes
Aug 24, 2026
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.
Previously, arcs leaving the INT tile were dropped when collecting the PIPs of a preserved net, since the router projects pins to their INT tile and would never explore them. For a net containing a LUT routethru this broke the prev pointer chain at the CLE, so
finishRouteConnection()could not recover the existing routing once the net was unpreserved undersoftPreserve.Keep routethru PIPs in all three PIP loops so the chain stays intact. With
lutRoutethrudisabled, mark theIMUXfeeding such a routethru asINACCESSIBLE: RWRoute does not normally explore non-sinkPINFEEDnodes, and this one is only present because it was on a previously-preserved net, so no other connection may claim a pin the routethru physically occupies. Such nodes are skipped when resetting children lists, andRouteNode.setType()gains aLOCAL_{EAST,WEST}->INACCESSIBLEdemotion.