
Z80 romless sbc
gloveboxes/Z80ROMlessSBC
This is a separate KiCad project for a 98.3 × 60 mm, four-layer board. JLCPCB assembles every top-side SMT part, including the Raspberry Pi Pico 2 W module, and only four parts are hand-soldered:

pcb-z80 is a container-only, repeatable build of the four-layer Z80 ROMless SBC PCB engineering design. It regenerates the KiCad schematic, places the four-layer board, routes a fresh Specctra session, imports and fills…
Z80 romless sbc is an open-source printed circuit board by gloveboxes, from the gloveboxes/pcb-z80 repository on GitHub, published under the MIT licence. It is a 4-layer board of 160 × 135 mm with 55 parts on 79 nets, routed with 1,395 tracks and 80 vias.
It is built around the SN74AHCT244N, SN74LVC244AN and AS6C1008-55PCN, with the MCP23S17-E/SP among its other parts. Its parts include 15 resistors, 12 capacitors, 8 ICs, 1 diode and 1 transistor. It belongs with the computers and single-board computers and retro computing and games boards and the RP2040 and FPGA and CPLD boards of this library.
pcb-z80 is a container-only, repeatable build of the four-layer Z80 ROMless
SBC PCB engineering design. It regenerates the KiCad schematic, places the
four-layer board, routes a fresh Specctra session, imports and fills the board,
runs strict ERC/DRC and net-parity checks, measures timing-sensitive buses, and
exports a fabrication package.
The design is derived from the deterministic generators in
gloveboxes/Z80ROMlessSBC at the revision recorded in SOURCE.md.
The board uses F.Cu, In2.Cu, and B.Cu for signals while In1.Cu remains a
continuous GND reference plane. The self-contained image pins its Java base
digest, Python packages, Freerouting checksum, and exact KiCad 10.0.6 packages.
No host Java, Python packages, Freerouting, pcbnew, or kicad-cli are used.
Apple Container is the only runtime entry point.
cd /Users/dave/GitHub/pcb-z80
./scripts/container-run build
./scripts/container-run info
./scripts/container-run allGenerated design and manufacturing artifacts are written under
hardware/kicad/; tool provenance is recorded in build/toolchain.txt.
Close the schematic editor, PCB editor, and KiCad project manager before
running all, and keep them closed until it finishes. Builds refuse existing
KiCad .lck files (including PCB locks) and never remove them.
all snapshots the generators and source/ inputs into a private staging
workspace beside hardware/kicad/. Generation, routing, checks, and every
fabrication/export step must succeed before the accepted output directory is
replaced using same-filesystem renames. A failed build or interrupted promotion
restores the previous directory; existing PCB, routing sessions, exports, and
fabrication files are not deleted up front. Source inputs are never modified,
and existing .kicad_prl local preferences are preserved on success. The
generated .kicad_pro rules still come from source/, not local project edits.
If rollback cannot complete, the script reports the retained
hardware/.kicad-build-*/ workspace; its accepted-kicad/ directory contains
the previous accepted outputs. Do not start another build until that directory
has been recovered. Uncatchable termination (for example SIGKILL or a host
shutdown) can also leave this workspace: inspect it before rebuilding.
info only updates tool provenance in build/ and container configuration;
it does not create, remove, or modify files under hardware/kicad/.
Unknown modes and extra arguments fail without running the pipeline.
The generated silkscreen labels J1's +5V/GND rails and retains the positive
marks and negative-side shading on C9-C12. Do not remove polarity information
to resolve drawing collisions. The board-only 3D render cannot establish
socket-body clearance when component and socket models are absent; the
5.76 mm U1/U4 pin-row spacing is not the gap between purchased socket bodies.
Fit R23-R26 as 4.7 kOhm (5% or better), not 10 kOhm: the supported ATF22V10B's internal input pull-ups require stronger startup pull-downs. Apply external +5 V before connecting USB and disconnect USB before removing external +5 V. USB-only operation/programming of the populated board is unsupported because U9's AHCT245 data ports lack power-off isolation. Unexpected external-supply loss with USB connected requires additional hardware protection, not merely an inactive output enable.
Ubuntu dependency/security updates can change lower-level image contents, so the image is controlled and fail-closed but not claimed to be byte-identical across rebuild dates.
The routed board to open in KiCad is:
hardware/kicad/z80_romless_sbc.kicad_pcbIt is the only .kicad_pcb retained by a successful build. The temporary
unrouted placement used to export the Specctra DSN is deleted immediately.
DRC completion is an electrical/manufacturing check, not physical hardware qualification. Initial bring-up still starts at a 1 MHz Z80 clock and proceeds through measured steps before claiming the design's at-least-8-MHz target.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 10k | R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R17, R18, R19, R20, R21, R22, R27, R28, R31 |
| 8 | 100n | C_Disc_D5.0mm_W2.5mm_P2.50mm | C1, C2, C3, C4, C5, C6, C7, C8 |
| 5 | 4.7k | R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R23, R24, R25, R26, R29 |
| 5 | 8x10k bussed | R_Array_SIP9 | RN1, RN2, RN3, RN4, RN5 |
| 4 | M3 mounting hole | MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 3 | 22u | CP_Radial_D8.0mm_P3.50mm | C9, C10, C11 |
| 1 | 100u | CP_Radial_D10.0mm_P5.00mm | C12 |
| 1 | 1N5819 | D_DO-41_SOD81_P10.16mm_Horizontal | D1 |
| 1 | 2N3904 MCP RESET | TO-92_Inline | Q1 |
| 1 | 47k | R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R30 |
| 1 | AS6C1008-55PCN | DIP-32_W15.24mm | U2 |
| 1 | ATF22V10B/C | DIP-24_W7.62mm | U3 |
| 1 | BUSACK# TEST | TestPoint_Loop_D2.60mm_Drill0.9mm_Beaded | TP6 |
| 1 | BUSREQ# TEST | TestPoint_Loop_D2.60mm_Drill0.9mm_Beaded | TP5 |
| 1 | CLK TEST | TestPoint_Loop_D2.60mm_Drill0.9mm_Beaded | TP2 |
| 1 | GND TEST | TestPoint_Loop_D2.60mm_Drill0.9mm_Beaded | TP7 |
| 1 | M1# TEST | TestPoint_Loop_D2.60mm_Drill0.9mm_Beaded | TP1 |
| 1 | MCP23S17-E/SP | DIP-28_W7.62mm | U8 |
| 1 | REGULATED 5V INPUT | Altech_AK100_1x02_P5.00mm | J1 |
| 1 | RESET# TEST | TestPoint_Loop_D2.60mm_Drill0.9mm_Beaded | TP3 |
| 1 | Raspberry Pi Pico 2 W | RaspberryPi_Pico_Common_THT | A1 |
| 1 | SN74AHCT244N | DIP-20_W7.62mm | U4 |
| 1 | SN74AHCT245N Pico-to-bus | DIP-20_W7.62mm | U9 |
| 1 | SN74LVC244AN | DIP-20_W7.62mm | U7 |
| 1 | SN74LVC245AN bus-to-Pico | DIP-20_W7.62mm | U10 |
| 1 | WAIT# TEST | TestPoint_Loop_D2.60mm_Drill0.9mm_Beaded | TP4 |
| 1 | Z84C0020PEC | DIP-40_W15.24mm | U1 |
It measures 160 × 135 mm and has 4 copper layers, 1.6 mm thick.
55 parts, built around the SN74AHCT244N, SN74LVC244AN, AS6C1008-55PCN and MCP23S17-E/SP. 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 gloveboxes/pcb-z80 repository on GitHub, at the commit this page was made from: the board is hardware/kicad/z80_romless_sbc.kicad_pcb and its schematic hardware/kicad/z80_romless_sbc.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

gloveboxes/Z80ROMlessSBC
This is a separate KiCad project for a 98.3 × 60 mm, four-layer board. JLCPCB assembles every top-side SMT part, including the Raspberry Pi Pico 2 W module, and only four parts are hand-soldered:

Neotron-Compute/Neotron-Common-Hardware
Contains KiCad footprints and symbols shared across multiple Neotron projects.

dennowiggle/ESP32_Interface
Facilitate learning the Z80 Retro! hardware and software.

Neotron-Compute/Neotron-Expansion-Template
Example Neotron Expansion card


RomLab/pcb-system-for-underfloor-heating-v2.0
PCB for underfloor heating system


GLGPrograms/tinyDiskII
Homemade floppy disk emulator for Apple II series computers