The Hive/ Results
Install
Technical proof · as of 8 November 2026

How the Hive’s agents know a design will work before it is built

The Hive’s agents design chips and circuit boards. This page shows the evidence that each design has to produce before it goes out. There are four parts. The solvers are each checked against a case with a known answer. A fixed set of gates must pass, and a gate that did not run counts as a failure. Each gate is tested with faults planted on purpose. The tools are pinned, so a re-run gives the same files. Each number comes with its test case, its conditions and its source. Nothing here has been measured on hardware yet.

A grid of twelve renders: circuit boards for a Linux computer, a motor drive, a hi-fi receiver, a radar, a network switch, a power supply and others, plus the PLL chip layout
Twelve of the designs these checks were run on. These are renders made from the design files, not photos. Every board, with its files and checks, is at boards.ihsan.cc.
1 · Agents design, scripts judge

An agent never decides whether its own design passes

The work is split into two halves. Agents do the design work: they write the spec, the netlist, the RTL, the layout code and the tests. Every check is a deterministic script, and the agents do not grade anything themselves. All the scripts follow one contract. They take no prompts. They write their result as JSON and exit with 0 for a pass, 1 for findings, or 2 for a check that could not run, which counts as a failure. They run on a pinned toolchain, and anything random in them uses a fixed seed. Given the same inputs, a script returns the same verdict.

  • The coordinator reads only results. The agent that runs a design never opens a design file. It reads the recorded state, each gate’s result and each agent’s report, which lists the files changed, the gate claimed and what is still open. A failed gate becomes a work order for a fixer agent. The fixer edits the source, such as the layout generator, and never the generated file, such as the GDS.
  • Separate contexts. The testbench writer starts fresh from the spec. A reviewer never reuses the conversation of the agent that wrote the design. Design and fixer agents get no web tools.
  • Changes to the agents are scored too. A change to a prompt, a script or a recipe is run on frozen design snapshots, with every file pinned by its hash, and scored on fixed numbers such as kill rate, slack, DRC count and margins. A lower score blocks the change.
  • Optimising cannot move the goalposts. When an agent tunes a design for area or speed, the scoring setup is copied and hashed first. That copy holds the synthesis script, the clock, the tests and the port list. The agent may change one file. Correctness must hold before any score counts, and the full gates are run again on the winning version.
2 · Tools that predict the physics

Solvers, each checked against a case with a known answer

The agents added field, circuit and thermal solvers to the board tool and wrote a known-answer test for each one. The tool only lets a solver’s number into a design review while that solver’s known-answer test passes. A pass shows the setup is right for that kind of geometry. On a real board there is no exact answer to compare with, so for those the page reports two other things: whether the answer stops changing as the mesh is refined, and how far apart two different solvers land.

error measured, against the error allowedngspiceRC step0.000% of 0.5%XyceRC step0.017% of 0.5%openEMSmicrostrip0.13% of 2%Palacebox cavity0.025% of 0.5%PalaceL-shaped cavity0.037% of 2%FastHenry2bar inductance0.25% of 2%FasterCapcube capacitance0.1% of 1.5%thermalfvcooling fin0.001% of 0.5%thermalfvpoint source0.15% of 1%thermalfvself-heating strip0.000% of 1%Run 30 Oct 2026 in the pinned tool image.

Error measured, against the error allowed. The full bar is the limit; the blue part is the error.

  • ngspice · RC step0.000% of 0.5%
  • Xyce · RC step0.017% of 0.5%
  • openEMS · microstrip0.13% of 2%
  • Palace · box cavity0.025% of 0.5%
  • Palace · L-shaped cavity0.037% of 2%
  • FastHenry2 · bar inductance0.25% of 2%
  • FasterCap · cube capacitance0.1% of 1.5%
  • thermalfv · cooling fin0.001% of 0.5%
  • thermalfv · point source0.15% of 1%
  • thermalfv · self-heating strip0.000% of 1%
Run 30 Oct 2026 in the pinned tool image.
Board tool · known-answer cases, run 30 Oct 2026

Seven solvers and their test cases

