Skip to content

fix: make every BOM Value unambiguous for the fab, and switch D_INV_ISO1 to SOT-323 - #61

Merged
thePunderWoman merged 2 commits into
mainfrom
bom-values-sot323
Sep 24, 2026
Merged

thePunderWoman merged 2 commits into
mainfrom
bom-values-sot323

Conversation

@thePunderWoman

@thePunderWoman thePunderWoman commented Sep 24, 2026 •

Copy link
Copy Markdown
Owner

Summary

PCBWay flagged D_INV_ISO1: "BAT54W" is SOT-323 from nearly every maker, but we had picked Yangjie's SOD-123 variant. A fab only sees Designator, Footprint, Quantity and Value in the BOM — never MF, MPN or LCSC — so a bare part name is ambiguous. This fixes the class of problem, not just one part.

  • Every Value is now unambiguous: <label> | <MPN> | <manufacturer> | <package>, e.g. 100nF | CL05B104KO5NNNC | Samsung Electro-Mechanics | 0402. The label is dropped when it repeats the MPN, and commas/periods are stripped so the BOM CSV never needs quoting. BT1 keeps its RIGHT-ANGLE HORIZONTAL note. Applied to all 81 parts across every sheet and the PCB.
  • scripts/bom_values.py builds, applies and checks these values (--apply / --check), and fails if the PCB copy of a part's Value, MF, MPN or footprint differs from the schematic. New footprints must be added to its package table on purpose; hand-sourced parts with no MPN (J_STICK1) are listed explicitly rather than silently blank.
  • D_INV_ISO1 → Diodes BAT54W-7-F, SOT-323 (the common part, made by several vendors). Pin 1 anode / pin 2 not connected / pin 3 cathode, confirmed against Nexperia's numbered pinning table and the Diodes datasheet. Same BAT54 family electrically (30V, 200mA, 2µA leakage at 25V), so the SPICE model and scripts/spice/latch_sim.py still pass. PCB footprint replaced and rerouted.
  • Layout diagrams now say AO3401A for Q_PWR1 (they were stale since it was swapped from DMG2305UX) and BAT54W-7-F / SOT-323 for D_INV_ISO1.
  • Repo CLAUDE.md documents the Value rule and the script. Production files regenerated.

Notes

  • Also includes PCB/snips_controller.kicad_pro: KiCad only reordered its used-designators list (one line, no functional change).
  • scripts/jlc_match.py searches on Value, which now includes the MPN, so its Basic-library alternative search may behave oddly. That workflow is retired.
  • The SOD-123 → SOT-323 change is a layout change on the inverter cluster; worth a glance at the routing around D_INV_ISO1.

Test plan

  • python3 scripts/bom_values.py --check — 81 parts, all Values and PCB fields in sync (and --apply is idempotent)
  • kicad-cli sch erc — 0 errors, 1 pre-existing benign warning (D_RGB1 lib_symbol_mismatch)
  • kicad-cli sch export netlist — D_INV_ISO1 pin 1 → PWR_BTN_INV_BASE, pin 3 → PWR_BTN_SENSE, pin 2 no-connect
  • kicad-cli pcb drc — 0 violations, 0 unconnected pads
  • python3 scripts/spice/latch_sim.py — all checks pass
  • Regenerated production BOM: all 40 lines use the new Value format, no commas/semicolons
  • Confirm with PCBWay that the BOM now reads unambiguously

🤖 Generated with Claude Code

thePunderWoman and others added 2 commits September 24, 2026 09:45
…SO1 to SOT-323

PCBWay flagged D_INV_ISO1: "BAT54W" is SOT-323 from nearly every maker, but we
had picked Yangjie's SOD-123 variant. A fab only sees Designator, Footprint,
Quantity and Value in the BOM (never MF/MPN/LCSC), so a bare part name is
ambiguous. Fixes the class of problem, not just this part:

- Every component's Value is now "<label> | <MPN> | <manufacturer> | <package>"
  (label dropped when it repeats the MPN; commas/periods stripped so the CSV
  never needs quoting). BT1 keeps its RIGHT-ANGLE HORIZONTAL note. Applied to
  all 81 parts across every sheet and the PCB.
- scripts/bom_values.py builds, applies, and checks these values, including
  that the PCB copy of Value/MF/MPN/footprint matches the schematic. New
  footprints must be added to its package table on purpose; hand-sourced parts
  with no MPN (J_STICK1) are listed explicitly.
- D_INV_ISO1 -> Diodes BAT54W-7-F in SOT-323 (common part, several makers).
  Pin 1 anode / pin 2 not connected / pin 3 cathode, confirmed against
  Nexperia's numbered pinning table and Diodes' datasheet. Uses KiCad's
  Diode:BAT54W symbol; PCB footprint replaced and rerouted. Electrically the
  same BAT54 family (30V, 200mA, 2uA leakage at 25V), so the SPICE model and
  scripts/spice/latch_sim.py still pass.
- Layout diagrams now say AO3401A for Q_PWR1 (they were stale since it was
  swapped from DMG2305UX) and BAT54W-7-F/SOT-323 for D_INV_ISO1.
- Repo CLAUDE.md documents the Value rule and the script.

ERC/DRC clean; production files regenerated.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@thePunderWoman
thePunderWoman merged commit c96d19d into main Sep 24, 2026
2 checks passed
@thePunderWoman
thePunderWoman deleted the bom-values-sot323 branch September 24, 2026 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant