Board Split Decision — Fix List + A/B Interface Contract
Locked decisions from the wave-2 decision pass (#90) - the front-end fix list for the existing KiCad project / Board A, the Board A to Board B interface contract with current-rating math, and the doc-structure assumption.
This page is the single source of truth for the three decision sets locked by the board-split decision task (epic #86, sub-issue #90). It consumes the three wave-1 analysis artifacts:
v4 USB-PD Failure Diagnosis (#87) — ranked root causes + bench discrimination procedure
v4 As-Built Order Verification & Footprint Geometry Audit (#88) — as-built and footprint verdicts
Board B Architecture Review (#89) — DC-DC/LDO/protection review with 3 blockers
Note
Everything marked LOCKED below is the implementable spec for the wave-3 tasks (#91 Board A doc, #92 Board B doc, #93 KiCad fixes). Items markedbench-confirm-first are gated on the bench procedure inv4 USB-PD Failure Diagnosis and must NOT be implemented before their stated gate passes.
Decision set (a) — front-end fix list
A1. CCDB topology — LOCKED: restore CC1DB↔CC1 / CC2DB↔CC2, external Rd to DNP
Decision. Return to the ST reference wiring for a VBUS-only sink:
CC1DB(U1 pin 1) joined to the CC1 line, andCC2DB(U1 pin 5) joined to the CC2 line, each through a 0 Ω link — implemented by repurposing the existing R19/R20 (0 Ω, LCSC C21189): their GND-side ends move fromGNDto the CC1/CC2 nets. The 0 Ω links double as fallback jumpers: removing them isolates the DB pins again for rework.R17/R18 (external 5.1 kΩ Rd, LCSC C23186) become DNP (footprints stay as rework insurance; excluded from BOM/CPL so JLCPCB never populates them).
Justification. Per the #87 diagnosis: DS12499 Rev 4 §7.3 Table 22 gives the
STUSB4500 a non-disableable internal Rd of 5.1 kΩ ±10% whenever it is powered, so the
v2→v4 topology (external 5.1 kΩ Rd + grounded DB pins) presents 2.55 kΩ effective the
moment U1 boots — below the USB Type-C sink window (5.1 kΩ ±20%), landing the
source-seen CC voltage inside or below the Ra/Rd undefined band (0.84 V at 3 A Rp).
DS12499 §3.5 states dead-battery mode "is also used in systems that are powered through
the VBUS only" — i.e. CCxDB↔CCx with no external Rd is ST's intended topology for
exactly this board (also used by the SparkFun breakout and STEVAL-ISC005V1). The v2
"CC1DB chip-internal short" evidence that motivated the external-Rd redesign was
re-examined in #87 and found inconclusive, while the redesign itself is a provable spec
violation on every powered attach.
Fallback insurance. If bench test C2/C3 ever rehabilitates the bad-CCDB theory for a specific chip batch: remove R19/R20 (isolates the DB pins), fit R17/R18, and bodge the DB-side R19/R20 pads to GND — restoring the v4 topology without a board respin.
A2. VBUS ESD/TVS strategy — LOCKED: remove D4; SMAJ20A on VBUS; CC ESD provision DNP
Decision on D4 (USBLC6-2SC6, LCSC C7519): remove entirely (not relocate, not keep). Its two roles are re-covered separately:
VBUS clamp → SMAJ20A (SMA/DO-214AC, unidirectional): new part on
VBUS_INto GND, cathode onVBUS_IN. Primary pick: LCSC C571370 ("High Diode" brand — the same family and SMA footprint as the project's existing SMAJ15A / C571368 used for TVS1/TVS3, so the library symbol/footprint pattern is cloned, not invented). Alternate if C571370 is out of stock at order time: STMicroelectronics SMAJ20A-TR, LCSC C1973455. Stock was confirmed listed at LCSC on 2026-07-05; re-verify stock at order time.Ratings: VRWM 20 V, VBR 22.2–24.5 V, clamping ≤32.4 V (10/1000 µs).
Why a 20 V standoff: the rail is 15 V by contract, so a 15 V-standoff part would sit at 0% margin (the exact mistake #89 flagged for TVS2/SD05 on the +5 V rail); 20 V standoff gives 33% margin at 15 V and stays non-conducting through the 20 V mis-contract edge case #89 guards against, while the ≤32.4 V clamp stays inside the LM2596S abs-max (40 V).
Residual (accepted): a hard surge clamp can momentarily exceed Q1/AO3401A's −30 V VDS rating; this is transient-only, far better than v4's 6 V zener on the 15 V rail, and Board A's layout phase may upgrade to an SMBJ20A if desired.
CC-line ESD → U1's integrated protection, plus a DNP provision. DS12499 rates the STUSB4500's CC pins for 22 V short-to-VBUS with integrated ESD structures — ST's own reference designs put nothing between the receptacle CC pins and the chip. The fitted Board A build therefore has no external CC ESD part (minimum parts between connector and chip, which is also what kills root-cause candidate 3 permanently — see A4). The Board A layout provisions two DNP footprints, one per CC line to GND: Nexperia PESD24VS1UB (SOD-523, unidirectional, VRWM 24 V, low capacitance), LCSC C85382 (stock confirmed listed 2026-07-05; re-verify at order time). VRWM 24 V is chosen deliberately above U1's 22 V CC fault rating so a fitted part never becomes the weakest link during a CC-short-to-VBUS fault; a 5 V-class USB ESD array on a PD CC line would repeat the D4 mistake. Fit them only for enclosed/production builds.
Why removal beats relocation. Keeping USBLC6-2 anywhere on this board is wrong by datasheet: its VBUS pin is a 6 V (min) zener, and its only remaining value — CC ESD — is already integrated in U1 at a higher fault rating (22 V vs the USBLC6's 5 V-class lines). Removal also converts the CC path from "two-pin nets joined inside a package" (candidate 3's silent-failure class) into plain copper.
A3. Pin-18 network — LOCKED: keep VBUS_IN → R14 (470 Ω) → pin 18 unchanged
DS12499 Rev 4 Table 1 specifies pin 18 (VBUS_VS_DISCH) as "From VBUS, receptacle side", and Table 22 (IDISUSB) specifies discharge "through external resistor connected to VBUS_VS_DISCH pin" at 50 mA max. With R14 = 470 Ω: 15 V / 470 Ω ≈ 32 mA, and even the 20 V edge case gives 20 V / 470 Ω ≈ 43 mA — both inside the 50 mA rating. #87 re-confirmed the network as-wired against the netlist, and #88 confirmed it reached the manufactured-package stage. No divider variant: pin 18 is simultaneously the receptacle-side discharge path and the VBUS presence sense; a divider would mis-scale the sense point and break the discharge function ST specifies through a single series resistor. Keep exactly as-is.
A4. Per-candidate disposition: fix-now vs bench-confirm-first
"Fix-now" = design-provable from datasheets, goes into the #93 KiCad edit regardless of which candidate actually killed v4. "Bench-confirm-first" = no design change until the stated gate from the #87 bench procedure resolves.
| # | v4 root-cause candidate | Disposition | Design change | Gate |
|---|---|---|---|---|
| 1 | External Rd ∥ internal Rd (2.55 kΩ, out of spec) | Fix-now | A1: CCxDB↔CCx via R19/R20 links, R17/R18 DNP | None needed to justify the change (DS12499-provable). Bench C2 additionally validates it as the operative v4 blocker — recommended on a dead v4 board before the first Board A order, but not blocking |
| 2 | D4 VBUS pin (6 V zener) on the 15 V rail | Fix-now | A2: delete D4, add SMAJ20A | None (abs-max violation is provable). Bench A2 is forensic only: a shorted D4 on a dead board is evidence a 15 V contract once completed |
| 3 | CC continuity via D4's internal flow-through | Fix-now by construction | Eliminated as a class by D4 removal (CC becomes one copper net per line) | Bench A1 remains for diagnosing the existing dead v4 boards only |
| 4 | NVM content on the failed boards | Bench-confirm-first | None | Gate: bench B2 — full NVM read-back diff vs target (SNK_PDO_NUMB = 2, PDO2 = 15 V/3 A, monitor coefficients default) on a dead board. Only a confirmed diff triggers action (rewrite + retest), and it is a programming action, not a schematic change |
A5. #89's three Board-B blockers — explicit calls
| # | Blocker | Call | Detail |
|---|---|---|---|
| 1 | L7812 dropout margin (13.5 V → 12 V @ 1.2 A; 1.5 V available vs 2.0 V typ at only 1 A) | Defer to the Board B design plan, bench-gated | Not a simple provable one-wire fix: the correction is either raising the +13.5 V intermediate rail (e.g. R1 10 kΩ → 11 kΩ gives 14.76 V, but LDO dissipation rises from ~1.8 W to ~3.3 W — a thermal/layout tradeoff) or a low-dropout regulator swap. Gate: bench-measure a real L7812 (a dead v4 board's U6, or a bare part) at 1.2 A from a 13.5 V source; lock the numeric setpoint (preferred direction: raise the rail) during Board B layout with its thermal budget on the table |
| 2 | U8 −12 V decoupling network missing its GND node (Net-(C16-Pad2) floating) | Fix-now-in-KiCad (#93) | A genuinely missing GND tie, netlist-provable: the mirrored +12 V/+5 V networks connect the same-position cap plates individually to GND. Fix: merge Net-(C16-Pad2) into GND (C16.2, C24.1, C19.2, C25.1 all to GND). Also removes the C25 sustained-reverse-bias risk |
| 3 | C9 (100 µF 25 V) bridging +15 V to −13.5 V = 28.5 V nominal, 33.5 V @ 20 V edge | Fix-now-in-KiCad (#93) | Rating math is provable from the LCSC datasheet; topology is correct, only the rating is wrong. Replace with a 50 V part: DMBJ RVT1H101M0810 (100 µF 50 V, D8×L10.2 mm SMD), LCSC C970687 (listed in stock 2026-07-05; re-verify at order time; alternate: Semtech CK1H101M-CRF10, LCSC C129420). Note: the physical can grows from 6.3×7.7 mm to 8×10.2 mm — the schematic footprint field changes now, and the resulting sch↔pcb mismatch on the existing single-board layout is accepted (layout rework is a later plan; Board B gets a fresh layout anyway) |
Two #89 leads (not blockers) also get dispositions for the record:
TVS2 (SD05, VRWM 5 V) at 0% standoff on the +5 V rail — defer to the Board B design phase; direction: replace with a ≥6 V-standoff part so the L7805's legal 4.8–5.2 V output never sits at/above the TVS standoff. Not in #93.
C4/C22/C23 Value field says "16V" but C335982 is a 10 V part — fix-now in #93 as a Value-field-only correction (
470uF 16V→470uF 10V). Netlist-neutral, prevents a future reviewer trusting the wrong label. (10 V remains electrically safe on the 7.5 V/5 V nets per #89.)
A6. Exact #93 KiCad change list (the locked spec)
All edits in usb-pd-input.kicad_sch unless noted. No zudo-pd.kicad_pcb edits.
| # | Action | Refs | Net effect (expected netlist diff) |
|---|---|---|---|
| 1 | Delete D4 (USBLC6-2SC6, C7519) | D4 | Net-(J1-CC1) + Net-(U1-CC1) merge into one CC1 net: J1.A5 U1.2 R17.1 (+R19.2, D5 per below). Same for CC2: J1.B5 U1.4 R18.1 (+R20.2). D4.2 leaves GND, D4.5 leaves VBUS_IN |
| 2 | Set R17, R18 DNP + exclude-from-BOM/CPL | R17 R18 | No net change (pins stay on CC1/CC2 and GND) |
| 3 | Rewire R19: pin 2 from GND to the CC1 net | R19 | CC1DB unchanged (U1.1 R19.1 J3.1); R19.2 appears on CC1; R19.2 leaves GND. Keep 0 Ω / C21189, fitted |
| 4 | Rewire R20: pin 2 from GND to the CC2 net | R20 | CC2DB unchanged (U1.5 R20.1 J3.2); R20.2 appears on CC2; R20.2 leaves GND |
| 5 | Add D5 = SMAJ20A (C571370; alt C1973455), SMA | D5 (new) | D5 cathode on VBUS_IN, anode on GND. Clone the zudo-pd:SMAJ15A_C571368 symbol+footprint pattern (as used by TVS1/TVS3) into an SMAJ20A_C571370 entry in symbols/; verify pin→cathode mapping against the cloned symbol |
| 6 | Merge Net-(C16-Pad2) into GND (linear-regulation.kicad_sch) | C16 C19 C24 C25 | C16.2, C24.1, C19.2, C25.1 all become GND members; Net-(C16-Pad2) disappears |
| 7 | C9 part swap: RVT1E101M0607/C22383804 → RVT1H101M0810/C970687 (100 µF 50 V), update Value/LCSC/Datasheet/footprint fields (dc-dc-conversion.kicad_sch) | C9 | No net change |
| 8 | Value-field fix: 470uF 16V → 470uF 10V | C4 C22 C23 | No net change |
Explicitly NOT in #93: L7812 dropout rework (A5#1, bench-gated); TVS2 swap (Board B phase); PESD24VS1UB DNP footprints D6/D7 (Board A layout phase — adding never-fitted symbols to the legacy schematic is geometry risk with no payoff); any PCB edit.
Warning
Do not "fix" more than this list. In particular, do not touch the pin-18 network (A3), the Q1 gate network, or the U4 inverting-topology referencing — all were re-confirmed correct by #87/#89.
Decision set (b) — Board A ↔ Board B interface contract
Connector — LOCKED: JST XH, 6 pins, one per board
Board-side part (both boards): JST B6B-XH-A(LF)(SN), 6-pin top-entry shrouded through-hole header, 2.5 mm pitch — LCSC C144397 (genuine JST; ~42k stock listed at LCSC on 2026-07-05; re-verify at order time). Rated 3 A AC/DC per contact with AWG #22, 250 V.
Cable: commodity pre-crimped 6-way XH↔XH lead, AWG 22, 80–150 mm; or build from JST XHP-6 housings + SXH-001T-P0.6 contacts (verify stock at order time — cable-side parts are not on the PCBA BOM).
Why XH: polarized/shrouded housing (foolproof insertion), the de-facto synth-DIY standard, genuine-JST parts in JLCPCB's library, through-hole anchoring for a power connector, and cheap on both boards.
Pinout — LOCKED
| Pin | Signal | Direction | Notes |
|---|---|---|---|
| 1 | +15V | A → B | Board A VBUS_OUT (post Q1 load switch), PD-contract 15 V |
| 2 | +15V | A → B | Paired with pin 1 (current sharing) |
| 3 | ATT | A → B, open-drain, active-low | STUSB4500 pin 11 (ATTACH). No pull-up on Board A; Board B (or any host) pulls up 10–100 kΩ to a local rail ≤5 V if used. May be left unconnected |
| 4 | PDOK | A → B, open-drain, active-low | STUSB4500 pin 20 (POWER_OK2): asserts when the PDO2 (15 V) contract is live. Same pull-up rule as ATT. May be left unconnected |
| 5 | GND | — | Paired return |
| 6 | GND | — | Paired return |
Nothing synth-specific is on the connector: 15 V power, ground, and two generic open-drain status lines — Board A stays reusable as a plain "USB-PD 15 V sink module" in any other project (a consumer that ignores pins 3–4 just gets switched 15 V).
Current-rating math (3 A+ continuous)
Load basis — worst case is the PD contract cap of 3.0 A at 15 V, not the computed draw:
Rated output budget: 12 V×1.2 A + 12 V×0.8 A + 5 V×0.5 A = 26.5 W.
Estimated input at rated load: buck ≈85%, inverting ≈80% efficiency, LDO stage scales by Vout/Vin → per-rail input ≈ 19.1 W + 4.4 W + 13.5 W ≈ 37 W → 37 W / 15 V ≈ 2.5 A steady. The contract cap (3.0 A) is the design number.
| Quantity | Value |
|---|---|
| XH contact nameplate rating | 3.0 A per contact (JST, AWG #22) |
| Continuous derating applied (80%) | 2.4 A per contact |
| +15V contacts | 2 → 4.8 A derated (6.0 A nameplate) capacity |
| Worst-case continuous load | 3.0 A (PD contract cap; ≈2.5 A computed steady draw) |
| Per-contact current at 3.0 A | 1.5 A = 50% of nameplate, 62.5% of derated |
| Margin | 4.8 / 3.0 = 1.6× derated; 6.0 / 3.0 = 2.0× nameplate |
GND uses the identical 2-contact math (symmetric return). 1.6× derated margin satisfies the project's 150%+ safety-margin convention. Cable drop is negligible: two paralleled AWG 22 conductors per leg at 100 mm ≈ 2.7 mΩ/leg → ≈16 mV round trip at 3 A.
Keying / foolproofing — LOCKED
The XH shrouded housing is mechanically polarized — reversed insertion is blocked.
Uniqueness rule: the 6-pin XH is the ONLY 6-position XH on either board, so the A↔B cable cannot land on a wrong header. (Board B's Eurorack outputs are 2×8 shrouded IDC; Faston tabs are physically incompatible.)
Pin 1 is marked on silkscreen on both boards.
The pinout is deliberately non-symmetric under pin reversal (+15V on 1–2, GND on 5–6) only behind the housing key; the key is the protection, the silkscreen is the audit.
Mechanical combination — LOCKED: side-by-side, cable-linked
Side-by-side placement joined by the 6-way XH cable; stacking is rejected because: the USB-C receptacle must reach the enclosure wall on its own edge; Board A's J2 pogo pads must stay face-accessible for the NVM programming rig; Board B's three TO-263 regulators need top-side copper and airflow that a stacked board would blanket; and a stack fixes the relative orientation, hurting Board A reuse.
Mounting: each board carries its own 4× M3 (3.2 mm) corner holes and mounts independently. Board A's hole pattern is chosen at layout time for Board A alone (no shared-pattern coupling to Board B). An optional shared 3D-printed tray can come later in
3dp-files/— explicitly out of scope for this plan.
Decision set (c) — doc structure note
Assumption stated for reconciliation: the Board A / Board B pages go under
overview/ as flat pages, matching the wave-3 issue defaults —
overview/, overview/, plus the
housekeeping task's overview/. No dedicated boards/ section is
created by this decision. If the housekeeping task (#94) instead creates a section, its
PR description records that choice and the wave-4 confirm pass (#95) reconciles the
paths (this page's links, the issue bodies, and the interface-table cross-references).
References
v4 USB-PD Failure Diagnosis — candidates, DS12499 citations, bench procedure (gates referenced above)
v4 As-Built Order Verification & Footprint Geometry Audit — footprint verdicts; v0.4.0 order-status caveat
Board B Architecture Review — the three blockers dispositioned in A5
PCBA v2 Debug Report — origin of the external-Rd topology reversed by A1
NVM Programming Setup — read-back procedure behind the candidate-4 gate
STUSB4500 pinout guide — ATT (pin 11) / POWER_OK2 (pin 20) roles used in the interface contract
ST DS12499 Rev 4 (STUSB4500), ST USBLC6-2 datasheet, JST XH series datasheet, SMAJ series TVS datasheet — part-level claims above