The cases and references · 7 solvers
SolverCase and referenceError
openEMS (FDTD)1.5 mm microstrip on 0.8 mm, εr 4, 1–2 GHz, against Hammerstad–JensenZ0 −0.1%, εeff +0.13% (limit 2%)
Palace (FEM)closed 40×30×20 mm metal box, first four modes, against the closed form+0.025% worst (limit 0.5%)
Palace (FEM)L-shaped cavity, first four modes, against a published benchmark+0.037% worst (limit 2%)
FastHenry210×1×0.035 mm copper bar, inductance by Ruehli’s formula+0.25% (limit 2%)
FasterCapisolated cube, capacitance closed form−0.10% (limit 1.5%)
ngspice, XyceRC low-pass step and corner gain; the same deck in both engines0.000%, +0.017% (limit 0.5%)
thermalfvfin, point source on a plate, self-heating strip; written by the agents+0.15% worst (limit 1%)

The 0.000% results are on cases where the solver should be exact, such as a linear RC circuit, so they test the setup, not the accuracy. The openEMS microstrip took two fixes. A mesh line placed on the strip’s edge read the impedance 4.6% low. A probe spacing of one cell made εeff wander by 10%. Both fixes are now in the tool.

Notch frequency of the same filter, two solvers (GHz)2.4702.4752.4802.4852.490openEMS (FDTD) 2.4891Palace (FEM), coarse mesh: 2.4721Palace (FEM), finer: 2.4860Palace (FEM), higher order: 2.4869Palace (FEM), finest: 2.4874As Palace’s mesh is refined it moves toward openEMS: 0.07% apart.
Board tool · full-wave cross-check

Two full-wave solvers that use different methods, run on the same board

sim_solve board takes a region of a real board, with every copper layer of its stackup, and solves it in openEMS for S-parameters. It has three known-answer cases:

  • a 30 mm through line, whose |S21| is within 0.05 dB of the line formula;
  • a 13 mm open stub, whose notch lands at 3.110 GHz against 3.112 GHz on paper;
  • a deliberately wrong board with the line drawn twice as wide, which reads 31.2 Ω and must fail the check. It fails.

--cross-check palace then solves the same geometry with finite elements. The test case is a 2.4 GHz open-stub notch filter from the RF kit. Both solves are lossless, with zero-thickness copper and no solder mask.

Notch
2.4891 GHz (openEMS) against 2.4874 GHz (Palace), 0.07% apart. As Palace’s mesh was refined, its notch moved 2.4721 → 2.4860 → 2.4869 → 2.4874 GHz.
Whole curve
rms |ΔS| 0.017 on S11 and 0.011 on S21; the check fails above 0.05
Open
The feed impedance differs, 51.89 Ω against 50.82 Ω, and it is not known which solver is right. In Palace the 13 mm stub is 1.90% off against a 2% limit, and refining the mesh does not bring it closer. The rule for judging S11 was changed after the first result was seen, so that part is a replay, not a prediction.
Line impedance from openEMS as the mesh gets finer (Ω)52.652.853.053.2textbook (Hammerstad–Jensen) 52.8653.206×6 cells52.8212×8 cells52.7820×12 cells52.7530×16 cellsIt settles 0.2% from the formula and stops moving.

Line impedance from openEMS as the mesh gets finer (Ω)

53.253.052.852.6 textbook 52.86 53.2052.8252.7852.75 6×6 cells12×820×1230×16
It settles 0.2% from the formula and stops moving.
Board tool · controlled impedance

Each RF line is solved twice, once in 2D and once in 3D

The board tool sizes a 50 Ω trace with a fast 2D field solve. sim_solve line then solves the same trace in openEMS in 3D. The command fails if the two disagree by more than 3%. On a 0.34 mm line on a JLC stackup they read 53.34 Ω and 53.70 Ω, 0.68% apart. The 2D tool sizes the trace with solder mask and plated copper; both of these solves leave those out, so a line built as 50 Ω reads about 53 Ω in both of them.

The chart shows the mesh check on the textbook microstrip. As the mesh is refined, the impedance goes 53.20, 52.82, 52.78, 52.75 Ω and stops at 0.2% from the formula’s 52.86 Ω.

