---
title: Board Split Decision — Fix List + A/B Interface Contract
sidebar_position: 15
description: 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](./v4-pd-failure-diagnosis.md) (#87) — ranked root
causes + bench discrimination procedure
- [v4 As-Built Order Verification & Footprint Geometry Audit](./v4-asbuilt-audit.md) (#88)
— as-built and footprint verdicts
- [Board B Architecture Review](./board-b-architecture-review.md) (#89) — DC-DC/LDO/protection
review with 3 blockers
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 marked
**bench-confirm-first** are gated on the bench procedure in
[v4 USB-PD Failure Diagnosis](./v4-pd-failure-diagnosis.md) 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, and `CC2DB` (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 from `GND` to 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:
1. **VBUS clamp → SMAJ20A** (SMA/DO-214AC, unidirectional): new part on `VBUS_IN` to
GND, cathode on `VBUS_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.
2. **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](./v4-pd-failure-diagnosis.md#bench-discrimination-procedure-dead-v4-boards-cheapest-first)
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/zudo-pd.kicad_sym`; 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.
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/board-a-usb-pd-core.md`, `overview/board-b-synth-power.md`, plus the
housekeeping task's `overview/two-board-plan.md`. 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](./v4-pd-failure-diagnosis.md) — candidates, DS12499
citations, bench procedure (gates referenced above)
- [v4 As-Built Order Verification & Footprint Geometry Audit](./v4-asbuilt-audit.md) —
footprint verdicts; v0.4.0 order-status caveat
- [Board B Architecture Review](./board-b-architecture-review.md) — the three blockers
dispositioned in A5
- [PCBA v2 Debug Report](./pcba-v2-debug.md) — origin of the external-Rd topology
reversed by A1
- [NVM Programming Setup](./nvm-programming.md) — read-back procedure behind the
candidate-4 gate
- [STUSB4500 pinout guide](./stusb4500-pinout.md) — 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