imrishabh18/rp2040-motor-controller

Bottom-side mirrored PCB silkscreen logos rendered as embedded SVG graphics, including via-clearance-aware placement and scaling.

Version
1.0.47
License
unset
Stars
5

engineering/single-sided-assembly.md

# Single-sided assembly revision

Revision v1.0.45, based on v1.0.43, prepared on 2026-10-21 and updated on 2026-10-22.

- U_PD_MON (INA226AIDGSR) and C_PD_MON (100 nF) move from bottom to top.
- U_ENCODER stays at the motor axis on the bottom with `doNotPlace`.
- C_ENCODER and C_ENCODER_BULK move to the top and retain `doNotPlace`.
- TP_SWCLK, TP_GND, TP_SWDIO, TP_3V3, TP_PD, TP_VMOTOR and TP_PD_GND are removed, along with their probe branches and labels. Through copper at former branch junctions is joined into uninterrupted routes; there are no exposed probe pads.
- RP2040 SWD and SWCLK are explicitly unconnected. USB BOOT/RUN programming remains available; external SWD probe access is removed.
- Q_PD_CFG1 moves into the freed corner to provide the INA226's top-side assembly clearance. U_CURRENT_A moves upward by 1.1 mm, and R_PD_ENABLE_PU, R_STATUS_R, R_BUZZER_PD and R_ADC_B are repositioned to make room for the top-side encoder bypass capacitors. Electrical component values and functional nets are preserved. The four short Kelvin sense branches are retained and audited.
- Four copper layers, board outline, mounting holes, imported driver thermal vias, current sensing, voltage sensing and temperature sensing are retained.

All factory-populated components must be on top. The assembly exporter excludes the bottom encoder and its two top-side DNP capacitors. The bare underside encoder footprint does not require bottom-side factory assembly.

The raw PD-voltage monitor does not measure the protected motor rail. Hardware qualification can probe component terminals after removal of the dedicated test pads. Firmware, calibration and powered prototype testing are outside this PCB placement revision.

Current routing and fabrication verification is recorded in reports/validation.json and reports/single-sided-assembly.json. Historical validation claims in earlier engineering notes do not qualify this changed layout.

Verified assembly: 103 populated top-side components, zero populated bottom-side components, and zero dedicated test points. The bottom encoder and both top-side encoder bypass capacitors are DNP. Native routing checks, explicit manufacturing clearances, physical net connectivity, all-four-layer Gerber shorts, and the four Kelvin branches pass. All 33 ground pour regions are physically connected; no floating pour is retained. Exported drill/mask thermal-via and connector-slot/NPTH audits also pass.

2026-10-22 schematic recheck: added the three RGB transistor reference labels and attached custom symbol annotations before automatic placement. Style analysis and native schematic styling warnings are both zero. The updated schematic regression and snapshot tests pass. All PCB elements and functional electrical arrays are identical to the preceding revision; DRC, explicit clearances, physical connectivity, and four-layer Gerber shorts were rerun successfully. See [the recheck summary](../reports/recheck-2026-10-22/final-recheck-summary.json).

The diagonal shown by the bundled inner-layer viewer was a display artifact that bridged separated route sections; it is absent from actual copper. The local renderer fix retains the full route and lets the drawing code filter individual layers, preserving those gaps. It changes the preview only. See [the copper comparison](../reports/recheck-2026-10-22/crossing-comparison.png).

Run `bun run dev --port 3020` to view the validated `dist/index/circuit.json` through the locally generated patched standalone renderer. Rebuild and revalidate after source changes. Explicit `--source` or a TypeScript entry requires a separately supplied matching evaluator worker and manifest in `.tscircuit/preview-runtime`; those files are not included, and the launcher reports their absence.

2026-10-22 latest-toolchain recheck: updated tscircuit to 0.0.2996 and core to 0.0.2192. Replaced the older analyzer bundle with the official latest published browser module and fixed all 14 newly reported style issues. Routing metadata was remapped only after checking identical endpoints, copper geometry, and functional connectivity. See reports/latest-style-2026-10-22/summary.json for current validation.