PDLVDS-RX — photodiode LVDS receiver

Clean-room receiver for the Miniscope Zero optical uplink: Excelitas C30737LH Si APD → OPA657 TIA → LMH7220 comparator (LVDS out, DAC-set threshold) → ADN2813 CDR → STM32H723 + USB3300 USB-HS. Design target: 50 Mbps line rate, 8b/10b (40 Mbps payload); the paper's mode: 8 Mbps Manchester (16 Mbaud), as transmitted. LT3757 flyback APD bias 150–420 V. USB-C powered; verify on any laptop over USB, no FPGA attached.

Pass 120

2026-11-05 14:53 PST (2026-11-05T22:53:27Z UTC) · commit 3a26a18 (3a26a18d62750578a8534d19a53b70ab9822f1d8)

ADOPTED

ZOMBIE PRUNE (owner-directed cleanup): new standing tool hw/prune_dead.py leaf-trims dead branches on a geometric copper graph (pads and pour contacts are terminals; through-paths stay) and proves the invariant in-process before saving: the per-net pad-group partition under the audit’s own connectivity model (pads+tracks+vias+zone fills, Collide-0) is IDENTICAL before/after – no net moved, no net reverted. REMOVED: 392 segments (0 vias), 126 overshoot tracks shortened, 385.9 mm of dead copper. Worst offenders: GND -101 segs (75.7 mm), SWDIO -18 segs (60.9 mm – an entire superseded route), CDR_DATP -46 (24.2 mm), ULPI_D0 -22 (20.2 mm), HV_EN -6 (19.1 mm), TMP_ALERT -14 (18.5 mm), CAP_CLK -25 (10.9 mm), I2C_SDA -27 (10.6 mm); the old U6-site fanout field around (69-78,33-41) accounts for the NRST/CAP_CLK/TMP_ALERT share. DELTAS vs pass 119: nets 28->28 (identical partitions), violations 74->71 – 3 lines cured, all zombie GND tracks in the HV field (HV_R31A R49.1 vs GND track@(30.375,-12.625); TP_HV track@(44.375,18.125) vs GND tracks x2), zero new lines. Tool stays in hw/: run after any placement move as a matter of course.

Nets fully routednot recorded
Pins failednot recorded
Clearance violations71
Unconnected nets28
Audit verdictFAIL

Routes — all copper layers and each layer

F.Cu In1.Cu In2.Cu B.Cu

Top

Pass 120 — top

Bottom

Pass 120 — bottom

← Pass 119 · all passes · Pass 121 →