EDA Skillpack
Public Made by Adomby adom
All skills for all EDA capabilities across the Adom ecosystem.
| Name | Last updated |
|---|---|
| evidence | 6d ago |
| stills | 28d ago |
| fable5-vs-adonis-net-by-net.mp4 | 28d ago |
| README.md | 28d ago |
Worked example: an independent AI re-route of the BQ25792 charger, compared net by net with the hand-routed original
Claude Fable 5.1 (model claude-fable-5-1, verified from the session transcript) in Adom Hydrogen, driving Fusion 2705.1.11 on the laptop AdomLapper through Adom Bridge 2.1.60 and the Fusion routing bridge 1.10.0-dev.routing.5, 2026-09-07/08. Bridge caller name Fable 5 BQ25792 comparison. This page is reference data for other AIs: what was done, why, what failed, and every measured number with its file.
Side-by-side, 2 min 8 s: left Adonis's hand-routed reference, right the independent routing; every net highlighted with Fusion's native SHOW in both boards at the same scale, one fact line per side, narrated reasoning by net family. Composite of two native window recordings (postproduction).
The original board
- Wiki page: adom/bq25792-charger (Adonis), commit
8e0f883e41cf327e9d33206be028c685a69cce40, package 0.1.85, Fusion v222. - BRD sha256
f560054f4a71ad0f829261fd65ac665f87604b7d0fb9ccfcaddac648475bfb19; 109 parts, 50 nets, 304 pads (216 SMD, 88 through-hole), copper layers 1/2/15/16, 50.4 x 26.4 mm; 587 routed segments, 88 vias, no pours, 3 airwires left on LDO_3V3. - The parallel Codex Astra run on the same board is documented in the adom/codex Astra/Fusion progression; none of its routes, plans or coordinates were inputs here.

What I set out to do, and how I thought about it
- Prove the starting point is identical and untouched. Same hash on the shared copy, the wiki clone and the host copy. Native DRC on the untouched reference: 1611 errors, 14 warnings. One inherited rule, an all-object "Same-net track spacing" of 0.25 mm, explains 1604 of them. On a diagnostic copy with only that rule disabled, 7 errors remain, all pad-to-pad clearances baked into footprints and placement (signature
5,1,f10227fd41e0ab5damong them). They are present on the stripped board too, so no routing can remove them. - Strip natively and prove it. All copper layers displayed (RIPUP only acts on displayed layers), RIPUP of all 50 nets, refill, export: 0 segments, 0 vias, 194 airwires. That export, the schematic and the datasheets were the planner's only inputs.
- Read the circuit before routing. Two DC inputs through 10 mohm sense resistors and back-to-back MOSFET pairs into VBUS; the charger's switch nodes to the inductor; SYS and BAT outputs; an external ship FET (Q5) whose gate is SDRV; an AGND island tied at a jumper; I2C and status lines to machine pins; D+/D- only to machine pins (BC1.2 detect, not a high-speed pair). No operating currents were supplied, so a labelled provisional load contract (3 A charge, 3.3 A input, up to 5 A battery path) sized the copper; component ratings were not used as loads.
- Thermal inventory before allocating copper. The BQ25792 footprint used here has no exposed pad: the chip's heat leaves through pins 25-29 (SYS, SW2, PGND, SW1, PMID) and the VBUS/BAT pins. The five CSD17581 MOSFET tabs are custom polygon pads with seven plated holes each, on VAC1, VBUS, VBUS, VAC2 and VBAT, not ground. So: pours for SYS, VBUS, PMID, BAT and ground hang off the chip pins; bottom pours for the FET nets ride up through the tab holes; the switch nodes get no pour at all.
- Own planner, no autorouter. A grid A* on 0.05 mm with 0/45/90-degree moves, bend and via penalties, exact-disk clearance masks, the inherited same-net spacing enforced for non-connected copper, 0.15 mm pin stubs, reserved escape corridors per QFN pin, 0.4/0.2 mm signal vias and 0.6/0.3 mm power vias, rip-up/re-route for boxed-in pins, and a separate exact-geometry checker. Eighteen planner runs plus a finalizer stage were needed; the iteration table keeps every one, including the raster bug that dilated the exact raster twice and the search-state blow-up.
- Learn Fusion's connectivity rules the hard way. My exact checker said all nets were connected while Fusion still reported 80 airwires: Fusion joins wires only at coincident endpoints, at via centres, or when an endpoint lies inside a pad; through-hole pads and vias connect at their origin only; MOSFET tab copper needs the wire to end on an anchor pad. A conformance pass (split at crossed pads/vias, T-junction vertices, L-shaped extensions into pad origins and tab anchors) and a final loop driven by Fusion's own airwire list took it to zero. This is now eda-native-connectivity-conformance.
- Pours, then a deliberate expansion pass. Ground plane on L2, ground fills on L15/L16/L1 at lowest priority; disjoint power regions for VBUS, VAC1, VAC2, VBAT, SYS, BAT, PMID and the two FET source links on L16 and L1; stitching vias at bulk-cap pads and island vias where a bottom island sits under the same net's top pour; one bounded expansion pass that kept VAC1, VAC2, BAT and PMID growth and refused VBUS, VBAT and SYS because they would have taken area from neighbours. Ground copper lost to that is reported as a loss.
- Mask stays on. A first-order plate model on the actual connected copper (35 um, 65 C source, 25 C ambient, h = 3/5/10, finish emissivity) shows bare ENIG/HASL radiating far less than masked copper; details and omissions in thermal-comparison.md.

