Skip to content

Conversation

@ShiboSoftwareDev
Copy link
Contributor

@ShiboSoftwareDev ShiboSoftwareDev commented Oct 9, 2025

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.

Screenshot 2025-10-12 at 12 12 36 PM

/claim #285
/fixes #285

@vercel
Copy link

vercel bot commented Oct 9, 2025

@ShiboSoftwareDev is attempting to deploy a commit to the tscircuit Team on Vercel.

A member of the Team first needs to authorize it.

@ShiboSoftwareDev ShiboSoftwareDev marked this pull request as ready for review October 9, 2025 22:21
Copy link
Contributor

@seveibar seveibar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ShiboSoftwareDev ShiboSoftwareDev changed the title fix(pathing): Allow pathing through friendly obstacles to fix routing… Fix SingleLayerNodeMerger adjacency/vertical merge logic and tame obstacle filtering for single-layer nodes Oct 12, 2025
@seveibar
Copy link
Contributor

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

@vercel
Copy link

vercel bot commented Oct 12, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
capacity-node-autorouter Ready Ready Preview Comment Oct 12, 2025 4:33pm

@seveibar
Copy link
Contributor

Ok just checked it out, i THINK this looks ok, I would like to add a snapshot using stackGraphicsHorizontally that shows the before/after of the node merging phase

To make this, you can load e2e 3 and solveToStage("whateverispriortonodemerge"), record the visualize(), then solveToStage("nodemerge") and you should be able to do stackGraphicsHorizontally([stageBefore, stageAfter]), ideally we could snapshot this prior to this PR

anyway great work, checking out the code now

@seveibar
Copy link
Contributor

👍 code is good. Let's add the snapshot- lmk if you want a hand doing it and i can add to my queue

@seveibar seveibar merged commit 4763f31 into tscircuit:main Oct 12, 2025
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix whatever is causing e2e3 to not fully route

2 participants