Skip to the content
2 layers70 × 50 mmAttempt-02, the printed circuit board in 3D

Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

Size
70 × 50 mm
Copper layers
2
Thickness
1.6 mm
Parts
24
Nets
14
Pads
55
Tracks, vias
2,234, 7
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
5 Sep 2026
Updated
7 Sep 2026

Overview

Attempt-02 is an open-source printed circuit board by tscircuit, from the tscircuit/pcb-generation-benchmark01 repository on GitHub. It is a 2-layer board of 70 × 50 mm with 24 parts on 14 nets, routed with 2,234 tracks and 7 vias.

It is built around the AO3400A. Its parts include 8 resistors, 6 connectors, 4 diodes, 4 transistors and 2 capacitors.

Main components

1

README

README.md

PCB Generation Benchmark

Project scaffold for a paired dataset comparing three ways of producing PCB designs from the same prompts:

Method IDWorkflowPrimary artifacts
tscircuit-codegenGenerate tscircuit source codeSource, dependency lockfile, build outputs
kicad-codegenGenerate KiCad files directly or through recorded scripts/APIsNative project, schematic, PCB, generation scripts
kicad-computer-useCreate and edit designs through KiCad's GUINative project, schematic, PCB, screenshots and action trace

Status: 10 draft prompts and a completed two-method generation pilot. The prompt catalog includes easy, medium, and hard prompts with topic labels. The pilot results contain 20 generated schematic/PCB outcomes, retained candidates, previews, and raw validation reports. Computer use was excluded at the user’s request. Some generated designs have failing checks or unverified requirements; execution completion is not design acceptance. A deterministic rule scorer is implemented; reusable generation adapters/runner and scoring calibration remain future work.

Layout

text
prompts/                 Shared prompt catalog and per-prompt assets
configs/                 Experiment and environment templates
methods/                 Workflow contracts for the three methods
schemas/                 Record conventions for future validators
templates/               Copyable prompt, run, and evaluation records
data/runs/               Raw runs, organized by experiment/prompt/method/replicate
data/evaluations/        Separate evaluation records linked to run IDs
data/releases/           Future versioned dataset manifests
src/adapters/            Reserved for method implementations
src/runner/              Reserved for orchestration
src/evaluation/          Reserved for scoring and artifact inspection
scripts/                 Reserved for future commands
tests/                   Reserved for future validation tests
reports/                 Comparison reports and figures
docs/                    Protocol, dataset card, implementation roadmap
work/                    Ignored scratch space

Start here

  1. Read docs/protocol.md and docs/roadmap.md.
  2. Copy templates/prompt/ into prompts/items/<prompt-id>/, replace placeholders, and add the ID to prompts/catalog.json.
  3. Copy configs/experiment.template.json to a named experiment configuration. Freeze its prompt revisions, model, budgets, tools, and repeat count before collecting data.
  4. When the runner exists, collect each prompt across all three methods using templates/run/. Store evaluations separately using templates/evaluation.template.json.

Template files are examples of structure, not actual dataset entries. Cataloged prompts are drafts awaiting review. Do not report placeholder metrics as measurements. The recorded pilot uses installed tools and isolated generation tasks; reusable automation and full benchmark collection remain future work.

Deterministic scoring

The scoring implementation evaluates frozen artifacts with versioned rules and fixed 30/30/20/20 weights. Pilot scoring results include per-rule evidence, critical failures, unknowns and possible score bounds. Run bun run score -- 2026-09-05-codegen-pilot-01 to reproduce them. Missing evidence remains null; no model judge is called.

Historical model-judge proposal

See docs/model-judging.md for the model-judge plan, evaluation/rubric.json for scoring rules, and configs/judge.template.json for fixed judge settings. Judgment and baseline-comparison templates record evidence, repeated scores, and improvement/regression decisions. The model judge and baseline-comparison flow remain scaffolds; deterministic scoring is implemented separately as described above.

Pilot results

Start with the results and PCB previews. The frozen configuration and execution notes record tool versions, budgets, the GUI exclusion, and context limitations. Eighteen runs used fresh subagents; two were generated by the parent after a hard agent limit. No comparative quality score is claimed.

Regenerate the file inventory and check prompt hashes/pair completeness with bun run collect -- 2026-09-05-codegen-pilot-01 --require-complete. This inventories existing artifacts and does not rerun generation.

Git and storage

Track prompts, configs, native design files, code, and compact evidence. Do not commit secrets. Large recordings should use an explicitly selected external store or Git LFS when configured; record their URI and SHA-256 in the run manifest. Neither external storage nor LFS is configured yet. Dataset and code licensing remain undecided; see docs/dataset-card.md.

Development with TypeScript and Bun

