Gallery
From open to energized to a Critic finding

The recording is the bundled 555 blinker sample: open the board, energize it, and read the Board Critic. The amber banner in the later frames is circsim being honest that the operating point needed a numerical fallback, so the voltages should be double-checked. See Read the warnings and fidelity banner.
Screenshots

First Light, the two-part tutorial board. The LED glows when the simulated current through it is high enough to light it. Walk through it in the First Light tutorial.

The 555 sample, a seven-part blinker with a schematic attached. The Critic flags findings on the copper without touching the file. See Run the Board Critic audit.

The sensor-node sample, a 94-part routed board of the kind circsim is for: a 5 V input with a reverse-protection diode and a TVS, a 3.3 V regulator, an ESP32 module, two 74HC164 shift registers driving 16 LEDs, an op-amp and a comparator reading a thermistor and a light sensor, a MOSFET and a transistor switching loads, parts at 0, 90 and 180 degrees, bypass capacitors on the back, and a ground pour. It ships next to the other two samples. The screenshot moves the bench supply from the 3.3 V rail circsim picks by default to the 5 V input, so the regulator makes the 3.3 V rail itself. The amber banner is circsim being honest about what the board cannot show: the ESP32 is a supply-load stub that drives nothing, so the shift-register inputs are held at 0 V and the LEDs stay dark, and seven parts (test points, push buttons, the thermistor, the module) have no simulation model. The Critic's decoupling warnings are real: the regulator's 5 V cap sits 10 mm from its pin.
The board file is resources/sample/sensor-node.kicad_pcb. It was generated by scripts/gen-sample-board.mjs in KiCad 10 syntax and then checked against kicad-cli: KiCad loads it, puts every pad where circsim does, finds no unconnected items, and reports no copper violations once the pour is refilled. See Supported files.
More captures are in the guides: the bench and leads, the first-run screen, and the energize guide.
What circsim reads from real boards
The three boards above are circsim's own. To check that circsim handles boards it did not author, the test suite runs it against 16 KiCad-written boards from the KiCad source repository's demo directory, pinned at fixed release tags so each KiCad file-format generation (6, 7, 8, 9, 10) is covered by files that generation wrote. Every file is verified against a pinned sha256 before it is used.
This page does not show pictures of those boards. They are fetch-only test inputs, and the circsim repository never holds or redistributes third-party board files. Each row links to the board at its pinned tag in the upstream repository, so you can open the same file in KiCad or in circsim yourself. The figures come from the corpus baseline (test/corpus/baseline.json), which npm run test:corpus compares against on every run, and this table is generated from that file when the docs are built.
| Board | KiCad | Parts | Nets | Tracks | Vias | Zones | Stubbed | Floating islands | Board license |
|---|---|---|---|---|---|---|---|---|---|
| k6-ecc83-pp | 6 | 15 | 9 | 59 | 0 | 1 | 60% | 0 | none-declared |
| k6-pic-programmer | 6 | 63 | 111 | 370 | 6 | 1 | 20.6% | 7 | none-declared |
| k6-sonde-xilinx | 6 | 25 | 42 | 208 | 3 | 1 | 20% | 13 | none-declared |
| k7-interf-u | 7 | 25 | 173 | 731 | 84 | 1 | 48% | 0 | none-declared |
| k7-sonde-xilinx | 7 | 25 | 42 | 208 | 3 | 1 | 20% | 13 | none-declared |
| k7-complex-hierarchy | 7 | 68 | 52 | 365 | 0 | 1 | 13.2% | 12 | none-declared |
| k8-pic-programmer | 8 | 63 | 111 | 370 | 6 | 1 | 20.6% | 7 | none-declared |
| k8-sonde-xilinx | 8 | 25 | 42 | 208 | 3 | 1 | 20% | 13 | none-declared |
| k8-tiny-tapeout | 8 | 309 | 114 | 2143 | 405 | 2 | 66% | 17 | Apache-2.0 |
| k9-multichannel-mixer | 9 | 114 | 80 | 576 | 29 | 6 | 95.6% | 6 | none-declared |
| k9-complex-hierarchy | 9 | 68 | 52 | 364 | 0 | 166 | 13.2% | 12 | none-declared |
| k9-royalblue-nfc | 9 | 2 | 1 | 160 | 2 | 0 | 100% | - | CERN-OHL-P-2.0 |
| k9-royalblue-feather | 9 | 71 | 95 | 943 | 183 | 267 | 50.7% | 0 | CERN-OHL-P-2.0 |
| k10-pic-programmer | 10 | 63 | 111 | 370 | 6 | 1 | 20.6% | 7 | none-declared |
| k10-cm5-minima | 10 | 112 | 220 | 2084 | 444 | 14 | 60.7% | 5 | CERN-OHL-S-2.0 |
| k10-openair-max | 10 | 210 | 156 | 1654 | 410 | 37 | 31% | 48 | CC-BY-SA-4.0 |
How to read the columns:
- Parts, Nets, Tracks, Vias, Zones are counts circsim extracted from the copper of the
.kicad_pcbfile. Net connectivity is checked against KiCad's own export for every board, so the pad-to-net grouping behind these counts is the same one KiCad reports. - Stubbed is the share of parts that no model tier could resolve, so circsim fell back to a stub. A high number means much of the board is parts circsim has no model for, such as large ICs, and the simulation is correspondingly shallow. See Fidelity.
- Floating islands counts groups of nets with no DC path to ground. circsim adds a bleed resistor to each so the solver can converge.
- Board license is what the upstream demo directory declares.
none-declaredmeans the directory carries no LICENSE file.
16 of 16 boards open today. The rest are tracked as known failures in the corpus manifest, with the issue number shown in the row.