-
Notifications
You must be signed in to change notification settings - Fork 17
Fix SingleLayerNodeMerger adjacency/vertical merge logic and tame obstacle filtering for single-layer nodes #286
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@ShiboSoftwareDev is attempting to deploy a commit to the tscircuit Team on Vercel. A member of the Team first needs to authorize it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good attempt!
|
FWIW i think for autorouter PRs if your snapshot doesn't show it it's a really good idea to explain with screenshots. It's also a really good idea to make a snapshot diff prior to the PR for a particular phase so that we can see the difference, these PRs take longer to review because i have to go through that process manually with the debugger |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Ok just checked it out, i THINK this looks ok, I would like to add a snapshot using To make this, you can load e2e 3 and solveToStage("whateverispriortonodemerge"), record the visualize(), then solveToStage("nodemerge") and you should be able to do anyway great work, checking out the code now |
|
👍 code is good. Let's add the snapshot- lmk if you want a hand doing it and i can add to my queue |
Summary
• Resolves a merge bug in SingleLayerNodeMerger that created a spurious blocking node (e.g., cn2450) and could block the node above it.
• Reduces false-positive filtering of single-layer tiles under obstacles to avoid unnecessary blockers (e.g., cn2293-like
cases).
• Removes temporary debug logging added during investigation.
Root cause
• SingleLayerNodeMerger:
• The root node could appear in its own adjacency list, and absorbed nodes could leak back via _adjacentNodeIds updates.
• Vertical merge direction logic was inverted for TOP/BOTTOM, causing growth into the wrong direction.
• Targets from different connections could be merged together, incorrectly creating larger blocking regions.
• CapacityMeshNodeSolver2 (nodes under obstacles):
• Single-layer nodes were filtered whenever any obstacle overlap was detected, even for small overlaps, creating unnecessary blockers around pads.
/claim #285
/fixes #285