TestCoupon1 of 7

TestCoupon

A checker for KiCad boards. It compares your design against the manufacturer's datasheets, and it tells you what it didn't check.

I'm looking for three boards to run it on.

Tatsu Ikeda, October 2026. Seven slides. Most of what's on them is pasted straight out of the tool or the repo.

Copper plot of a small two-layer board: a 10-pin microcontroller, a regulator, two headers, and a handful of passives

My test board. 13 parts, 50 by 40 mm, with defects planted on purpose. The next slide is what the tool says about it.

TestCoupon2 of 7

This is what it prints.

$ hwci check tests/fixtures/demo
rules run: 19 (waived findings: 0, no waiver configured)

COVERAGE
  parts considered: 2 (reference prefixes the pin-map rule skips are not counted)
  pins compared against a datasheet pin table: 0
  NOT CHECKED: 2 (U1, U2)
  NOT CHECKED for errata: 2 (U1, U2): no errata record was read for these parts, which is not the same as the vendor publishing none
  NOT CHECKED, no rule exists: layout: no rule in this pack judges placement or routing quality
  NOT CHECKED, no rule exists: signal integrity: no rule in this pack computes impedance, crosstalk, or timing
  NOT CHECKED, no rule exists: EMC: no rule in this pack evaluates emissions or susceptibility
[cut here: the sha256 of every input file, and a false positive count for every rule]
error    decoupling-proximity  U2  U2 pad 5 on power net '+3V3': nearest capacitor C2 is 6.38 mm away (limit 3 mm)
error    decoupling-proximity  U1  U1 pad 2 is on power net 'VDDA' which has no capacitor at all
error    floating-pins         U2  U2 pin 3 (EN) is unconnected: no wire, label, or no-connect marker
error    i2c-pullups           U1  I2C line 'SCL2' has no pullup resistor to a power net (bus cannot idle high)
warning  pin-map-conformance   U1  U1 (HWCI-MCU10) has no datasheet-backed pin map on file, so its pin assignments are unverified
[6 more findings cut]
7 error(s), 2 warning(s), 2 info
not checked: 4 finding(s) (2 warning, 2 info) report what this pack could NOT verify, not a defect it found

Run this morning on commit 284aae6. Lines cut and columns narrowed to fit; nothing reworded.

The top block is the part I care about. Before it lists what's wrong, it lists what it couldn't look at. On this board that's both chips, because neither has a datasheet on file.

TestCoupon3 of 7

The check I built it for: does the symbol match the datasheet?

ERC and DRC compare your design to itself. If the symbol is wrong, everything downstream agrees with the wrong symbol. So each part gets a file with the pin table copied out of the vendor's PDF, plus which PDF it was.

[provenance]
document = "SBOS392I"
revision = "I"
revised = "2026-04"
url = "https://www.ti.com/lit/ds/sbos392i/sbos392i.pdf"
sha256 = "39839abc9bf09417d0a4b446c6e922679f6dc63b19072e284169dd23007e65fe"
retrieved = "2026-07-29"
page = 4
table = "Table 5-1. Pin Functions"

parts/ref3312.pinmap.toml. When a symbol disagrees with the table, the finding names the pin and the document.

I have 17 of these. That's the whole list of parts it can verify today. Five of them say at the top that no person read them:

# PROMOTED 2026-09-01. TWO INDEPENDENT AGENT READS OF THE
# RENDERED PAGES, UNANIMOUS WITH THE MAP BELOW, AT THE
# OWNER'S DELEGATION.
# NOT INDEPENDENTLY HUMAN-SIGNED.
[...]
# That is retrieval, not recall, twice over, which is the
# defect the rule exists to stop. It is not a human's eyes,
# which is the other thing the rule buys. A human re-check
# remains worth doing and has NOT happened.

parts/mcp6002.pinmap.toml, header. "Agent" means an AI model reading page images.

TestCoupon4 of 7

43.6%

That's how much it catches.

I wrote down 47 ways a board design can be wrong. Then I put each one into 25 real open-source boards and ran the checker. It caught 262 of 601.

The idea isn't mine. It comes from an engineer who did this for circuit boards at Bell Labs starting in 1977. He emailed it to me in September.

Fault model 1.0.1, corpus run of 5 Sep 2026. Some of the misses sit behind KiCad's own checks, which this test doesn't run yet.

Fault, as written in the modelCaught
A copper zone on a net is drawn but never filled25 of 25
A track width, via drill, annular ring or zone clearance is below the published floor of the fabricator25 of 25
A regulator's input or output rail has no capacitor22 of 22
A control pin (EN, RESET, MODE, BOOT) is connected to nothing20 of 20
An I2C bus has no pull-up resistor to any power net19 of 19
A connector's pinout is wrong or inverted0 of 25
A differential pair is wired with its polarity swapped0 of 24
The part-number field holds a distributor catalogue code0 of 24
A support component is present but of the wrong type0 of 22
A capacitor's voltage rating is at or too near the rail it sits on0 of 21

Ten of the 47. Sixteen have never been caught once. The full list is in the repo and you can have it.

TestCoupon5 of 7

One thing it found that I wasn't looking for.

The tool keeps a hash of every datasheet PDF it cites. On 31 August I had it download six of them again and compare.

PartDocumentHash on fileHash todayRevision
TPS61023SLVSF14Bb181cbe9e2d31750450d5e3dB, unchanged
TLV9062SBOS839Nc37698e10c1c57cfc69310feN, unchanged

docs/calibration/2026-08-31-hash-recompute-gap.md. Four other documents came back identical.

TI changed both files and kept the same revision letter. If you track datasheets by revision, which is what I'd have done, you see nothing.

The changelog inside the new TLV9062 file says what they did:

Added TLV9062S RUG (VSSOP) package, pinout information
to Pin Functions: TLV9062S table.

The pins for the package I use didn't change. For the TLV9062 that check was a text comparison, not me rereading the pages.

TestCoupon6 of 7

What I don't have.

  • Customers. None.
  • A fabricated board. You don't have real proof until you've actually built one, and I'm not there yet.
  • Layout, signal integrity, EMC. It doesn't check them and the report says so every time.
  • More than 17 parts. Anything else comes back NOT CHECKED.
  • An EE degree. I'm a software person and I can't judge the output myself. Brandon designs boards for a living and that's his job here.
  • A false-positive number on a board I didn't pick. That's what I need you for.
  • Investors. I'm not raising. It runs on AWS credits and costs cents per run.

I wrote the code with an AI coding assistant, and AI readers did some of the datasheet work on slide 3. The checker itself has no model in it. Same files in, same report out.

I scraped GitHub for KiCad projects to test on. There are only a few thousand and a lot of them are unfinished. 4,049 run. It's like pushing rocks up a hill. I didn't think it would be this difficult.

TestCoupon7 of 7

What I'm asking for: three boards.

Send me one KiCad project you're about to fab. NDA if you want one.

I run it and send you the report within a week. It'll look like slide 2, for your board. If your parts aren't in my 17, it will say NOT CHECKED and I'll tell you which ones I can add.

Free. Or a fixed fee if you'd rather pay for it, your call.

Then tell me if it was useful and what it got wrong.

Tatsu Ikeda   hello@testcoupon.dev

If you know a shop that should see this, forward it. testcoupon.dev