
Baseline
DeadlySIn777/Controller
Unfinished CNC controller motherboard: native KiCad sources, rules, DSN and global routing review

Snes games on the n64 or m64
SN-64 is an open-source printed circuit board by FantomZap, from the FantomZap/SN-64 repository on GitHub. It is a 6-layer board of 101.8 × 80.5 mm with 410 parts on 530 nets, routed with 7,065 tracks and 1,453 vias.
It is built around the TLV62569DBVR-TP, SN74LVC4245APWRE4 and TPS3700DDCR, with the SN74LVC1G07DBVR, SN74LVC1G06DBVR and SN74LVC1T45DBVRE4 among its other parts. Its parts include 160 capacitors, 122 resistors, 32 ICs, 9 transistors and 6 inductors. It belongs with the retro computing and games boards of this library.
Open sn64.kicad_pro in KiCad 10, then open the schematic. The root (rev 0.4-r3, A2) holds both cartridge connectors and five child sheets, wired by same-name root labels (the shared net-name contract in system-integration.md):
The PDF is a review export of all six pages; the round-3 export was not visually inspected (no rasteriser available). Project-local libraries hold the symbols KiCad does not ship. It is not a complete electrical design or a manufacturing package.
The SNES socket now lives on its own small board: ../sn64-socket/ (generated by tools/split_socket_board.py; design note mechanical-architecture.md). On this main board, J2 is the 2x40 2.00 mm joint header. Check both boards with tools/verify_socket_joint.py (and --negative-test).
Board (first draft, 2026-09-29): sn64.kicad_pcb is generated by tools/build_main_pcb.py: 6 layers, 1.2 mm, PCBWay-compatible rules, the SummerCart64 lower outline extended to 70 mm above the tongue shoulders, all 410 parts imported with their 530 nets and a connectivity-pulled placement inside block zones (N64 interface at the bottom, FPGA centred with its decoupling underneath, translators under the top joint header with their resistor arrays beneath them, power/USB left, clock/audio right; small passives on the bottom side). DRC after placement (rebuilt 2026-09-29 without the HDMI parts): 0 real errors; the only reports are the USB-C receptacle pads at the board edge (by design; rule exception in sn64.kicad_dru) and the N64 fingers' shared solder-mask opening (SummerCart64 footprint).
Routing draft (2026-09-30): the tracked board now carries a first autorouted draft (notes): FPGA rotated 180° so its N64 bank faces the bus switches, 240 dog-bone fan-out vias, GND plane on In1, 3.3 V plane on In3, 1.1 V island on In4, signals routed by KiCadRoutingTools (Rust A*, run 2), 157 plane vias, outer GND pours. DRC: no shorts, crossings, clearance or hole violations. Still open: 75 signal/power nets (95 connections, mostly in the translator row) and 219 plane pads without a via (validation/pcb-open-connections.json). Tools: tools/prepare_route.py, tools/add_plane_vias.py, tools/finish_route.py, tools/fab-pcbway.txt. Rerunning build_main_pcb.py --force regenerates the placement and discards this routing. Renders: top, bottom. Nothing is routed yet; the placement is a starting point, not a reviewed layout.
| Item | Contents |
|---|---|
| J1 | 50-contact N64 edge, intended for both original N64 and M64 |
| J2 | Full 62-contact SNES/SFC female socket, including outer contacts and analog audio |
| USB child sheet | J101 JAE USB-C, DNP CC resistors (the power sheet's TUSB320 presents Rd), data/CC ESD arrays, AP2112K-3.3 bridge regulator, FT232HL revision C, 12 MHz crystal, optional DNP EEPROM, SN74AXC4T774 JTAG isolation and J102 target-side service header |
| Symbol library | Editable native KiCad symbols, numbered from the checked pin maps |
| Footprint library | Sanni female-socket and SummerCart64 N64 edge references; local USB component footprints including the reused JAE receptacle geometry |
| Pin maps | N64, SNES and USB circuit nets |
| FPGA, power, A/V sheets | See the page list above; authored by add_fpga_sheet.py, add_power_sheet.py and add_av_clock_sheet.py (deterministic, refuse to overwrite without --force), checked by verify_fpga_sheet.py, verify_power_sheet.py and verify_av_clock_sheet.py |
| Validation | Exported netlist, ERC report, per-sheet checks (interface 31, USB 69, cartridge 20, FPGA 14, power 23, A/V 27) and the root connectivity check (4 checks over 141 contract names) |
GND is the only net that directly crosses the USB/host-connector boundary. HOST_3V3, HOST_12V, SNES_5V_CART, USB_VBUS, USB_3V3 and TARGET_VREF are distinct nets. USB_VBUS also feeds the power sheet's default-off USB input (U302, enabled only when the TUSB320 U301 reports at least 1.5 A and USB_3V3 is present); TARGET_VREF comes from FPGA_3V3 through R414 on the FPGA sheet and is not a USB target-power output. The N64 edge reaches the FPGA only through the host-gated bus switches; N64_AUDIO_L/R and the reserved edge contacts stay unconnected. _N in net names denotes active low; the cartridge symbols retain the source maps' slash notation.
Connector pins deliberately have the ordinary passive connector type. The CSV and electrical notes, rather than these pin types, define endpoint direction and special handling. ERC cannot establish drive ownership, voltage tolerance or timing at these pending interfaces.
The USB bridge uses MPSSE JTAG with ACBUS6 controlling the translator's pulled-up, default-disabled /OE. The documented host command must include --status-pin 14. Its target JTAG nets now reach the ECP5's dedicated JTAG balls on the FPGA sheet (round 3); the configuration flash is loaded through the FPGA. The programming architecture records blank-EEPROM startup, power isolation, persistent-loading requirements and the remaining tests. Connector and crystal notes record the source geometry and provisional 11 pF crystal load capacitors.
The SNES footprint retains all 62 pads, 2.5 mm ordinary pitch, two 7.5 mm gaps per row, 5 mm row separation, 1.524 mm pads and 0.762 mm drills. A specific purchasable socket, body dimensions and mounting details still need approval before board layout.
The N64 footprint preserves all 50 source pads, 2.5 mm pitch and 1.5 x 7 mm copper dimensions. Pads 1-25 remain on B.Cu and 26-50 on F.Cu. Its origin corresponds to source board coordinates (150,125), so pads are at local Y=6 mm. Six retained Edge.Cuts segments form the open lower connector profile, ending at local (±32.25,0) with its bottom at Y=10.5 mm. Do not duplicate these cuts when extending the board outline. The footprint does not include a complete board perimeter, mounting holes, layer stack or bevel. Those are separate controlled dimensions in the geometry record. No generic KiCad board thickness should be treated as the connector thickness.
See THIRD_PARTY.md, cartridge provenance and USB provenance for sources, modifications and retained licenses. All 24 USB footprint pad objects also match the source geometry in the footprint review. The copies of upstream footprints are reference assets, not a fit-tested SN 64 board.
KiCad 10.0.6 exports the six-page schematic to XML and PDF. The round-3 PDF was not visually inspected (no rasteriser on this machine); earlier two-sheet exports were. The saved ERC report contains zero errors and 10 warnings: 5 isolated_pin_label on the reserved N64 edge labels (N64_AUDIO_L/R, N64_KEY1/KEY2_RESERVED, N64_VIDEO_SYNC_RESERVED) and 5 pin_to_pin (cartridge U206 unused B4-B8 on the flagged GND). On the integrated root: verify_cart_interface.py 20/20 (negative 6/6), verify_power_sheet.py 23/23 (negative 11/11), verify_av_clock_sheet.py 30/30 (negative 12/12), verify_fpga_sheet.py 12/13 (negative 10/10; the failing check is efuse_fault_n, a 5V_PRE divider on ball K4, an open owner decision in system-integration.md), verify_root_connectivity.py 4/4 (negative 4/4). The schematic is incomplete and is not an ERC-clean release. Rerun checks as circuitry changes.
The independent validation script checks the exported connector pin/net assignments against the separately researched maps, rejects accidental cross-domain connections, and compares both footprints against the original downloaded sources. The corresponding result and review record the result and remaining limitations.
The saved reports record 30 cartridge-interface checks passed and 69 USB checks passed, with zero failed checks (the USB set now also checks the DNP CC resistors and the CC/VBUS/USB_3V3/JTAG/TARGET_VREF exports). The USB validator independently exports the schematic and compares it with fixed manufacturer pin tables, checking all USB component pins, rail separation, CC/data/ESD connections, bridge support, JTAG directions and disabled startup. See its result and review. These are static checks; no USB enumeration, clock measurement, suspend-current measurement, programming, cold boot, electrical protection or compatibility test has been performed on SN 64 hardware.
To regenerate review files after editing, run these from this directory with KiCad's CLI on PATH:
kicad-cli sch export netlist --format kicadxml -o validation/sn64.xml sn64.kicad_sch
kicad-cli sch export pdf -o exports/sn64-interface-draft.pdf sn64.kicad_sch
kicad-cli sch erc --format json --output validation/erc.json --exit-code-violations sn64.kicad_schThe per-sheet and root checks, from the repository root with KiCad's Python (each also takes --negative-test, except the interface and USB validators):
$py = 'C:\Program Files\KiCad\10.0\bin\python.exe'; $cli = 'C:\Program Files\KiCad\10.0\bin\kicad-cli.exe'
& $py hardware/sn64/tools/verify_interfaces.py --source-root . --kicad-cli $cli
& $py hardware/sn64/tools/verify_usb_programmer.py --kicad-cli $cli
& $py hardware/sn64/tools/verify_cart_interface.py --kicad-cli $cli
& $py hardware/sn64/tools/verify_fpga_sheet.py --kicad-cli $cli --lattice-csv <ECP5U-85 pinout CSV> --datasheets <dir>
& $py hardware/sn64/tools/verify_power_sheet.py --kicad-cli $cli
& $py hardware/sn64/tools/verify_av_clock_sheet.py --project hardware/sn64 --kicad-cli $cli
& $py hardware/sn64/tools/verify_root_connectivity.py --kicad-cli $cliThe initial authoring script, create_interface_draft.py, uses KiCad's Python and downloaded upstream sources. It refuses to replace an existing schematic unless explicitly passed --force. Once circuit editing begins, edit the native KiCad files; do not regenerate the initial sheet over the circuit work.
add_usb_programmer.py records how the initial USB sheet was authored from the reference designs and installed KiCad libraries. It also refuses to replace its sheet without --force; use native KiCad editing for subsequent development. Regeneration requires --source-root <original-project-with-downloads> and --kicad-share <KiCad-share-directory>, and intentionally replaces the entire USB child sheet when forced.
Required in the first revision: a side-mounted USB-C data/programming port and matching enclosure opening, supporting initial firmware/FPGA loading, updates and recovery without successful host-console boot. The bridge and service-access circuit now exists; the complete programming path remains pending target integration and testing. Final side-port placement, cable access and shell clearances remain mechanical work.
These are stages of the full specification. PAL, protection, save integrity, telemetry, factory testing and all remaining specification targets are retained. Video and audio go to the console over the cartridge bus (console video path); the adapter has no output of its own. No PCB layout, FPGA bitstream, working adapter, print-ready shell or PCBWay manufacturing release is included in this revision.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 59 | 100nF | C_0603_1608Metric | C104, C105, C106, C107, C108, C109, C110, C111, C112, C113, C114, C201, C202, C203, C204, C205 +43 |
| 48 | 100nF 16V X7R | C_0402_1005Metric | C401, C402, C403, C404, C405, C406, C407, C408, C409, C410, C411, C412, C413, C414, C415, C416 +32 |
| 24 | 10k | R_0603_1608Metric | R105, R107, R112, R113, R114, R209, R210, R211, R212, R213, R216, R217, R220, R221, R329, R360 +8 |
| 14 | 100k | R_0603_1608Metric | R205, R218, R219, R302, R303, R304, R305, R306, R322, R323, R324, R325, R327, R333 |
| 13 | 33 (4x0603, tune) | R_Array_Convex_4x0603 | RN201, RN202, RN203, RN204, RN205, RN206, RN207, RN208, RN209, RN210, RN211, RN212, RN213 |
| 12 | 22uF 10V | C_0805_2012Metric | C316, C317, C318, C320, C321, C322, C324, C325, C326, C328, C329, C330 |
| 11 | 10uF 10V X5R | C_0603_1608Metric | C421, C422, C423, C428, C431, C434, C438, C442, C446, C450, C453 |
| 9 | 4.7k | R_0402_1005Metric | R401, R402, R403, R404, R407, R410, R411, R412, R413 |
| 8 | BSS138BK | SOT-23 | Q301, Q302, Q303, Q304, Q305, Q306, Q307, Q308 |
| 7 | 100k 1% | R_0603_1608Metric | R308, R310, R313, R315, R318, R320, R365 |
| 7 | 4.7k | R_0603_1608Metric | R206, R207, R208, R701, R702, R712, R715 |
| 7 | SN74LVC4245APWR | TSSOP-24_4.4x7.8mm_P0.65mm | U201, U202, U203, U204, U205, U206, U207 |
| 6 | 33 | R_0603_1608Metric | R108, R109, R110, R111, R214, R215 |
| 6 | MountingHole_2.5mm | MountingHole_2.5mm | H1, H2, H3, H4, H5, H6 |
| 6 | TPS3700DDCR | SOT-23-6 | U310, U311, U312, U313, U314, U315 |
| 4 | 0R | R_0603_1608Metric | R703, R704, R706, R707 |
| 4 | 10k | R_0402_1005Metric | R408, R409, R416, R418 |
| 4 | 1k | R_0603_1608Metric | R203, R204, R326, R340 |
| 4 | SN74LVC1G07DBVR | SOT-23-5 | U210, U211, U212, U407 |
| 3 | 1.2nF | C_0603_1608Metric | C303, C306, C309 |
| 3 | 10uF | C_0805_2012Metric | C716, C718, C720 |
| 3 | 1uF 25V | C_0805_2012Metric | C304, C307, C310 |
| 3 | 2.2k | R_0603_1608Metric | R106, R201, R202 |
| 3 | 2.2uH FNR4030S2R2MT | L_Changjiang_FNR4030S | L302, L303, L304 |
| 3 | 6.8pF C0G | C_0603_1608Metric | C319, C323, C327 |
| 3 | SN74CB3Q3384APWR | TSSOP-24_4.4x7.8mm_P0.65mm | U402, U403, U404 |
| 3 | TLV62569DBVR | SOT-23-5 | U305, U306, U307 |
| 3 | TPS259470LRPWR | Texas_RPW0010A_VQFN-HR-10_2x2mm | U302, U303, U309 |
| 2 | 1.5nF 25V | C_0603_1608Metric | C302, C305 |
| 2 | 10uF 10V | C_0805_2012Metric | C232, C233 |
| 2 | 10uF 25V | C_0805_2012Metric | C312, C313 |
| 2 | 11pF C0G (tune) | C_0603_1608Metric | C115, C116 |
| 2 | 1k | R_0402_1005Metric | R406, R419 |
| 2 | 1nF C0G | C_0603_1608Metric | C722, C724 |
| 2 | 1uF 10V | C_0603_1608Metric | C102, C332 |
| 2 | 1uF 25V X7R | C_0805_2012Metric | C723, C725 |
| 2 | 200 | R_0603_1608Metric | R711, R714 |
| 2 | 22uF 25V | C_1206_3216Metric | C314, C315 |
| 2 | 232k 0.1% | R_0603_1608Metric | R331, R357 |
| 2 | 4.7uF 10V | C_0603_1608Metric | C101, C103 |
| 2 | 44.2k 0.1% | R_0603_1608Metric | R332, R356 |
| 2 | 470R @ 100MHz | L_0603_1608Metric | L101, L102 |
| 2 | 5.1k | R_0603_1608Metric | R713, R716 |
| 2 | 5.1k 1% | R_0603_1608Metric | R101, R102 |
| 2 | SN74LVC1G06DBVR | SOT-23-5 | U213, U214 |
| 2 | SN74LVC1T45DBVR | SOT-23-6 | U215, U216 |
| 2 | USBLC6-2SC6 | SOT-23-6 | U101, U102 |
| 1 | 0 | R_0402_1005Metric | R414 |
| 1 | 1.5uH PNR4020-1R5M | L_APV_PNR4020 | L301 |
| 1 | 100 | R_0603_1608Metric | R341 |
| 1 | 100k | R_0402_1005Metric | R415 |
| 1 | 100k 0.1% | R_0603_1608Metric | R334 |
| 1 | 102k 0.1% | R_0603_1608Metric | R339 |
| 1 | 114k 0.1% | R_0603_1608Metric | R337 |
| 1 | 115k 0.1% | R_0603_1608Metric | R345 |
| 1 | 12.288MHz CJO05-122883320B30 | Oscillator_SMD_Abracon_ASE-4Pin_3.2x2.5mm | X702 |
| 1 | 120k 0.1% | R_0603_1608Metric | R335 |
| 1 | 12k | R_0603_1608Metric | R104 |
| 1 | 12k 1% | R_0603_1608Metric | R103 |
| 1 | 150k 1% | R_0603_1608Metric | R312 |
| 1 | 2.37k 0.1% | R_0603_1608Metric | R352 |
| 1 | 2.55k 1% | R_0603_1608Metric | R311 |
| 1 | 215k 1% | R_0603_1608Metric | R314 |
| 1 | 25MHz 10pF | Crystal_SMD_3225-4Pin_3.2x2.5mm | Y701 |
| 1 | 25MHz CJO05-250003320B30 | Oscillator_SMD_Abracon_ASE-4Pin_3.2x2.5mm | X701 |
| 1 | 267k 1% | R_0603_1608Metric | R307 |
| 1 | 277k 0.1% | R_0603_1608Metric | R351 |
| 1 | 287k 0.1% | R_0603_1608Metric | R348 |
| 1 | 287k 1% | R_0603_1608Metric | R317 |
| 1 | 2N7002 | SOT-23 | Q201 |
| 1 | 3.16k 0.1% | R_0603_1608Metric | R349 |
| 1 | 3.32k 1% | R_0603_1608Metric | R321 |
| 1 | 3.74k 0.1% | R_0603_1608Metric | R346 |
| 1 | 3.79k 0.1% | R_0603_1608Metric | R355 |
| 1 | 30.1k 0.1% | R_0603_1608Metric | R359 |
| 1 | 33 | R_0402_1005Metric | R405 |
| 1 | 33.6k 0.1% | R_0603_1608Metric | R344 |
| 1 | 33k | R_0402_1005Metric | R417 |
| 1 | 357k 1% | R_0603_1608Metric | R319 |
| 1 | 361k 0.1% | R_0603_1608Metric | R336 |
The 351 most common of 410 parts.
It measures 101.8 × 80.5 mm and has 6 copper layers, 1.2 mm thick.
410 parts, built around the TLV62569DBVR-TP, SN74LVC4245APWRE4, TPS3700DDCR and SN74LVC1G07DBVR. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the FantomZap/SN-64 repository on GitHub, at the commit this page was made from: the board is hardware/sn64/sn64.kicad_pcb and its schematic hardware/sn64-socket/sn64-socket.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask FantomZap before reusing the design.

DeadlySIn777/Controller
Unfinished CNC controller motherboard: native KiCad sources, rules, DSN and global routing review

manvalan/MuonScope
Piano di rivelazione MuonScope con 16 fotodiodi VBPW34S in matrice 4×4 a passo 10 mm, per il bus MIKILAB REV5.1.

bernardopg/ps28-modern-amp
Infinity Primus PS28 amplifier modernization: TPA3255 engineering, validation and safety-gated workflow

pratham-cloud-ctrl/Project-SCCI-RH
A digital spinal cord-computer interface concept: research, eight KiCad boards, nRF5340 firmware and FreeCAD assemblies.

PE1RGU/hf-antenna-switch
Remote HF antenna switch: 3 radios x 4 antennas (path to 8), outdoor relay unit with a hardware safety chain, controlled over Cat6 from a shack interface. KiCad 10, open hardware, designed together with an AI.

ywhs05/DigitalToFiberOpticConverter-PCB
Circuito que recibe señales digitales y las convierte a fibra óptica.

AxelMcKenna/AFX-1000
RMX-1000-inspired effects processor for macOS, AU and VST3, built on a shared C++20 engine. Standalone Daisy Seed 3 hardware with two main PCBs and a custom housing is in development.