All active repository code runs with Bun. Install locked dependencies with bun install --frozen-lockfile.

  • bun run typecheck — check TypeScript.
  • bun test — scoring, geometry, artifact readers, archive integrity, saved-result parity, and website checks. Website checks use the existing generated bundle; run bun run build first after a clean checkout.
  • bun run rules — verify/reproduce the ten frozen v1 rule specifications.
  • bun run score -- 2026-09-05-codegen-pilot-01 — evaluate retained artifacts into a new immutable TypeScript evaluation archive.
  • bun run collect -- 2026-09-05-codegen-pilot-01 --require-complete — inventory existing runs.
  • bun run build — render PCB layers and build the website.
  • bun run website:publish — build and replace the existing public website using ohmx-box.

The PCB renderer calls the native KiCad CLI (KICAD_CLI or kicad-cli on PATH). Hosting uses the existing ohmx-box CLI. These are external tools, not Python repository scripts. Historical generation scripts and archived Python evaluator sources remain unchanged under data/ for reproducibility. Canonical prompts and frozen run inputs also remain unchanged.

Parts

24
QtyValueFootprintReferences
4100R_0805_2012MetricR1, R3, R5, R7
4100kR_0805_2012MetricR2, R4, R6, R8
4AO3400ASOT-23Q1, Q2, Q3, Q4
4SS14 40V 1AD_SMAD1, D2, D3, D4
1100nF 50V X7RC_0805_2012MetricC2
110uF 25V X7RC_0805_2012MetricC1
112V INPUTPinHeader_1x02_P2.54mm_VerticalJ1
1CONTROLPinHeader_1x05_P2.54mm_VerticalJ2
1LOAD1PinHeader_1x02_P2.54mm_VerticalJ3
1LOAD2PinHeader_1x02_P2.54mm_VerticalJ4
1LOAD3PinHeader_1x02_P2.54mm_VerticalJ5
1LOAD4PinHeader_1x02_P2.54mm_VerticalJ6

More from tscircuit/pcb-generation-benchmark01

10
  • 2 layers80 × 50 mmAnalog input, the printed circuit board in 3D

    Analog input

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    42 parts
  • 2 layers65 × 65 mmMatrix, the printed circuit board in 3D

    Matrix

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    19 parts
  • 2 layers50 × 35 mmButtons, the printed circuit board in 3D

    Buttons

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    13 parts
  • 2 layers45 × 30 mmDriver, the printed circuit board in 3D

    Driver

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    12 parts
  • 2 layers45 × 30 mmDriver, the printed circuit board in 3D

    Driver

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    12 parts
  • 2 layers50 × 30 mmAttenuator, the printed circuit board in 3D

    Attenuator

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    11 parts
  • 2 layers45 × 35 mmHub, the printed circuit board in 3D

    Hub

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    10 parts
  • 2 layers30 × 20 mmDivider, the printed circuit board in 3D

    Divider

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    6 parts
  • 2 layers35 × 25 mmRc filter, the printed circuit board in 3D

    Rc filter

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    4 parts
  • 2 layers30 × 20 mmIndicator, the printed circuit board in 3D

    Indicator

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    3 parts

Similar boards

  • 4 layers149 × 95 mmMobo, the printed circuit board in 3D

    Mobo

    opulo-inc/lumenpnp

    The LumenPnP is an open source pick and place machine.

    399 parts3.7k
  • 4 layers40 × 23 mmPixl.js, the printed circuit board in 3D

    Pixl.js

    solosky/pixl.js

    An emulator for Amiibo!

    45 parts1.4kGPL-2.0
  • 4 layers81.2 × 96.6 mmKv4p ht PANEL, the printed circuit board in 3D

    Kv4p ht PANEL

    VanceVagell/kv4p-ht

    Open source handheld ham radio project KV4P-HT

    174 parts828GPL-3.0
  • 4 layers42 × 42 mmHuvud, the printed circuit board in 3D

    Huvud

    bondus/KlipperToolboard

    A 3D printer tool head controller board

    126 parts373GPL-3.0
  • 4 layers98 × 75 mmPiFinder4, the printed circuit board in 3D

    PiFinder4

    brickbots/PiFinder

    A plate solving telescope finder based around a Raspberry PI and RPI HQ Camera

    157 parts257GPL-3.0
  • 2 layers240 × 240 mmKfchess, the printed circuit board in 3D

    Kfchess

    misprit7/real-time-chess

    A physical chess board without the concept of turns

    235 parts254MIT
  • 2 layers141.5 × 83 mmRolio, the printed circuit board in 3D

    Rolio

    MickiusMousius/Rolio46Keyboard

    A split wireless keyboard based on the Corne and Sofle

    110 parts236MIT

Questions

How big is the Attempt-02 PCB?

It measures 70 × 50 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Attempt-02 use?

24 parts, built around the AO3400A. 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.

Where can I download the Attempt-02 KiCad files?

From the tscircuit/pcb-generation-benchmark01 repository on GitHub, at the commit this page was made from: the board is data/runs/2026-09-05-codegen-pilot-01/mosfet-output-bank/kicad-codegen/replicate-1/artifacts/attempt-02/board.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Attempt-02 design in my own project?

Its repository states no licence, so its author keeps all rights: ask tscircuit before reusing the design.