On a 4-layer through-line board from the lab’s VNA test set, openEMS read εeff 2.83–2.87 against the 2D solver’s 2.851, and Z0 53.6–54.7 Ω against 53.05 Ω. That board has not been measured on a VNA yet.

Predictions to check on hardware

RF-kit antenna coupon A9, solved with loss: resonance at 2.260 / 2.248 GHz on two meshes, S11 −9.8 dB, radiation efficiency 0.85 at 2.45 GHz. These were recorded before any measurement.

Vias and launches

3D models of vias and connector launches, refined until the answer stops moving. On a coaxial via, Palace agrees with openEMS within 1 dB of |S21| up to 20 GHz.

Not modelled yet

Connector bodies, the heat solver on a board’s real copper, and thermal FEM. HFSS, the commercial reference, is not used.

3 · The gates a design must clear

A fixed order of checks, where a check that did not run is a failure

Each design workspace has a fixed list of gates. Each gate is a script that writes its result as JSON and exits with a code: 0 for pass, 1 for fail, 2 for a check that could not run. A 2 counts as a failure. Release refuses unless every earlier gate has passed on the current inputs. The digital flow has 17 gates, the analog flow 10, and the mixed-signal top 8.

Digital · 17 gates, in orderspec_lintlintsimholdoutmutateformalcoversynthcdchardentimingdrclvsglsimlecprecheckreleaseAnalog · 10 gates, in orderspec_lintnetlist_lintsim_ttsim_pvtbench_strengthmcdrclvspex_simreleaseMixed-signal top · 8 gates, in ordersplitcosimmacro_libtop_hardentop_drctop_lvsprecheckrelease
  • Digital · 17 gates
    1. spec lint
    2. lint
    3. simulation
    4. holdout
    5. mutation
    6. formal
    7. coverage
    8. synthesis
    9. clock-domain crossing
    10. harden
    11. timing
    12. DRC
    13. LVS
    14. gate-level simulation
    15. equivalence
    16. precheck
    17. release
  • Analog · 10 gates
    1. spec lint
    2. netlist lint
    3. typical simulation
    4. PVT corners
    5. bench strength
    6. Monte Carlo
    7. DRC
    8. LVS
    9. post-layout simulation
    10. release
  • Mixed-signal · 8 gates
    1. split
    2. cosimulation
    3. macro library
    4. top harden
    5. top DRC
    6. top LVS
    7. precheck
    8. release
Chip flow · GF180MCU 3.3 V · IIC-OSIC-TOOLS 2026.09, pinned by digest

From spec lint to release, in open-source chip tools

StageGates and tools
Digital, before layoutlint (Verilator); spec tests and holdout tests (cocotb, Icarus); mutation (yosys mutate via mcy); formal (SymbiYosys); line and toggle coverage
Digital, after layouttiming (OpenSTA, all corners); DRC (Magic and KLayout); LVS (netgen); gate-level simulation with delays; equivalence to the RTL
Analogngspice at 31 corners and in Monte Carlo, before and after layout with parasitics extracted
Mixed-signaldigital RTL and transistor-level analog simulated together, at corners

The 31 corners are process tt/ss/ff × −40, 27 and 125 °C × VDD ±10% (27 corners), plus four skewed corners: ss_pff, ff_pss, tt_pss, tt_pff.

Waivers are tied to the inputs

A gate can only be waived with a reason and an approver. The waiver is tied to the hash of the gate’s inputs and to the checker’s version, and it can have an expiry date. If the design or the checker changes, the waiver no longer holds and has to be approved again.

Top view render of a small RF load board with mounting holes and a coaxial connector
Board tool · gates and build corners

Boards are simulated across part tolerances

A board goes through electrical rules, placement, design rules on the routed copper, simulation, and a manufacturing check on the real Gerber files. Every simulation bench must come with a file of pass/fail bounds, and a bench without one fails. A bench can be run at the board’s build corners, using worst-case analysis or Monte Carlo over the parts’ tolerances with a fixed seed.

Example: a 150 W, 25 MHz RF dummy load. The circuit was simulated in 48 builds: 4 resistor values × 4 launch parasitics × 3 inductances. A trimmer capacitor was tuned once, at 25 MHz. The worst return loss across 22.5–27.5 MHz is 31.3 dB, against a 20 dB spec. The launch inductance is an estimate, not a solve. The board report shows that a 3× change in it moves return loss by less than 1 dB.

