Commit Graph

11 Commits

Author SHA1 Message Date
noise
dbfe4b22f7 C_BULK1 100u 25V->35V — must survive SMBJ18A clamp (<=29.2V at rated surge)
25V electrolytic sat directly on VIN_PROT where the TVS clamps up to 29.2V;
35V-rated part in the same 8x10 can. Regen diff = 1 line. ERC 133->133;
analyzer diff unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 09:31:55 -04:00
noise
f7eb69929e Cut J11 (USB-C prog) VBUS from +5v; drop R9 bleed — fixes host-VBUS vs buck back-feed
Reference is USB-C-powered so VBUS==+5v was correct there; carrier +5v is
driven by U_BUCK5, so a plugged-in host would parallel its VBUS with the buck
output. Per frozen Pinout_BOM §5 the prog port is D±+CC only. VBUS pins
(A4/A9/B4/B9) now NC; CC1/CC2 stay wired to CM5 (module implements the PD
sink per SC1466 — supersedes spec's discrete 5.1k Rd). R9 (2.2k VBUS bleed)
removed with its GND. ERC 133->133 identical types; analyzer -4, 0 regressions.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 09:31:11 -04:00
noise
39146a7d4c Remove orphaned U12 (RT9742) + C13 — fed stripped HDMI_5v rail
Reference netlist proves U12 OUT drove HDMI_5v (J10/J22 pin 18); HDMI strip
left it dead-ended into C13 only. ERC 133->133 (identical types); analyzer
diff -2 components, 0 regressions.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 09:26:48 -04:00
noise
fb19caa95d Add GPS + PPS distribution sheet (all rev-A blocks captured)
- New carrier/GPS_PPS.kicad_sch via tools/build_gps.py: J_GPS 5-pin
  (PPS + UART2 NMEA + 3V3_AUX + GND) per Pinout_BOM section 6
- PPS chain: GPS_PPS_RAW -> PESD3V3L1BA TVS -> 74LVC1G17 Schmitt
  (+3V3_AUX) -> PPS_CLEAN -> 33R series -> SYNC_OUT (CM5 pin 18 + J2.6),
  plus J_PPS1 (UWB) / J_PPS2 (scope) 2-pin taps; board is PPS sink only
- NMEA on UART2 (GPIO4/GPIO5) per correction C2; debug console keeps UART0
- Converted SYNC_OUT/GPIO4/GPIO5 local labels on CM5_GPIO to global
  (names unchanged) to reach the new sheet; root sheet-symbol needs no pins
- J_GPS pins 1/2 typed output (GPS drives PPS/TX) for driver-aware checks
- Verify: ERC 133->133 zero new; analyzer +73/-0 zero regressions; netlist
  confirms all cross-sheet nets; SPICE 24 pass / 2 benign warn / 0 fail

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 07:22:16 -04:00
noise
13496b302c Power stage 4: TPS54202 15V->+3V3_AUX 1A quiet-rail buck (power sheet complete)
- TPS54202 SOT-23-6 sync, fixed 500kHz; custom symbol CM5IO:TPS54202 (KiCad
  lib symbol extends TPS54302 with no own pins, cannot embed standalone)
- Abs-max gate: VIN 30V vs SMBJ18A clamp <=29.2V at rated surge (0.8V margin,
  transient-only) - documented, passed
- FB 100k/22.1k + 56pF Cff per TI 3.3V table -> 3.29V (SPICE: vfb 0.597V,
  inrush settles 3.315V); L 10uH, Cout 2x22uF/16V
- EN abs-max 7V -> UVLO divider 866k/110k from VIN_PROT (start 10.13V /
  stop 8.61V, EN ~1.9V at 15V); no direct VIN tie
- Renamed input cap C_IN33A -> C_IN33Aa: SPICE names are case-insensitive and
  collided with stage-3 C_IN33a, silently skipping the VIN_PROT decoupling sim
- Verify: ERC 133->133 zero new; analyzer +65/-0 zero regressions;
  SPICE 23 pass / 2 benign warn / 0 fail / 0 skip

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 07:03:31 -04:00
noise
261bf48bb4 Power stage 3: LM61460-Q1 15V->+3V3_RF 4A buck; EN from CM5 PCIE_PWR_EN
- Second LM61460-Q1 (U_BUCK33R), FB 23.2k/10.0k -> 3.32V (SPICE: vfb 0.994V,
  inrush settles 3.32V); shared BOM with stage 2 (L 4.7uH/7A, RT 31.6k ~420kHz)
- BIAS -> +3V3_RF (datasheet-valid >=3.1V, falls back to VIN below)
- EN <- PCIE_PWR_EN: Module1 pin 106 NC swapped for a global label on
  CM5_HighSpeed + 100k pull-down (mirrors reference R14) so the Wi-Fi rail
  stays off until CM5 asserts it; netlist-verified 3-node net
- Removed the E-key temp PWR_FLAG (#FLG33RF); buck PWR_FLAG on L33.2 is now
  the sole +3V3_RF driver
- Verify: ERC 133->133 zero new; analyzer +49/-0 zero regressions;
  SPICE 17 pass / 2 benign warn / 0 fail

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-01 22:11:24 -04:00
noise
fd627f512b Power stage 2: LM61460-Q1 15V->+5v 5A sync buck (SPICE-verified 5.02V)
Second power stage. U_BUCK5 = LM61460-Q1 (6A, 42V abs-max synchronous).
No KiCad symbol existed, so built one from the TI datasheet (SNVSB70F:
14-pin HTSSOP-1EP + EP, VREF=1.0V) and added it to the project library
carrier/CM5IO.kicad_sym as CM5IO:LM61460-Q1.

- FB divider R_FBT5 40.2k / R_FBB5 10.0k -> 5.02V (SPICE-confirmed
  vfb=1.0V=VREF at 5.02V); L5 4.7uH, Cout 2x47u/16V, Cin 2x10u/50V,
  Cboot 100n+Rboot, RT 31.6k (~400kHz), BIAS->+5v, EN->VIN_PROT
- +5v pre-exists in the carrier as a hierarchical net -> exposed via a
  hierarchical label + a +5v sheet pin on the Power symbol, tied into the
  root +5v net (a global label would trip same_local_global_label).
  Netlist confirms the buck now sources Module1 + GPIO headers + USB.
- FB pin typed passive (high-Z sense) to clear an analyzer no_driver
- build_power.py: register_lm61460(), Device:L, HIER_NETS/emit_hlabel

Verify: ERC 133->133 (zero new); analyzer +32 added, 0 regressions;
SPICE 12/13 pass, 0 fail (1 benign warn: L5/Cboot mis-grouped as LC).

Confirm vs datasheet: RT freq, L saturation >=7A, EP=pad15, EN UVLO.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 18:31:26 -04:00
noise
c469238dd5 Power sheet stage 1: 15V input protection (ideal-diode + TVS)
First stage of the power tree. New carrier/Power.kicad_sch (generated by
tools/build_power.py): J_PWR 15V inlet -> D_REV LM74700-Q1 ideal-diode
controller + Q_REV N-FET (reverse-polarity / reverse-current) -> VIN_PROT,
with SMBJ18A input TVS and 100uF/25V || 10uF/50V bulk + VCAP cap.

Part-selection note: the spec's buck candidates miss its own >=20V Vin rule
(TPS54424=17V, TPS54560=async); the 3 sync bucks (stages 2-4) will use
>=30V synchronous parts, datasheet-verified, feeding +5V/+3V3_RF/+3V3_AUX.

tools/build_power.py generalizes the build_ekey approach: generic place()
attaches a net label / GND symbol per pin (by-name connectivity, grid-snapped);
PWR_FLAGs co-located on real pin coords.

Verify: ERC 133->133 (zero new); analyzer +16 added, 0 regressions; netlist
confirms the ideal-diode topology (+15V_IN/VIN_PROT/GATE_REV/VCAP_REV/GND).

Confirm vs LM74700-Q1 datasheet: C_VCAP value, EN tie, FET Vds/SOA, gate R.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 16:41:22 -04:00
noise
18ef98a88e Add M.2 E-key (Wi-Fi) sheet; wire PCIe x1 to freed CM5 lanes
First add-phase block. New carrier/M2_Ekey.kicad_sch (generated by
tools/build_ekey.py) places J_E = Connector:Bus_M.2_Socket_E
(fp Connector_PCBEdge:M.2_2230-xx-E) for an AsiaRF AW7915 / MT7915
Wi-Fi card. Reuses the single CM5 PCIe x1 Gen2 lane freed by the
PCIe-M2 drop (design confirmed E-key-only, no M-key SSD).

- PCIe link-0 wired to the 9 freed CM5 pins via global labels
  (TX/RX/CLK +/-, nRST, nCLKREQ, nWAKE) - netlist-confirmed J_E<->Module1
- +3V3_RF (pins 2/4/72/74) + 10uF||2x0.1uF decoupling + temp PWR_FLAG
- W_DISABLE1/2 10k pull-ups; 11 GND; ~41 NC (USB/BT, SDIO, UART, etc.)
- RX NOT AC-coupled on carrier (card supplies TX coupling per M.2 spec);
  corrected Pinout_BOM, dropped C_PCIE
- CM5_HighSpeed: replaced the 9 PCIe-pin NC markers with global labels
  (106/PCIE_PWR_EN stays NC, reserved for the +3V3_RF buck EN)
- root + .kicad_pro: registered the M2_Ekey sub-sheet
- tools/build_ekey.py: new generator (place connector + auto-NC unused
  pins + by-name labels; grid-snap; cross-connector ERC pin retyping)

Verify: ERC 133->133 (zero new violations); analyzer diff +7 added,
0 regressions; netlist confirms all 9 PCIe nets span J_E and Module1.

Open (power phase): wire PCIE_PWR_EN->buck EN, drop temp PWR_FLAG once
the +3V3_RF buck drives the rail.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 14:58:09 -04:00
noise
1d169476fb Strip PCIe-M2 (M-key/NVMe) sheet; re-baseline stripped carrier
Drops the unused M.2 M-key/NVMe block — design is 1x M.2 E-key (Wi-Fi)
only, since the CM5 exposes a single PCIe x1 lane (datasheet SC1466),
reserved for the E-key. The 10 freed PCIE_* lanes are NC on Module1
unit 2, to be rewired to a fresh E-key sheet in the add phase.

- CM5_HighSpeed: retire PCIE_* labels/wires, NC pins 102,104,106,109,
  110,112,116,118,122,124
- root CM5IO: drop whole PCIe-M2 (sheet) block; strip dangling PCIE_*
  pins off the kept CM5_HighSpeed sheet symbol
- delete carrier/PCIe-M2.kicad_sch; clean .kicad_pro sheets array + ERC
  exclusion
- retire_block.py: add --drop-sheet FILE (remove whole (sheet) block +
  sheet_instances path)
- analysis/baseline/carrier_stripped.json: new add-phase diff anchor

Verify: ERC 136->133 (zero new violation types); analyzer diff +0/~0
(cumulative -41 removed vs original ref); netlist confirms +5v/+3.3v/
GND/+1.8v intact (U8's M2_3v3 was a local rail, not board +3.3v).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 11:27:41 -04:00
noise
6082613e88 many eda additions 2026-06-29 16:31:02 -04:00