Architecture

The loop that makes it
a product, not a prompt

Anyone can wrap an LLM around "write me some Verilog." The hard, defensible part is the closed loop: real simulation, reliable failure parsing, and repair that converges.

Data flow

How a run executes

Five LLM agents coordinate; one deterministic tool runner does the real work. The orchestrator enforces a max-iteration budget so every run terminates.

๐Ÿ“ Spec Interpreter
โ†’
โš™๏ธ Designer
โ†’
lint ยท Verilator
โ†“
๐Ÿงช Verifier
โ†’
simulate ยท iverilog + vvp
โ†“   pass?  
๐Ÿ”ง Debugger โ€” fix design or testbench
โŸณ
re-simulate
โ†“   converged  
PPA ยท yosys synth
โ†’
โœ“ Sign-off
The agents

Who does what

01

Spec Interpreter

Turns natural-language or structured specs into a formal intent โ€” interfaces, protocol, timing and the corner cases that matter.

02

Designer

Writes synthesizable Verilog with a synthesizability critic pass, biased toward area or timing for your target and application.

03

Verifier

Generates a self-checking testbench with directed + constrained-random cases, SVA assertions, and a reference model.

04

Debugger / Repair

Reads failing logs, localizes the fault, decides whether the design or the testbench is wrong, and patches the right one.

RT

Tool Runner deterministic

Not an LLM. Wraps iverilog/vvp, Verilator and yosys with timeouts and a security scan, and parses logs into structured results. Loop reliability lives here.

OR

Orchestrator

Drives the loop, enforces the iteration budget, decides convergence, and streams every stage to the UI over SSE.

Self-checking protocol

Why the loop can score itself

Every generated and golden testbench follows one convention: print PASS:/FAIL: per check and end with a machine-readable summary line. A deterministic parser scores on that โ€” so there's no human in the waveform-watching loop.

That single convention is what turns "generate and hope" into "generate, measure, and repair."

// the Nexeda reporting contract $display("PASS: %0s", name); $display("FAIL: %0s exp=%0d got=%0d", name, e, g); // final, parsed by the tool runner: $display("NEXEDA_SUMMARY passed=%0d total=%0d", p, t);
The moat

The eval harness is the asset

A benchmark suite of standard blocks with known-good references measures convergence rate and time-saved versus a baseline โ€” and every run becomes a proprietary spec โ†’ RTL โ†’ bug โ†’ fix trace.

๐Ÿ“Š

Measured progress

Convergence and bug-find rates on a fixed benchmark โ€” the number that proves the loop works.

๐Ÿงฌ

Compounding dataset

Each iteration logged from day one becomes training and evaluation data competitors don't have.

๐Ÿ”’

Bounded & safe

Max-iteration budget guarantees termination; the tool runner sandboxes and times out every simulation.

Run the loop yourself

Pick a block, give it a spec, and watch each stage stream live.

Open Playground Read the docs