bga_escape module#
BGA escape-port design.
Top-level circuit + design for an HDI BGA fanout experiment. Each
signal row-pair on the BGA gets a per-lane EscapeLane child Circuit
that owns the lane-local geometric features: signal-via antipad
KeepOut list, deskew OverlappableCopper pair, and the deskew-
antipad KeepOut. Every cross-lane JITX object — diff-pair Net,
signal-via and pair/insertion-control PortAttachment``s,
``PairPoint / PairInsertion / Route triple, the deskew-copper
VirtualConnection``s, and the upper-reference and deskew fence
``Pour``s — is constructed and owned
by ``BGALink, since JITX requires each Net / PortAttachment /
Pour to live on the common ancestor of every Port it touches
and the BGA Component sits at BGALink level. The diff pairs carry
the 85 ohm differential routing structure via a tag rule
(StriplineDiffPairTag) rather than an explicit >> topology, so
no far-end terminal component is needed.
The design-specific code is split by concern across this package:
design-rule tags and the antipad fence-via design_constraint rules
in constraints, the substrate specialization (BGAEscapeSubstrate
with its routing structures and launch profiles, anchoring those rules)
in substrate, and per-lane geometry constants and helpers —
including the HFSS-instrumented-lane override — in si_geometry.
This file owns the per-lane EscapeLane and top-level BGALink
circuit assembly plus the buildable bga_optimization_design entry
point.
- class EscapeLane(*, p_pad: tuple[float, float], n_pad: tuple[float, float], spec: PerSignalLayerSpec, theta_exit_deg: float, right_r_wrap: float, is_instrumented: bool = False)[source]#
Bases:
CircuitOne BGA escape lane.
Owns the lane-local geometric features: signal-via antipad
KeepOutlist, deskewOverlappableCopperpair, and the deskew-antipadKeepOut. These have no port references and live cleanly inside this child Circuit.Every other JITX object that touches a lane — the diff-pair
Net, the signal-via and pair/insertion-controlPortAttachment``s, the ``PairPoint/PairInsertion/Routetriple, and the upper-reference / deskew fencePour``s — is constructed and owned by ``BGALink. JITX’s structural rules require these objects to live on the common ancestor of everyPortthey touch (BGALinkfor objects that reference the BGA’s diff-pair Ports; the Net’s owner for Pours), and control / route elements turn out not to be valid inside a non-net-owning child Circuit either.Each lane exposes the data
BGALinkneeds (p_pad,n_pad,spec,signal_via_fence_shape,deskew_fence_pour_shape,deskew_left_exit,deskew_right_exit) — plain Python values that JITX does not walk as structural children.Built from the lane’s signal-via pad coordinates, the per-signal- layer launch
spec, and the deskew-arc parameters (caller derives these fromdeskew_knobs(lane_index)). The instrumented- lane override (mirrored L1 D-cuts plus enlarged L2/L3 circular cuts) is enabled byis_instrumented.
- class BGALink[source]#
Bases:
CircuitBGA row-pair escape wiring.
Each signal row-pair gets a per-lane
EscapeLanechild Circuit that owns its lane-local objects (antipad keepouts, deskew copper + antipad keepout, PairPoint, PairInsertion, Route).JITX’s structural rule — every
Net/PortAttachment/Pourmust live on an ancestor of everyPortit references, and aPourlives with theNetit belongs to — forces the cross-lane objects (diff-pair Nets, signal-via PortAttachments, pair/insertion-control PortAttachments, the upper-reference / deskew fence Pours, and the board-wideGNDNet) onto this Circuit, the common ancestor of the BGA Component and every lane.A tag rule applies the 85 ohm differential routing structure to every
StriplineDiffPairTagnet, so no>>topology or far- end terminal component is needed.