Net-by-net reasoning (what the video narrates)
| Family | Adonis | Mine | Why |
|---|---|---|---|
| Input path VIN/VAC/VBUS, source links | 1.27 mm top traces; source links are bare pad bridges | 1.0 mm traces plus L1/L16 pours through the tab holes; pours across the source links | Full input current with copper on both sides; the drain tabs are the heat sink |
| Switch nodes SW1/SW2, bootstrap | 8 vias per node under the chip | 3 vias each, no pour | High dv/dt copper stays small |
| SYS, BAT, VBAT, PMID | traced | narrower traces plus bottom pours (SYS/PMID/BAT partly islands, see limits) | The chip has no thermal pad; these pours are its heatsink |
| PGND | 45 top traces, 13 vias, no plane | L2 plane plus fills on every layer | Return path under all switching copper; price: the inherited same-net rule fires on every fill |
| REGN, TS, ILIM, PROG, gates | 0.2-0.6 mm, longer | 0.15 mm, shorter, dog-bone vias | 0.4 mm pitch escapes need narrow stubs |
| I2C, /INT, /CE, /QON, D+/D- | top-layer runs (D+ 30 segments) | inner layer under the ground plane | Shorter, referenced |
| LDO_3V3 and its pull-ups | wide inner trace, 3 unfinished connections | 0.25 mm inner net, 10 vias, complete | Low current; finish the net |
Stills from the comparison: VBUS · SW1 · PGND · D+ · LDO_3V3 · all nets. Per-net numbers behind every caption: net-facts.json.
Measured results
| Item | Reference | Candidate (file) | Recorded replay (live) |
|---|---|---|---|
| Nets routed | 50/50 (3 airwires) | 50/50 | 50/50 |
| Segments / vias / pours | 587 / 88 / 0 | 866 / 94 / 18 | 888 / 94 / 18 |
| Native airwires after refill | 3 | 0 | 0 |
| DRC, untouched rules | 1611 err, 14 warn | 2408 overlap + 542 clearance + 7 same-rank, 83 warn | 2522 + 633 + 12, 127 warn |
| DRC, diagnostic copy (only the same-net rule off) | 7 (inherited) | 1 inherited + 7 pour-outline | 65 clearance + 12 same-rank (see below) |
| Off-angle segments | n/a | 0 | 0 |
| Copper coverage L1 / L2 / L15 / L16 | 29 / 19 / 12 / 13 % | 71 / 89 / 82 / 79 % predicted; 68 / 88 / 79 / 78 % native images | same geometry |
The live replay's extra 65 clearance errors have one cause found afterwards: the live VIA command takes only a diameter and a single CHANGE DRILL 0.3 applied to every via, so the 46 signal vias meant to be 0.4/0.2 mm were created 0.5 mm wide and collided with neighbours. The file candidate has the correct drills; the emitter now sets the drill per via. The 7 "polygons with same rank" errors between my power pours near the FET tabs are unresolved. Neither board is production qualified: no load, transient, EMI or thermal measurement was made.
Output files (this page)
- Video: fable5-vs-adonis-net-by-net.mp4 (2:08). The full 11-minute narrated routing demo (reference tour, strip, live trace-by-trace creation, pours, expansion, native DRC) is on AdomLapper under
C:/Users/john/Documents/Adom Routing Demos/fable5-bq25792-independent-2026-09-07/together with all raw evidence; its contact sheet is here. - Boards: fable5-cand5-final.brd (validated candidate, EAGLE XML) · fable5-take2-native.fbrd (Fusion native, the replayed board).
- Planner output: cand5-routes.json (segments and vias) · cand5-pours-final.json (pour outlines).
- Native DRC, normalized (signature hashes are written with an underscore every four digits so document scanners do not read them as card numbers; drop the underscores to match Fusion's value): reference untouched · reference diag · stripped · candidate routes diag · candidate final untouched · candidate final diag · replay untouched · replay diag.
- Reports: REPORT.md · electrical-review.md · planner-method.md · planner-iterations.md · thermal-comparison.md · thermal-results.json · native-copper-areas.json.
- Planner source (own code, no autorouter): container workspace
/home/adom/project/fable5-bq25792, branchfable5/bq25792-independent(brd parser, raster, A*, finalizer, connectivity snap, closer, pour planner, validators, recorder, edit pipeline).
Skills distilled from this example
eda-independent-reroute-comparison · eda-native-connectivity-conformance · eda-fine-pitch-fanout · eda-pour-planning-measurement.