zudo-pd
GitHub repository

Type to search...

to open search from anywhere

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.

Historical reference

This page is retained from the previous design documentation. Parts, geometry, status and numerical claims may be superseded. Start with thecurrent architecture and verify exact components in thecatalog. See the archive guide for context.

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:

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, 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 resolves.

#v4 root-cause candidateDispositionDesign changeGate
1External Rd ∥ internal Rd (2.55 kΩ, out of spec)Fix-nowA1: CCxDB↔CCx via R19/R20 links, R17/R18 DNPNone 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
2D4 VBUS pin (6 V zener) on the 15 V railFix-nowA2: delete D4, add SMAJ20ANone (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
3CC continuity via D4's internal flow-throughFix-now by constructionEliminated as a class by D4 removal (CC becomes one copper net per line)Bench A1 remains for diagnosing the existing dead v4 boards only
4NVM content on the failed boardsBench-confirm-firstNoneGate: 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

#BlockerCallDetail
1L7812 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-gatedNot 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
2U8 −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
3C9 (100 µF 25 V) bridging +15 V to −13.5 V = 28.5 V nominal, 33.5 V @ 20 V edgeFix-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.

#ActionRefsNet effect (expected netlist diff)
1Delete D4 (USBLC6-2SC6, C7519)D4Net-(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
2Set R17, R18 DNP + exclude-from-BOM/CPLR17 R18No net change (pins stay on CC1/CC2 and GND)
3Rewire R19: pin 2 from GND to the CC1 netR19CC1DB unchanged (U1.1 R19.1 J3.1); R19.2 appears on CC1; R19.2 leaves GND. Keep 0 Ω / C21189, fitted
4Rewire R20: pin 2 from GND to the CC2 netR20CC2DB unchanged (U1.5 R20.1 J3.2); R20.2 appears on CC2; R20.2 leaves GND
5Add D5 = SMAJ20A (C571370; alt C1973455), SMAD5 (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
6Merge Net-(C16-Pad2) into GND (linear-regulation.kicad_sch)C16 C19 C24 C25C16.2, C24.1, C19.2, C25.1 all become GND members; Net-(C16-Pad2) disappears
7C9 part swap: RVT1E101M0607/C22383804 → RVT1H101M0810/C970687 (100 µF 50 V), update Value/LCSC/Datasheet/footprint fields (dc-dc-conversion.kicad_sch)C9No net change
8Value-field fix: 470uF 16V → 470uF 10VC4 C22 C23No 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

PinSignalDirectionNotes
1+15VA → BBoard A VBUS_OUT (post Q1 load switch), PD-contract 15 V
2+15VA → BPaired with pin 1 (current sharing)
3ATTA → B, open-drain, active-lowSTUSB4500 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
4PDOKA → B, open-drain, active-lowSTUSB4500 pin 20 (POWER_OK2): asserts when the PDO2 (15 V) contract is live. Same pull-up rule as ATT. May be left unconnected
5GND—Paired return
6GND—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.

QuantityValue
XH contact nameplate rating3.0 A per contact (JST, AWG #22)
Continuous derating applied (80%)2.4 A per contact
+15V contacts2 → 4.8 A derated (6.0 A nameplate) capacity
Worst-case continuous load3.0 A (PD contract cap; ≈2.5 A computed steady draw)
Per-contact current at 3.0 A1.5 A = 50% of nameplate, 62.5% of derated
Margin4.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

Revision History

CreatedUpdated