Code
github.com/ihsan-sa/hwde-boards
4 · Testing the tests

Each gate is shown designs known to be broken, and must fail them

When the same agent writes a design and its tests, the tests can end up passing whatever was written. In the RealBench study, GPT-4-Turbo’s RTL on RTLLM 2.0 passed its own benchmark testbenches, yet 44.2% of it was wrong when checked formally. The chip flow is built around that result. Every gate is tested on broken designs, testbenches are scored by mutation, and tests are written from the spec.

A design thatpasses every gate+ one planted faulte.g. a reset removeduntouchedgate mustFAIL, naming itgate mustPASSEither one wrong and the check itself is broken, not the design.
Chip flow · planted faults

Each gate has a fault it must catch

Every gate in the chip flow names a fault that it must catch. A set of reference designs comes with a script that plants each fault. The designs range from an 8-bit counter to a small RISC-V core, a bandgap and an SAR ADC. The suite passes only when every planted fault is caught with the expected finding and the clean reference still passes every gate. Fast gates run on every change; slow layout gates run when a change touches them. When a miss turns up on a real block, it is added to the set.

On the PLL chip

The analog benches were shown 295 faults planted in the netlist and caught 255. Each of the other 40 was ruled on individually. A ruling is accepted only if the gate’s own run confirms two things: the named measurement is the one that fault moves most, and it moves by less than max(3σ, 2%).

Chip flow · mutation, holdout, formal

Scoring the testbench, not just the design

  • Mutation. The design is copied many times with one small bug in each copy, such as an inverted condition, a stuck output or a missing reset. Each copy must make a test or a formal property fail. The gate needs at least 90% of copies caught, using a fixed seed, and no misses in the classes that must always be caught. A copy that nothing catches counts as a miss unless yosys proves it behaves the same as the original, or someone rules on it.
  • Tests from the spec. A separate agent writes the testbench from the spec before any RTL exists. That agent sees only the spec. This is a working rule, not a technical lock. Holdout tests, which the design was never run against, are run at the end.
  • Formal. Requirements are written as properties and proven for every input, not only the inputs a test tried.
PLL digital
19 mutants; 3 proven equivalent; 16 of the other 16 caught. Holdout 7 of 7. 100% line and toggle coverage. 6 properties proven unbounded (SymbiYosys, k-induction/PDR).
Hive Pulse
23 mutants; 3 proven equivalent and 3 waived as equivalent by ruling; 17 of the other 17 caught.
Defects the boards’ own next revision fixed, and what the checker saw on the firstdigitstrack too thin for 3 AdigitsPi header mirroreddigitsmic ground floatingdigitsterminal wired to nothingoasisMOSFET pins swappedoasisBOM part wrong sizeoasisconnector rotated at assemblyminuetcapacitor the datasheet asks forminuetcomparator input out of rangeminuethot spots at 4 AminuetLED on before firmwareminuetWiFi resets the chipcaught: 9with limits: 1missed: 1not visible statically: 1
Board tool · defects from real shipped boards

Defects that real designers found only after building

The agents collected public open-hardware boards where a later revision fixed a defect. Examples: a track too thin for its current, a header mirrored against the board it plugs into, MOSFET pins swapped by a footprint, an LED strip that turns on before the firmware runs. The checker is run on the broken revision and must find the defect. It is then run on the fixed revision and must report nothing.

Result: 9 of the 12 defects are found on the first revision. One more is found once the designer’s current limits are supplied. One part-rotation error in the assembly file is missed. One firmware radio fault cannot be seen in the design files at all. None of the 12 is an RF or signal-integrity defect. The checks were written with these defects in view, so this is a regression set, not an unseen test.

5 · Determinism and reproducibility

The same inputs give the same files on another machine

The chip tools run from one container image pinned by its digest. The board tool pins its Python packages and its KiCad version (10.0.6). Every gate records a hash of its inputs, and the hash ignores the folder path and file timestamps. An edit marks every gate after it as stale, and release refuses a stale gate. The fault planted to test release is an RTL edit made after layout.

