Advance PCB carrier to A1 layout

Reposition the ESP32 and RS-232 reference within the notched outline,
preserve the A0 snapshot, and add second-pass two-layer routing
evidence.
Refresh validation reports and draft previews while keeping fabrication
status provisional.
This commit is contained in:
2026-09-21 12:32:01 +02:00
parent c0f7a1ad51
commit 7d76a41540
21 changed files with 26918 additions and 5227 deletions
+115 -1
View File
@@ -1,4 +1,118 @@
# Two-layer draft routing result
# A1 top-left-notch / bottom-USB routing — current result
Date: 2026-09-21. Actual revised board: `../serial-carrier.kicad_pcb`.
**38/38 connections across 17 multi-pad nets; 0 physical DRC violations,
0 unconnected items; exactly 1 expected U2 footprint parity warning.**
The warning is the board-only `Carrier:MAX3243_Reference_Provisional` assignment
versus the intentionally blank schematic footprint, not a net mismatch.
## Geometry and preservation
Coordinates below are local to absolute origin (100,100) mm; all dimensions mm.
- Carrier: 82 x 80, outline `[(36,0),(82,0),(82,80),(0,80),(0,19),(36,19)]`.
- U1 origin: (8,23), formerly (8,4). Header end-pad centres now Y=76.340;
USB guide Y=83 is 3 mm below the bottom edge. No ESP32 body was invented.
- U2 origin: (43,26.670), formerly (43,30). Actual reference F.Fab bare-PCB
front edge is absolute Y=100.000, flush with carrier local Y=0.
- Nominal male metal external dimensions are user-confirmed: shell overhang
3.870, hex-mouth overhang 2.870, flange front 1.930 behind the carrier edge.
With this placement their local Y positions are -3.870, -2.870 and +1.930.
Integration added seven board-local Dwgs.User graphics for the CAD metal
projections and screw-lock axes.
- H1: (3.5,22.5), H2: (3.5,75). H3/H4 unchanged at (78,4)/(78,76).
- OLED, resistors and switches unchanged.
- RF reserve: local X=10..31 / Y=19..32, absolute X=110..131 / Y=119..132,
both layers; no tracks, vias or fills inside it. Boundary remains provisional.
The existing A0 board was mutated, **not regenerated**. The one-time
`pcb-a0-before-reposition.kicad_pcb` backup remains byte-for-byte intact.
`pcb-routing-input.kicad_pcb` is now the A1 unrouted audit input, not A0.
`pcb-routing-preservation.py` verified all 13 complete serialized footprints
identical except the four authorized top-level placements, including schematic
fields, pad/net definitions, electrical UUID paths and all footprint graphics.
Non-owned board-graphic UUIDs and unrelated graphics are preserved. ESP/RS/RF
annotations moved with placement; the post-routing silkscreen refresh replaced
91 owned graphics. Its edge clipping avoids silk across U2's flush front edge.
All board saves used `SaveBoard(..., True)`. Project `.pro`, `.prl`, schematic,
symbol/footprint libraries and library tables retain their original hashes.
README and pcb-draft-notes were intentionally updated during integration. The generator's constants/text were updated but it was **not
run**; its automatic project/netclass writes were removed. PCB Editor lock was
absent at migration, routing, silkscreen refresh and final preservation check.
## Routing and independent measurements
- F.Cu/B.Cu; **565 segments, 22 through vias**.
- **451 signal segments at 0.25 mm; 114 +3V3/GND segments at 0.5 mm**.
- Vias: 0.7 mm copper / 0.3 mm drill. No copper pours needed.
- Continuous measured minimum different-net/NPTH clearance: **0.270544 mm**.
- Minimum copper/NPTH-to-edge gap: **1.900 mm**.
- Minimum copper/NPTH-to-RF-reservation gap: **0.025 mm**.
- Minimum via-drill edge to other drilled-hole edge: **0.820544 mm**.
Two bounded passes, each with 240 seconds / 1,200,000 expansions per search:
1. 31.18 seconds, 38/38, 674 segments / 16 vias, physical DRC clean. One GND
connection required the router's 0.25 mm fallback; strict width validation
correctly failed. Retained as `pcb-routing-a1-pass1.kicad_pcb` for evidence.
2. 32.44 seconds, 38/38, 565 segments / 22 vias. Short GND connections (<=15 mm)
now route before longer signal fanout; long GND links remain last. All power
and ground now use 0.5 mm; no fallback. This is the saved current result.
The grid remains 0.05 mm, physical clearance 0.25 mm plus 0.02 mm routing margin.
No rip-up/unbounded retry or external network router was used.
## Validation / rerun commands
From `hardware/PCB`:
```sh
/usr/bin/python3 -B validate_pcb_draft.py
/usr/bin/python3 -B validation/pcb-routing-check.py
/usr/bin/python3 -B validation/pcb-routing-preservation.py
kicad-cli pcb drc --format json --all-track-errors --severity-all --exit-code-violations -o validation/pcb-routing-all-drc.json serial-carrier.kicad_pcb
```
All passed on A1. Validators perform fresh KiCad DRC, fresh schematic-netlist
comparison, geometry checks, continuous copper-distance checks, and routing
save-refusal tests. DRC was read-only to preserve project settings; no copper
zones exist to refill. Existing ignored DRC checks were not changed; see reports.
The preservation audit includes the intentional documentation updates and seven
CAD projection graphics while retaining electrical and project preservation checks.
Rerouting remains explicitly destructive to existing/manual copper and requires:
```sh
/usr/bin/python3 -B route_pcb_draft.py --route --overwrite --replace-routes --seconds 240 --max-expansions 1200000
/usr/bin/python3 -B add_device_silkscreen.py
```
Then rerun the validators. The one-shot `pcb-routing-reposition.py --apply`
refuses anything except the original A0 snapshot and must **not** be rerun on A1.
Current evidence: `pcb-routing-a1-pass2.log`, `pcb-routing-run.json`,
`pcb-routing-drc.json`, `pcb-routing-all-drc.json`, `pcb-parity-drc.json`,
`pcb-validation-summary.json`, `pcb-routing-check.json`,
`pcb-routing-reposition.json`, and `pcb-routing-preservation.json`.
The current post-integration board SHA-256 is recorded in
`pcb-routing-check.json`; the CAD projection additions do not change copper.
**Still a draft, not fabrication-ready.** ESP32 geometry/antenna/USB access,
module pinout/header fit, full assembly/height clearances, power integrity and
hardware operation remain unqualified. Nominal RS-232 metal dimensions alone
are not assembly qualification. Placement PDF, SVG/PNG and carrier-only 3D
preview were refreshed after CAD envelope integration. No Gerbers generated.
---
# Historical A0 routing result — superseded by A1 above
The following records the earlier A0 routing/integration. Its dimensions, counts,
measurements and no-save reproduction do not describe current A1. A0 `pass1`,
`pass2`, `pass3`, `baseline` and `dry-run` files are historical; use the A1 and
current reports listed above.
Date: 2026-09-20. KiCad 10.0.6; system `/usr/bin/python3`.