diff --git a/docs/elements/breakout.mdx b/docs/elements/breakout.mdx index 0a15a9a7..4d35f5f4 100644 --- a/docs/elements/breakout.mdx +++ b/docs/elements/breakout.mdx @@ -14,183 +14,181 @@ connections that leave the breakout. import CircuitPreview from "@site/src/components/CircuitPreview" -This 100-pin BGA breakout groups signals into four buses. The default fanout -autorouter sends each bus toward the side of the package where its connector is -placed, then completes the routes. +This 100-pin BGA keeps two 8-bit buses on contiguous outer columns and assigns +each bus an explicit fanout direction. Eight center-region balls connect to +GND and VCC pours on separate inner layers. + bus.signals.map((signal, index) => [ + "pin" + bus.pins[index], + signal, + ]), + ), + ...powerDrops.map((drop) => ["pin" + drop.pin, drop.name]), +]) + export default () => ( + + {buses.map((bus) => ( - [ + "pin" + (index + 1), + signal, + ]), + )} + footprint={ + + {fanoutExitYs.map((pcbY, index) => ( + + ))} + + } /> ))} {buses.map((bus) => ( - + bus.name + "_" + signal, + )} + /> ))} {buses.flatMap((bus) => bus.signals.map((signal) => ( )), )} + {powerDrops.map((drop) => ( + + ))} ) `} /> -## Auto-Generated Breakout Points +The breakout uses the fanout autorouter by default, so its fanout controls can +be set directly on ``. `busFanoutDirections` sends each named bus +toward a specific side. -When traces connect from components inside a `` to components outside -of it, tscircuit can create the needed breakout points automatically. This keeps -the breakout local to the component cluster while still letting board-level -traces connect to headers and other surrounding parts. +`fanoutRoutingLayers={["top"]}` reserves the top layer for signal escape. The +GND and VCC traces have only one component endpoint, so `fanoutPourNetMap` +drops them to `inner1` and `inner2`. Those plane layers do not need to appear in +`fanoutRoutingLayers`. -The example below routes a QFP16 controller inside a breakout to an external pin -header and nearby passives without adding any manual `` -elements. +When `fanoutPourNetMap` is omitted, tscircuit infers the plane destinations +from matching `` elements. An explicit map is useful when a net +has pours on multiple layers: - ( - - - - - - - - - - - - - - -) -`} /> +```tsx + + {/* BGA, buses, and traces */} + +``` ## Properties @@ -201,4 +199,7 @@ export default () => ( | `padding` | Uniform padding around the breakout region. | | `paddingLeft` / `paddingRight` / `paddingTop` / `paddingBottom` | Control padding for each side individually. | | `autorouter` | Autorouter used to escape components inside the breakout. Defaults to `fanout`. | +| `busFanoutDirections` | Maps named buses to preferred escape directions. | | `fanoutBoundaryPadding` | Padding between the source pads and the shared boundary where fanout traces terminate. | +| `fanoutRoutingLayers` | Copper layers available to boundary-terminated fanout buses. | +| `fanoutPourNetMap` | Maps plane layers to nets for source-only fanout escapes. Matching copper pours are inferred when omitted. |