An R2R DAC block, laid out again on a different machinefirst machinesecond machinenetlistnetlist=LEF (cell outline)LEF (cell outline)=DEF (placed layout)DEF (placed layout)=byte for byte, then every gate re-passed from a clean clone
Chip flow · re-run on a new machine

A block laid out again, compared file by file

An R2R DAC block was taken through every gate again on a different machine:

  • The netlist, LEF and DEF were byte-identical to the first machine’s. The GDS, SDF and SPEF differed only in their export timestamps.
  • Every analog gate passed again.
  • A run from a clean clone, with no logs and no earlier runs, passed every gate in 19 minutes except timing. Timing failed as it had before, under an existing waiver: −0.87 ns setup slack at ss, 125 °C, 3.0 V and 50 MHz (it meets about 47 MHz). That waiver was accepted after 4 attempts to fix the violation.

The re-run found three faults in the flow and none in the design. A mutation step timed out on a busy disk. Two input hashes changed with the folder path or a file timestamp, which marked finished layouts as stale. All three are fixed.

A render of the hi-fi receiver core board, densely populated, with audio jacks and power parts
Board tool · fabrication files · hi-fi receiver

Fabrication files regenerated and compared before an order

Every fabrication export records a SHA-256 hash for each file. Before the receiver’s boards were ordered, an agent regenerated every board’s Gerbers, parts list and placement file from the main branch in a scratch tree and compared them with the committed files. The Gerbers matched except for comment lines in the drill files. The parts lists matched. One placement file differed: a connector had been moved on purpose, and the change was traced to its pull request.

The gates alone were not enough. All gates had passed when six review agents, each given one area (power, thermal, audio, digital, parts, manufacturing), went over the boards. They returned 63 findings, including blockers. Examples: a 5 A supply path routed in 0.255 mm tracks, and a top-side-pad amplifier with no heatsink. Each blocker was fixed and recorded with its margin before the order.

Status: 5 assembled Lite boards ordered on 5 November 2026, not yet arrived. Other board designs and their files are at boards.ihsan.cc.
6 · How the tools grow

Each gap a real design hits goes into the tool, with a test it must pass

The agents also build the tools they design with. A real board or chip runs into something the tool cannot check yet. That gap becomes a task on the tool, not a workaround in the design. The fix lands with a test case, and the gap stays fixed because the test keeps running. On the chip side, every miss found on a real block is planted as a fault in the nearest reference design.

Solvers added one at a time, 30 October to 5 November 2026

  • 30–31 Oct. The seven solvers above were wrapped and validated. openEMS was also set up for planar circuits cut from a board.
  • 1 Nov. Mixed-signal simulation with XSPICE code models. Then sim_solve board, which turns a region of a real board into an openEMS deck. Then S-parameter quality checks to IEEE P370 and a fitted SPICE model.
  • 2 Nov. A mesh-convergence gate. A wideband loss model (Djordjevic–Sarkar dielectric, skin effect, roughness). Power-plane impedance on real plane shapes, checked against Palace. The Palace cross-check of whole boards.
  • 3 Nov. PCB antennas with far-field patterns, and 3D models of vias and connector launches.
  • Next. Real connector bodies. The heat solver on a board’s real copper. Thermal FEM. Palace’s static modes, checked against FasterCap and FastHenry on the same structures.

Boards designed to test the tools

The agents keep a list of 30 areas where the board tool has not been proven on hardware. Examples are 6- to 12-layer stackups, controlled impedance, EMC and double-sided assembly. Each area is assigned to a board that will measure it. Some of these are boards Ihsan asked for. Others are lab boards the agents proposed only to test the tools:

  • zcoupon: impedance coupons drawn on each fab’s own stackup, so a VNA can compare the field solver’s trace widths with the copper the fab actually made.
  • vna-verify: 12 known test structures, each with an openEMS reference answer and a tolerance band, so the first VNA measurement has an independent answer to compare with.
  • rf-kit: filters and antennas on FR4 and on RO4350B. The predictions for its coupons, such as antenna A9 above, were recorded before anything was built.
  • emc-ref: pairs of right and wrong layouts, such as a tight and a loose buck hot loop, or a clock trace over a solid plane and over a notch. The tool’s predicted emissions for each pair were written before fab.

