Hey mention ! I'm considering writing a contribution, and wanted to run it by you before I start. I'd like to patch core so a copper pour counts as a connection before the autorouter builds its spanning tree. On a first route the fill does not exist yet, so every pad on the net s
Hey <@757706909351411845>! I'm considering writing a contribution, and wanted to run it by you before I start.
I'd like to patch core so a copper pour counts as a connection before the autorouter builds its spanning tree. On a first route the fill does not exist yet, so every pad on the net still becomes a spanning tree, and signal routes are planned around it. `unbroken` does not remove that tree. It only reserves the copper against other nets, which is the wrong switch for a normal two-layer board with ground on top and power on the bottom.
**Here's my plan:** during autorouting, run the existing pour solver on the pads, holes, keepouts, and manual copper. Group ports that actually touch the same filled island on that layer. Mark each group already connected on the net's routing connection with `externallyConnectedPointIds`, which `NetToPointPairsSolver` already uses to skip spanning-tree edges. A pad the fill does not touch, including a pad on another layer, still gets a route. Inner-plane vias stay, because those top pads do not touch the inner fill. `unbroken` stays the foreign-net reservation. This is the redundant-tree case in [#4948](https://github.com/tscircuit/tscircuit/issues/4948). It does not try to close [#5372](https://github.com/tscircuit/tscircuit/issues/5372) or [#3379](https://github.com/tscircuit/core/issues/3379).
Please confirm two things, or say which part you don't want:
1. This applies to ordinary pours, not only `unbroken`.
2. `externallyConnectedPointIds` is the right signal, despite the do-not-use comment on the core type.
One limit I would leave as a follow-up unless you want it in the same PR: if a later signal cuts a narrow pour neck, the pads we skipped can come back as unconnected-port errors. A full-board pour usually flows around a trace, so it does not hit this.
Want to add to the conversation?
Reply in Discord so your notes stay connected to the source.