Use active breakout bounds for copper pours - #3397
Open
ShiboSoftwareDev wants to merge 1 commit into
Open
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Summary
x = 10instead of the left breakout'sx = -10Why this fix is needed
Outline-less unbroken pours are converted into rectangular routing obstacles. On a board with multiple custom breakouts, those rectangles must use the group being routed now; otherwise an autorouter can treat a sibling breakout as occupied copper while treating its own actual plane area as empty. That can make a route avoid a nonexistent obstacle or enter copper belonging to another net.
The phase-local correction belongs at Core's phased-routing handoff because the base SRJ deliberately remains board-wide and the active
routingPcbGroupIdis known only while a phase is being prepared. The substitution runs for every initial custom-breakout phase, not only connection-reroute phases. It regenerates the active group's pours and replaces just obstacles markedisCopperPour; all fixed component obstacles, phase connections, and prior routed traces remain exactly as selected by the existing phase filter.This is a stacked, tested alternative to #3389. The competing PR's current placement inside
isConnectionReroutePhaseleaves ordinary custom breakout phases unfixed; the exact repro in the base PR exercises that missing path.Test plan
bun test tests/breakout/active-breakout-copper-pour-bounds.test.tsxbun test tests/utils/autorouting/simple-route-json-unbroken-copper-pour-obstacles.test.tsx tests/repros/repro-offset-board-copper-pour-bounds.test.tsx tests/subcircuits/subcircuit-exposed-nets-copper-pour01.test.tsx tests/subcircuits/subcircuit-exposed-nets-copper-pour02.test.tsx tests/breakout/custom-implicit-breakout-point-solver.test.tsx tests/breakout/active-breakout-copper-pour-bounds.test.tsxbunx biome check lib/components/primitive-components/Group/Group.ts lib/utils/autorouting/getSimpleRouteJsonFromCircuitJson.ts tests/breakout/active-breakout-copper-pour-bounds.test.tsxbunx tsc --noEmit(GitHub Actions)