
JordanAceto micro pico micro pico
punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark
Rhaamo kicad amiga2000 amiga2000 is an open-source printed circuit board by punkfab, from the punkfab/pcb-corpus repository on GitHub. It is a 2-layer board of 416.3 × 345.8 mm with 558 parts on 812 nets.
It is built around the 74LS245SC, 74F245D and 74LS373SC, with the 74F244D and 74LS32SC among its other parts. Its parts include 237 capacitors, 68 resistors, 28 ICs, 21 connectors and 5 diodes.
235 real KiCad boards from 170 open-source hardware repositories, prepared as a benchmark for PCB placement and routing tools. Each board comes as its designer shipped it and as an unrouted copy, with its own project rules.
It exists because the public routing benchmarks are built on KiCad 5 files with no project file, so every board is judged against KiCad's default rules. These are current designs judged against their own.
| file | what it is |
|---|---|
board.kicad_pcb | the designer's board, unmodified |
board.kicad_pro | its project file: net classes, clearances, DRC severities |
board.kicad_dru | its custom rules, when the project has them |
unrouted.kicad_pcb | the same board with tracks, vias and zone fills removed; placement kept |
LICENSE (or as named upstream) | the source repository's licence file at the pinned commit |
SOURCE.json | repository, commit, path, licence, and what was changed |
manifest.json lists every board with its statistics. splits.json is the original three-way split by size:
easy (under 40 connections, 37 boards), medium (40 to 149, 112) and hard (150 and up, 86).
A board is here if:
.kicad_pro sits beside the .kicad_pcb,158 of the 235 boards have error-level DRC violations under their own rules as designed. ref_drv in
the manifest is that count. For a "clean pass" comparison (fully connected, zero DRC errors), use the
77 boards where it is 0.
Mix: 178 two-layer, 57 four-layer. Licences: MIT 75, GPL-3.0 67, CERN-OHL-S-2.0 25, CERN-OHL-P-2.0 25, Apache-2.0 19, CC-BY-SA-4.0 10, CERN-OHL-W-2.0 5, CC-BY-4.0 4, BSD-3-Clause 3, CC0-1.0 2.
features.json describes every board: size and density, stackup, packages, project rules, how its designer
routed it, wiring estimates, and what is on it. groups.json sorts the boards into overlapping groups, and
GROUPS.md has the full table with a baseline score for each group.
| kind | groups |
|---|---|
| size | small 37, medium 112, large 66, xlarge 20 |
| stackup | two-layer 178, four-layer 57, inner-planes 57, no-pour 13 |
| technology | through-hole 43, surface-mount 72, double-sided 99, fine-pitch 113, bga 7, dense 60, sparse 59 |
| constraints | diff-pairs 80, shaped-outline 85, cutouts 55, keepouts 63, net-classes 114, custom-rules 22, tight-rules 56 |
| wiring | tangled 59, untangled 55, via-heavy 63, single-sided-routing 23 |
| on the board | usb, usb-c, ethernet, can-rs485, wireless, crystal, switching-regulator, battery, display, audio, motor-power, memory, sensor, fpga, keyboard, addressable-leds |
| controller | esp32, rp2040, stm32, avr, nrf, teensy-module |
| reference | clean-reference 77: zero DRC errors as designed |
The "on the board" and controller groups are detected from net, footprint and value names. They are useful for slicing results, not ground truth; expect some mislabels.
Difficulty is measured. Each board's designer placement is routed by a baseline router and judged by
KiCad DRC. The first baseline is TraceMaker with a 30-second budget
(baselines/tracemaker-30s.json):
| tier | meaning | boards | median connections |
|---|---|---|---|
difficulty-solved | routed clean: fully connected, zero error-level DRC | 48 | 58 |
difficulty-connects | 98% or more connected, but not clean | 101 | 88 |
difficulty-open | under 98% connected | 86 | 207 |
Over all 235 boards that baseline routes 20% clean and connects 94.5% of connections. On the 77
clean-reference boards it routes 49% clean. What separates easy from hard, by share routed clean:
untangled 45%, single-sided-routing 43%, small 43%, no-pour 38%, through-hole 35%.xlarge, fpga and bga 0%, tangled 3%, crystal 6%, large 8%, double-sided 9%, fine-pitch 10%, four-layer 11%.The tiers will move as baselines are added: a board is solved once any baseline routes it clean.
Add one with python3 tools/baseline.py --name <name> --cmd '<router> {in} -o {out}', then
python3 tools/groups.py.
unrouted.kicad_pcb, refill the zones, and run
kicad-cli pcb drc --severity-error on the result with board.kicad_pro copied beside it.unrouted.kicad_pcb, then route and judge the same way. The designer's
placement is the reference.The collector that built this, and harnesses that run it, are in
punkfab/circuit-skills under evals/corpus.
This repository is a collection. Each board keeps the licence of its source repository, copied into
its folder; see ATTRIBUTION.md for the full list. Several are share-alike (GPL-3.0,
CERN-OHL-S, CC-BY-SA): if you redistribute or modify those boards, their terms apply to you.
unrouted.kicad_pcb is a modified copy (routing removed) under the same licence as its board.
The licence recorded for a board is the one GitHub detects for its repository. If you are an author and a board here is under different terms than recorded, or you want it removed, open an issue and it will be taken down.
The manifest, splits, README and attribution files are released under CC0-1.0.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 91 | 1000pF | Capacitor_THT:C_Rect_L11.5mm_W2.0mm_P10.00mm_MKT | C617, C619, C620, C621, C622, C623, C624, C625, C626, C627, C628, C629, C630, C631, C632, C633 +75 |
| 50 | 0.1uF | Capacitor_THT:C_Rect_L11.5mm_W2.6mm_P10.00mm_MKT | C100, C101, C102, C103, C104, C105, C106, C107, C108, C110, C200, C202, C203, C205, C206, C230 +34 |
| 25 | 330pF (Type F 331) | d_amiga:EMI_FILTER | EMI300, EMI301, EMI302, EMI303, EMI304, EMI305, EMI306, EMI307, EMI308, EMI309, EMI310, EMI325, EMI326, EMI327, EMI328, EMI329 +9 |
| 14 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R202, R203, R206, R211, R214, R216, R231, R232, R241, R242, R305, R306, R802, R804 |
| 14 | 1k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R2, R233, R243, R301, R302, R311, R312, R601, R602, R603, R604, R605, R800, R900 |
| 14 | 6.8nF (Type F 682) | d_amiga:EMI_FILTER | EMI230, EMI231, EMI232, EMI233, EMI234, EMI235, EMI236, EMI237, EMI238, EMI239, EMI240, EMI241, EMI242, EMI243 |
| 14 | MountingHole_Pad | MountingHole:MountingHole_4mm_Pad_Via | H1, H2, H3, H4, H5, H6, H7, H8, H9, H10, H11, H12, H13, H14 |
| 13 | 0.22uF | Capacitor_THT:C_Rect_L11.5mm_W2.6mm_P10.00mm_MKT | C201, C215, C216, C217, C219, C220, C221, C500, C700, C702, C703, C704, C705 |
| 13 | 47uF 16V | Capacitor_THT:CP_Radial_Tantal_D5.5mm_P5.00mm | C222, C223, C402, C403, C404, C405, C406, C408, C410, C412, C420, C421, C422 |
| 12 | 100pF (Type F 101) | d_amiga:EMI_FILTER | EMI208, EMI311, EMI312, EMI313, EMI314, EMI315, EMI316, EMI317, EMI318, EMI319, EMI320, EMI321 |
| 11 | 100pF | Capacitor_THT:C_Rect_L11.5mm_W2.6mm_P10.00mm_MKT | C259, C260, C261, C304, C306, C904, C905, C907, C908, C914, C920 |
| 11 | 100pF (Type C 101) | d_amiga:EMI_FILTER | EMI206, EMI207, EMI210, EMI211, EMI229, EMI322, EMI323, EMI324, EMI339, EMI340, EMI341 |
| 10 | 0.01uF | Capacitor_THT:C_Rect_L11.5mm_W2.6mm_P10.00mm_MKT | C204, C305, C322, C323, C401, C407, C409, C411, C413, C414 |
| 10 | 4.7k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R101, R109, R201, R300, R309, R500, R806, R807, R902, R916 |
| 10 | Ferrite_Bead_Small | d_amiga:FERRITE_BEADS_DOUBLE | FB216, FB217, FB218, FB219, FB220, FB221, FB900, FB901, FB902, FB903 |
| 9 | 1k | Resistor_THT:R_Array_SIP10 | RP601, RP602, RP603, RP605, RP700, RP701, RP702, RP703, RP704 |
| 8 | 0.33uF | Capacitor_THT:C_Rect_L11.5mm_W4.0mm_P10.00mm_MKT | C501, C502, C503, C504, C505, C506, C507, C508 |
| 8 | XX4256-15 | Package_DIP:DIP-20_W7.62mm_Socket | U501, U502, U503, U504, U505, U506, U507, U508 |
| 7 | 1000pF | Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm | C310, C311, C312, C313, C314, C315, C316 |
| 7 | 22uF 16V | Capacitor_THT:CP_Radial_Tantal_D5.0mm_P5.00mm | C233, C243, C317, C318, C701, C813, C814 |
| 7 | Ferrite_Bead_Small | Inductor_THT:L_Axial_L7.0mm_D3.3mm_P10.16mm_Horizontal_Fastron_MICC | FB101, FB215, FB301, FB302, FB303, FB401, FB907 |
| 6 | 330 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R110, R111, R114, R115, R917, R1000 |
| 6 | Conn_01x03_Male | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | CN306, J1, J2, J101, J200, J300 |
| 5 | 0.047uF | Capacitor_THT:C_Rect_L11.5mm_W2.6mm_P10.00mm_MKT | C210, C211, C212, C213, C218 |
| 5 | 1k | Resistor_THT:R_Array_SIP6 | RP205, RP301, RP607, RP903, RP908 |
| 5 | 47 (isolated, pack) | Resistor_THT:R_Array_SIP8 | RP102, RP201, RP203, RP902, RP907 |
| 5 | 4A | Capacitor_THT:C_Rect_L11.5mm_W2.0mm_P10.00mm_MKT | F1, F2, F3, F4, F5 |
| 5 | zorro_socket | d_amiga:Zorro | CN601, CN602, CN603, CN604, CN605 |
| 4 | 220uF 16V | Capacitor_THT:C_Axial_L19.0mm_D8.0mm_P25.00mm_Horizontal | C416, C417, C418, C419 |
| 4 | 4.7k | Resistor_THT:R_Array_SIP10 | RP100, RP101, RP200, RP705 |
| 4 | 470uF 16/25v | Capacitor_THT:CP_Radial_D10.0mm_P5.00mm | C214, C225, C226, C912 |
| 4 | 74LS245 | Package_DIP:DIP-20_W7.62mm_Socket | U600, U601, U603, U604 |
| 4 | IBM_16_BIT_EXTENDED_BUS | ISA:ISA16 | CN704, CN705, CN706, CN707 |
| 4 | IBM_8_BIT_EXPANSION_BUS | ISA:ISA8 | CN700, CN701, CN702, CN703 |
| 3 | 1N4148 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D300, D800, D801 |
| 3 | 22 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R105, R106, R212 |
| 3 | 4.7k | Resistor_THT:R_Array_SIP6 | RP904, RP905, RP906 |
| 3 | 4.7uF 16V | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C224, C415, C811 |
| 2 | 1 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R200, R215 |
| 2 | 1.2k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R209, R210 |
| 2 | 10 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R207, R208 |
| 2 | 1N4001 | Diode_THT:D_DO-41_SOD81_P10.16mm_Horizontal | D400, D401 |
| 2 | 2N3906 | Package_TO_SOT_THT:TO-92_Inline | Q202, Q302 |
| 2 | 3.3k | Resistor_THT:R_Array_SIP10 | RPF603, RPF604 |
| 2 | 360 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R230, R240 |
| 2 | 390 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R234, R244 |
| 2 | 3900pF | Capacitor_THT:C_Rect_L11.5mm_W2.6mm_P10.00mm_MKT | C232, C242 |
| 2 | 47 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R904, R905 |
| 2 | 47 (isolated, pack) | Resistor_THT:R_Array_SIP10 | RP500, RP501 |
| 2 | 470 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R801, R803 |
| 2 | 470 | Resistor_THT:R_Array_SIP10 | RP503, RP604 |
| 2 | 470k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R204, R205 |
| 2 | 470pF | Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm | C320, C321 |
| 2 | 68 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1, R307 |
| 2 | 6800pF | Capacitor_THT:C_Rect_L11.5mm_W2.6mm_P10.00mm_MKT | C231, C241 |
| 2 | 74ALS245 | Package_DIP:DIP-20_W7.62mm_Socket | U602, U605 |
| 2 | 74F244 | Package_DIP:DIP-20_W7.62mm_Socket | U540, U541 |
| 2 | 74F245 | Package_DIP:DIP-20_W7.62mm_Socket | U103, U105 |
| 2 | 74LS08 | Package_DIP:DIP-14_W7.62mm_Socket | U607, U803 |
| 2 | 74LS244 | Package_DIP:DIP-20_W7.62mm_Socket | U205, U206 |
| 2 | 74LS32 | Package_DIP:DIP-14_W7.62mm_Socket | U302, U606 |
| 2 | 74LS373 | Package_DIP:DIP-20_W7.62mm_Socket | U104, U106 |
| 2 | Ferrite_Bead | Inductor_THT:L_Axial_L7.0mm_D3.3mm_P5.08mm_Vertical_Fastron_MICC | FB904, FB906 |
| 2 | Jumper_2_Bridged | Connector_PinHeader_2.54mm:PinHeader_2x01_P2.54mm_Vertical | J500, J900 |
| 2 | MPF102 | Package_TO_SOT_THT:TO-92_Inline | Q200, Q201 |
| 2 | empty | Capacitor_THT:C_Rect_L11.5mm_W2.0mm_P10.00mm_MKT | C902, C917 |
| 1 | 1 0.5W | Resistor_THT:R_Axial_DIN0411_L9.9mm_D3.6mm_P15.24mm_Horizontal | R914 |
| 1 | 10k | Resistor_THT:R_Array_SIP10 | RP300 |
| 1 | 10k | Resistor_THT:R_Array_SIP8 | RP600 |
| 1 | 1488 | Package_DIP:DIP-14_W7.62mm_Socket | U304 |
| 1 | 1489 | Package_DIP:DIP-14_W7.62mm_Socket | U305 |
| 1 | 1k | Resistor_THT:R_Array_SIP8 | RP800 |
| 1 | 1k (isolated, pack) | Resistor_THT:R_Array_SIP10 | RP802 |
| 1 | 2.7k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R213 |
| 1 | 200 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R308 |
| 1 | 20pF | Capacitor_THT:C_Rect_L11.5mm_W2.6mm_P10.00mm_MKT | C810 |
| 1 | 22 (isolated, pack) | Resistor_THT:R_Array_SIP10 | RP502 |
| 1 | 22-47pF | Capacitor_THT:C_Rect_L7.0mm_W6.5mm_P5.00mm | VC800 |
| 1 | 220uF 16V | Capacitor_THT:CP_Radial_Tantal_D6.0mm_P5.00mm | C400 |
| 1 | 270pF | Capacitor_THT:C_Rect_L11.5mm_W2.6mm_P10.00mm_MKT | C1 |
The 501 most common of 558 parts.

punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark


raymondh2/CompaqPortableIII
Current PCB Memory Expansion board layout is untested. The backplane for the expansion cards is tested and working.

computerguy096/Aries-1
This is a work in progress micro-ATX 486 board, based off of the DTK 386 replica and the Prometheus VLB

monotech/Nano8088
Smaller SMD version of Sergey Kiselev's Micro 8088 SBC, with XT-CF added

skiselev/micro_8088
Micro 8088 - IBM XT Compatible Processor Board based on Faraday FE2010 chipset

monotech/NuXT
MicroATX Turbo XT Motherboard, with VGA, Floppy, CF, Serial


Xeraster/32bit_486_motherboard
A completely DIY 486 motherboard. Even the chipset is a DIY fpga thing. This version has a 32 bit front side bus and a 16 bit ISA bis
It measures 416.3 × 345.8 mm and has 2 copper layers, 1.6 mm thick.
558 parts, built around the 74LS245SC, 74F245D, 74LS373SC and 74F244D. 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 punkfab/pcb-corpus repository on GitHub, at the commit this page was made from: the board is boards/rhaamo__kicad-amiga2000__amiga2000/unrouted.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask punkfab before reusing the design.