DEV Community

Cover image for From 1,464 Unrouted Nets to Zero — But I'm Still Not Calling This Board Manufacturable
千田 智也
千田 智也

Posted on

From 1,464 Unrouted Nets to Zero — But I'm Still Not Calling This Board Manufacturable

TL;DR

Part 2 of letting an AI agent (Codex, driving KiCad through its CLI) design my Raspberry Pi CM4 Mini-ITX IO board. The board is now fully routed and adopted as the official design: ERC 0, DRC 0, unrouted nets 0, schematic↔PCB mismatches 0. Vendor-model power simulations that timed out last time now complete all 12 cases. And yet the strict all-checks pass flag is still false, and I am not releasing Gerbers — because a fault simulation leaves about −1.35 V on a power controller pin, and nobody has explained it away yet.

This is a series: Part 1 — 486 checks and the first scoreboard.

The scoreboard: Part 1 → Part 2

Check Part 1 (Oct 24) Part 2 (Oct 25)
ERC errors 0 0
DRC errors 244 0
Unrouted nets 1,464 0
Schematic↔PCB mismatches 0 0
Warnings 188 124 (94 copper slivers, 21 vias, 9 track ends)
Board placement stage, 0 tracks 170×170 mm, 8 layers, 963 footprints, 18,500 tracks + vias
Vendor-model startup sims timed out twice, undetermined 12/12 cases completed to 300 ms
Strict all-checks pass false still false (warnings + one unresolved fault case)

The formal re-verification ran on 2026-10-25 at 11:42 JST and also confirmed that none of the 52 input files changed while the checks were running — the loop checks its own homework, including whether the homework moved.

Top side of the fully routed board
Top side. The silkscreen still says "ROUTED ENGINEERING PROTOTYPE / DO NOT FABRICATE" — that text has earned its place.

Bottom side of the fully routed board
Bottom side, with the power stages and the back of the ATX connector.

What it took to finish routing

  • High-speed differential sections were reworked segment by segment: length-error cancellation across the AC-coupling capacitors, layer usage, and via depth differences were corrected. On D5, both capacitors moved to the B side and the clock termination was repositioned. The loop also verified that no existing signal's reference GND plane gained new splits.
  • Power monitor window adjusted: R119 went 150 Ω → 200 Ω and R272 9.31 kΩ → 9.42 kΩ, synced across schematic, PCB, BOM and part data. A pin type on U300.A8 was corrected to match the actual output.
  • The verification scripts themselves got fixed: a stale dependency on old power summaries and an absolute/relative path mismatch in file collation. The checker now verifies that the board, the part data and the stored analysis results actually agree with each other.

Simulations: the static picture holds, the dynamic picture advanced

Re-run on the adopted board:

  • 384 passive SPICE conditions across the 6 base power rails
  • Voltage drop including 357 shared-GND points
  • 68 control/sense paths, 16 power sections, 48 capacitor paths
  • 32,768 PG/UV analysis conditions — the tightest power-good re-engagement margin across the 4 branches is about 5.345 mV

All of that holds within the declared static conditions. And the part that was stuck last time moved: with the original ADI/Nexperia vendor models, 4 power branches × (startup, output short circuit, normal input loss) = 12 cases, all numerically completed to 300 ms, passing limited terminal-voltage and MOSFET-voltage checks against the saved waveforms.

The catch: −1.35 V that nobody has explained away

A separate internal-fault diagnosis puts a 1 mΩ short on the upstream BUCK side. On the latest board, the saved waveforms still show:

LTC4229 pin Minimum in saved waveform
IN ≈ −1.338 V
DSRC ≈ −1.353 V

The check floor is −0.3 V. Added-capacitor and snubber proposals did not fix it, so they were not adopted into the board. Two honest caveats cut in opposite directions: this is a partial model with assumed parasitics and supply response, so it does not prove the real board would be damaged — but "the model might be wrong" is not a passing grade either. Until this is resolved, the design does not get called complete, problem-free, or manufacturable, and the Gerber/drill/assembly outputs stay unreleased.

Still open after that: fault tolerance, the full power control loop, high-speed SI, thermal/EMI, simultaneous real-world I/O, and case/assembly/manufacturing checks.

Questions for you

  1. When a partial SPICE model shows a below-absolute-maximum pin voltage that layout tweaks won't move, where do you look first — the model's assumed parasitics, or the circuit?
  2. Would you fabricate a board whose own verification suite refuses to say "pass"?

Series: Part 1 covered the spec (DisplayPort + HDMI, 2× USB-A, 2× USB-C, a PCIe switch feeding 2 slots + 2 M.2, ATX 24-pin power) and the first 486 power-analysis conditions. The Japanese edition of Part 1 is on Qiita. Part 2 in Japanese is on Qiita too.

Top comments (0)