An area is marked proven only when a built board’s measurement agrees with the tool. None is marked proven yet, and none of these boards has been ordered.

Knowledge the design agents work from

  • 98 design-rule records. Each record gives a rule, where it applies and the page it came from in one of 37 manufacturer datasheets and application notes, each pinned by hash. Example: from a ROHM buck-converter layout note, keep the grounds of the input and output capacitors 1–2 cm apart, because input noise at several hundred MHz couples into the output when they are close.
  • 238 failure modes, sorted into categories such as power integrity, protection, EMC and signal integrity. Reviews and checks are run against this list.
  • The errata set of real shipped defects described above.

Only researcher agents can reach the web, and only through a list of allowed sites. Design and fixer agents receive the knowledge as these records.

7 · Where it has been applied

Two chips, with their full gate records

Each gate record is in the project’s repository, including the failures. The boards the same checks were run on are at boards.ihsan.cc.

The PLL chip layout
Chip · mixed-signal · Sep to Nov 2026

A phase-locked loop on a Tiny Tapeout tile

A charge-pump PLL on GF180MCU. The oscillator, charge pump and filter are transistor-level analog laid out by code, with digital logic around them. It was submitted to Tiny Tapeout’s GF180 shuttle on 5 November 2026. On their last recorded run, 30 of its 31 gates pass:

GateWhat it showed
sim_pvt188 bench runs over the 31 corners, every bound met with device mismatch off
pex, drc31 of 31 corners after layout; 0 violations in both rule checkers
timing, glsimworst setup slack 2.75 ns; gate-level tests 18 of 18 with delays
cosimdigital RTL and transistor-level analog lock together in 4.48 µs at 100 MHz
cosim_cornersFAIL at 1 of 6 corners: control-voltage ripple 23.1 mV against a 20 mV limit. The gate-level version passes 6 of 6.

Outside the gates

  • Monte Carlo with device mismatch on (200 samples per corner): the charge-pump up/down current mismatch goes over its 10% limit in 52 of 200 samples at ff_pss and in 12 of 200 at ff_m40c_vp10. It stays inside the limit at tt and ss_pff. sim_pvt passes only because it runs with mismatch off.
  • Jitter (extracted layout, simulated at 9 of the 31 corners): free-running VCO period jitter is 9.7 ps rms at tt and 13.5 ps at ff, 125 °C, VDD −10%. Locked output is about 35–60 ps rms. That figure comes from a linear model that leaves out reference, phase-detector, charge-pump and supply noise.
Code
github.com/ihsan-sa/ece298a-pll
Status: on the shuttle; the chip has not been made yet.
Top: the Hive Pulse chip layout. Bottom: a render of its plug-in board with a 7-segment display, two buttons and two headers
Chip, board and firmware · 4 to 5 Nov 2026

Hive Pulse: chip, board and firmware from one spec, checked against each other

A small digital chip, the board it plugs into, and its firmware. Separate agents built each one from the same spec. The firmware’s self-tests run in simulation against the chip’s own RTL, so if two agents read the spec differently, a test fails. All 28 self-tests pass. The chip passes all 16 of its gates and Tiny Tapeout’s precheck.

Status: checked in simulation and on the design files only; not ordered.

What this page does not claim

  • Nothing here has been measured on hardware. The PLL chip is on a shuttle and the hi-fi Lite boards are being made; neither has come back. Passing these gates is the bar for sending a design out, not proof that it works.
  • The solvers have been checked against closed-form answers and against each other, not against measurements of these designs.
  • Most gates are the Hive’s own, run in open-source tools. The outside checks are the foundry’s design rules, Tiny Tapeout’s precheck and the board house’s checks.
  • Work for other people and private projects is left out.

The tools are open: the Hive on GitHub. The boards: boards.ihsan.cc. See it at work or install it.

Written by Ihsan Salari’s Hive. The agents built the designs and checks on this page and wrote the page itself, and every number has its source in a comment in the page’s HTML. Ihsan Salari directs the agents and answers corrections and questions: ihsan.cc.