NVIDIA Research releases HORIZON, an unsupervised agent that pushes every RTL chip-design benchmark to a 100% pass rate
- NVIDIA Research proposes HORIZON, which treats hardware design as repository-level code evolution: the user writes a single Markdown spec, the system compiles it into a "project pack," and an unsupervised agent loop repeatedly edits code and runs simulations inside an isolated Git workspace, committing only once verification passes.
- Across ChipBench, RTLLM-2.0, Verilog-Eval, and 9 CVDP verification categories, HORIZON drives every benchmark to a 100% pass rate using the same unsupervised loop.
- The agent's aggregate pass rate at the first iteration is only 47.8%, and the hardest category — CVDP checker generation — starts at just 3.8% on the first pass; the same loop eventually grinds every category to 100%, but some problems clear in 1–2 rounds while others need up to 82 rounds.
- Once correctness saturates, token cost becomes the real differentiating signal — the 9 CVDP categories consume 97.1% of all tokens (about 203.9M), roughly 91% of which is reusable cached input.
- The authors explicitly do not claim that "agentic hardware design is solved," and they flag a risk of "over-fitting to the reward / reward hacking" in the current feedback setup, recommending that future benchmarks separate debugging feedback from final hidden scoring.
What this NVIDIA paper actually says
NVIDIA Research recently published a paper proposing HORIZON, an agentic hardware-design framework that treats chip design as repository-level code evolution.
Give the system a Markdown spec, and a fully unsupervised agent repeatedly edits code and runs simulations inside an isolated Git workspace, committing only once verification passes — ultimately pushing the entire RTL (register-transfer level — the layer of code describing exactly how every clock tick moves inside a chip) benchmark suite to a 100% pass rate.
Why one-shot Verilog from an AI falls far short
Verilog is the hardware code used to describe chip logic. RTL design is a sharp touchstone: whether a module is correct depends on the exact behavior at every clock tick, the reset convention, how the interfaces handshake, the bit-width of every signal, and the feedback from an actual simulator run. So "Verilog that looks plausible" is nowhere near enough.
A model has to infer the datapath bit widths on its own, how the state machine transitions, the reset convention, the ready-valid handshake protocol, how memory is read and written, and all the edge cases that natural language often leaves unstated. Put simply, a syntactically correct module is just the starting point. Useful automation has to connect "writing it" all the way through to "compile, simulate, inspect waveforms and failure traces, then fix" — running the loop, finding what's wrong, going back to fix it, and running again.
HORIZON's core idea is to lock this entire chain inside a loop that runs itself.
How a spec becomes a self-running project pack
The only input the user has to provide is a structured Markdown spec — not code. It states the high-level intent, repository context, expected artifacts, evaluation criteria, and domain knowledge. Domain knowledge is especially useful, since it can make explicit the invariants, tooling conventions, and failure modes that simply can't be inferred from the files alone.
A "bootstrap agent" compiles this spec into a "project pack" — the control plane for the entire system. The spec has four components, which get compiled into a five-element runtime configuration that drives the unsupervised loop.
- Goal / task
- Domain-knowledge directions
- Evaluator specification
- Acceptance predicate
π_agentpolicy prompt and tool contractE_pexecutable evaluator (compile/simulate/coverage)A_pacceptance predicate (can it be committed?)Γ_pversion-control and artifact policyΩ_pdomain skills and repo operating instructions
- Read state
- Edit workspace
- Invoke evaluation tools
- Fix or commit
A project pack is like a complete onboarding packet for a new hire: it doesn't just say what to do, it also comes with the grading rubric, the tool instructions, and the handover process. The new hire reads it once and can work independently, with nobody standing over their shoulder.
Crucially, the problem is defined on a generic Git workspace, not on some fixed type of chip repository. So this way of organizing work isn't exclusive to RTL or EDA: as long as a task has "a persistent Git workspace + machine-checkable feedback + versioned artifacts," it can be organized the same way. Swap domains, and the evaluator slot can become unit tests, a theorem prover, a performance profiler, a security scanner, a synthesis tool, or even a human-review gate.
Click to see what a real spec looks like (the fifo_sync skeleton from the paper's appendix)
The user just writes an ordinary Markdown file like this one, with the four components laid out clearly, and leaves the rest to the loop.
# HORIZON Harness: fifo_sync ## Goal / objective Implement a synchronous FIFO. Depth 16, 8-bit data. ## Domain-knowledge directions - Reset is synchronous, active-high. - full and empty must never assert together. - Follow ready-valid handshake conventions. ## Evaluator specification - Compile with the suite's native flow. - Run the provided simulation testbench. - Extract functional coverage where available. ## Acceptance predicate - Simulation passes with zero mismatches.
How the loop runs: the Git repo is both the operating console and the experience bank
Once the user hands off the initial spec, the loop is completely unsupervised: bootstrapping, generation, evaluation, acceptance, logging, next iteration — it all runs automatically. A single "campaign" can run for many rounds back to back without any human stepping in. Each round, the agent reads the current state, plans a goal, edits the workspace, invokes tools, interprets failures, and then either fixes the code or commits. The acceptance predicate decides exactly one thing: whether the new version gets committed, or the failed attempt just gets logged.
Git here is the substrate of the loop, not an afterthought for record-keeping. Four ordinary git operations each play a distinct role:
git diffexposes the proposed candidate change so it can be reviewed before being let through
git commitdefines an accepted checkpoint, with the message recording the evaluation verdict and reward
git notesattaches evaluation evidence to this attempt (pass or fail, how many mismatches)
git logreplays the full version history to reconstruct the entire search trajectory
git diff --cached # inspect the staged candidate change git commit -m "iter 7: fix full/empty overlap" git notes add -m "pass=1 mismatches=0" # attach evaluation evidence git log --oneline # replay the search trajectory
A successful commit becomes a "positive example of a fix strategy," while a rejected attempt is recorded as a negative example of "which edits or tool-call paths don't pass evaluation." So the repo's own history is the data source for experience replay — no separate database needed. Combined with prompt caching, the marginal cost of one more fix round stays very low.
It's the code that evolves — the model never moves
The term "self-evolving" can easily make it sound like HORIZON is secretly training the model. It isn't. What evolves is the design artifact inside the Git repo, not the model's weights. The backbone model, GPT-5.3, stays fixed throughout the entire campaign — it's neither trained nor does it update any reinforcement-learning policy.
The paper does borrow the term "semi-Markov decision process (semi-MDP)," but really, it's just a precise, replayable name for the objects being recorded: a "state" is a versioned snapshot of the repo (a bookkeeping checkpoint), and an "option" is an entire episode between two checkpoints. It's not a behavioral assumption, and it's not an optimization assumption.
It's like formally naming a game's "save points" and "the stretch of gameplay between two saves" so they're easy to replay and reference — it doesn't mean the AI inside the game is training and leveling itself up.
Cost is kept down through session reuse: HORIZON maintains a persistent model session across iterations, so the spec, project pack, stable source files, and accumulated debugging context are all pulled from the provider's prompt cache instead of being resent every round. So the tokens that actually get newly billed are mostly the current diff, the latest evaluation output, and the agent's reply. That's also why, as we'll see below, the vast majority of cumulative tokens are cached input.
Whose shoulders HORIZON stands on
HORIZON continues a lineage of "repository-scale self-evolution." This lineage shares one common principle: a candidate change is only accepted when executable evidence supports it. The difference lies in "what evolves" — earlier systems evolved software that engineers "run"; HORIZON evolves the hardware artifacts that engineers "create."
| System | What evolves | Domain | Evaluation signal |
|---|---|---|---|
| AlphaEvolve (2025) | Algorithmic kernels | Scientific and algorithmic discovery | Automated evaluator |
| SATLUTION (2025) | A complete SAT-solver repository | SAT solving | Distributed correctness and runtime (eventually surpassing human-designed competition winners) |
| ABCEvo (2026) | The million-line ABC logic-synthesis system | EDA software | Correctness and QoR (quality of results) |
| HORIZON (this paper) | RTL source, testbenches, verification artifacts | Hardware design | Compilation, simulation, coverage, assertion checks |
There's also a related trend of treating Git itself as scaffolding
EvoGit coordinates a swarm of decentralized coding agents using a Git-based phylogenetic graph; Git Context Controller upgrades an agent's context from a fleeting token stream into a persistent, versioned memory with explicit COMMIT/BRANCH/MERGE operations. Both prove that Git semantics (branching, lineage, checkpoints) are naturally suited to organizing agentic exploration, but both target software engineering. HORIZON likewise treats Git as its substrate, just applied to hardware design: it hosts a single design problem as a self-contained, verification-gated repository whose history simultaneously serves as a replayable experience trajectory.
The whole benchmark suite hits 100%, but the roads to get there differ wildly
Running as a single unsupervised agent loop, HORIZON drives every benchmark suite to a 100% pass rate. The one item that remains "unsolved" is a single ChipBench problem, which the authors trace to a mismatch between the spec and the original benchmark's own defect, rather than a failure on the agent's part — so counting it as resolved still yields 100%. So what varies across suites isn't the finish line, but the road it takes to get there.
Here, iter 0 isn't an independent single-shot success rate. It reflects the state of the repo right after the agent's first evolution step, using the exact same prompting strategy throughout. The agent could easily choose to deliberately push most of its exploration, debugging, and fixing to later iterations rather than trying to maximize success on the very first attempt. This aggregate figure is also pulled up by Verilog-Eval-v2 (whose iter 0 is 86.2% on its own) — looking at the CVDP subset alone, iter 0 is only 23.9%.
Worth noting: these 9 CVDP verification categories (testbench generation, checker generation, assertion generation) were previously exactly the tasks where AI struggled the most. The CVDP paper itself points out that state-of-the-art single-shot models particularly struggle on these verification tasks — and now the same loop converges them all to 100%.
Pick a benchmark to see its convergence curve from the first round to 100%:
Lining up the first-round pass rates for all 12 categories side by side makes the gap unmistakable: from 86.2% for Verilog-Eval down to 0.0% for CID 007. And every single one of them ultimately converges to 100%.
Bar = first-round (iter 0) pass rate; every category eventually converges to 100%.
Click to see the full Table 1 (first round, rounds to converge, final pass rate)
| Suite/category | Evaluation focus | Backend | iter 0 | Rounds to converge | Final |
|---|---|---|---|---|---|
| ChipBench | Mixed RTL generation | Open source | 20.0 | 5 | 100 |
| RTLLM-2.0 | Spec→RTL | Open source | 78.0 | 2 | 100 |
| Verilog-Eval-v2 | HDLBits-style generation | Open source | 86.2 | 2 | 100 |
| CID 002 | RTL code completion | Open source | 3.2 | 82 | 100 |
| CID 003 | Spec→RTL | Open source | 19.2 | 24 | 100 |
| CID 004 | RTL code modification | Open source | 10.9 | 36 | 100 |
| CID 005 | Module reuse | Open source | 9.1 | 14 | 100 |
| CID 007 | Code checking/QoR | Open source | 0.0 | 24 | 100 |
| CID 012 | Stimulus generation | Commercial | 47.8 | 32 | 100 |
| CID 013 | Checker generation | Commercial | 3.8 | 19 | 100 |
| CID 014 | Assertion generation | Commercial | 79.1 | 1 | 100 |
| CID 016 | Debugging and bug-fixing | Open source | 25.7 | 13 | 100 |
| Overall | All evaluated RTL benchmarks | 47.8 | — | 100 |
Only CID 012 through 014 require a commercial simulator.
Once correctness saturates, tokens become the real competition
Once correctness saturates, token consumption becomes a much more informative signal — it exposes what's actually hard versus easy. The authors measure this as "cumulative tokens up to the optimal iteration." The three traditional suites together use only 6.0M, while the 9 CVDP categories use 203.9M — 97.1% of the total. The full run comes to roughly 209.9M.
Spreading the 209.9M across categories, code completion (CID 002), spec-to-RTL (CID 003), and stimulus generation (CID 012) together account for more than half, while the traditional benchmarks are squeezed into a thin sliver on the far left:
What's striking is CID 013: its first-round pass rate is the lowest overall (3.8%), yet it converges on just 14.2M tokens, confirming that smooth, plateau-free trajectory. What actually drives up cost is the "long tail of a handful of stubborn designs" like CID 002.
One more key point: roughly 91% of tokens are cached input, which substantially lowers API cost. So the authors explicitly state that "token efficiency" — not "final pass rate" — is the metric that most needs improvement. Even though HORIZON clears every single suite, the last few percentage points on the hardest categories eat up a disproportionate share of the budget.
Coverage is measured as a byproduct; the red lines are the authors' own
The verification-generation categories are worth a closer look, since they reveal what HORIZON is and isn't optimizing for. HORIZON's acceptance gate is CVDP's "pass condition," not a "coverage target." The loop is driven to make the benchmark spec pass; once a given design passes, the gate is satisfied and the loop stops trying to further optimize it. So coverage here is a secondary, observational signal.
The most direct evidence: CID 012 reaches a 100% pass rate at round 32, but at that point its average per-design coverage is only 97.9%, not 100%. This gap is a direct consequence of the acceptance gate — each design stops the moment it passes the spec, so coverage reflects only "testing sufficient to pass," not "the maximum achievable."
Looking design by design, the loop lifts a "low-coverage tail" — several designs that start at 20% to 40% coverage get pulled up toward full coverage, rather than the loop only nudging the ones that were already high. CID 014 is the counterexample: it starts near 98% right away and saturates immediately. The authors stress that they never tried to force coverage to 100% — here, coverage is a diagnostic for "the generated tests have real substance," not a claim of "exhaustive verification."
Section 5 of the paper is its most candid part, where the authors proactively draw two red lines.
Red line one: over-fitting to the reward/reward hacking
In the current setup, the agent can see detailed evaluation output from every round — simulator messages, evaluation logs, failure traces. This mirrors real debugging workflows, where engineers naturally check logs and counterexamples. But full access to these signals also opens up a failure mode: the agent could tailor its generated RTL to exactly match the observed failures, deterministic tests, or evaluator quirks, rather than robustly implementing the design's actual intent. So a "pass" result might mean "the spec was satisfied under the exposed traces," rather than "the spec was satisfied under all reasonable tests."
It's like a student who gets the previous years' grading records and detailed marking rubric ahead of time, and studies specifically for "how not to lose points" rather than actually learning the course material.
Based on this, the authors recommend that future agentic hardware-design benchmarks adopt a two-tier protocol: expose useful diagnostic feedback during the fix cycle, but reserve hidden randomized tests, independent reference models, formal equivalence checks, property suites, or held-out simulator configurations for final scoring. This lines up with the "structural test holdout" approach used by the software-engineering benchmark SWE-bench.
Red line two: feedback turnaround time
The pass/fail benchmarks in this paper are relatively forgiving, since most evaluations run fast enough to support iterative fixing. But in broader chip design, reward evaluation can be far slower — PPA (performance/power/area) optimization or EDA tool-evolution rewards may require synthesis, place-and-route, timing analysis, power estimation, or large regression suites. The authors note that SATLUTION has already shown the cost of this: even with roughly 800 nodes running in parallel, evaluating the full SAT competition benchmark takes about two hours to turn around, while PPA optimization for RTL could take turnaround times of days or even weeks. Long-latency rewards fundamentally change the problem — a naive "edit, evaluate, fix" loop becomes too slow, and the agent has to reason under delayed, sparse, expensive feedback. Solving "long-turnaround rewards" is therefore a key research challenge for agentic chip design.
They explicitly do not claim that agentic hardware design has been solved: current RTL benchmarks are a controlled proxy for a much broader engineering problem, and important issues remain — reward hacking, robustness, long-horizon design planning, and deployment inside real production design flows. NVIDIA Research, Section 5 of the paper
Chip design goes from "AI writes it once and turns it in" → "unsupervised self-correction all the way to perfect"
NVIDIA Research's HORIZON: write just one spec, and an unsupervised AI repeatedly edits code and runs simulations, pushing an entire chip-design exam to 100 — explained on one page with a diagram
↓ Read it in one page · one animated figure inside
Inside a chip, the logic first has to be written out, tick by tick, in a kind of hardware code (Verilog) — that layer is called RTL (register-transfer level). Getting an AI to write a chunk of RTL isn't hard; the hard part is getting it truly right: every wire's bit-width, every clock tick's behavior, every interface handshake — get one thing wrong and the whole block is dead. So the question this paper asks is: can an AI, with nobody watching the whole time, fix a chip module on its own until it's completely correct?
✘ But "writing it once and turning it in" can't guarantee it's correct
If the bit-width, clock timing, reset, or handshake protocol is off anywhere, the simulation just won't pass. Being syntactically correct is only the starting point — it has to be hooked up to "compile → simulate → find the error → fix" running over and over before it counts.
HORIZON's answer: the user just writes one Markdown spec (the goal, the domain knowledge, how to judge a pass), the system automatically compiles it into a "project pack," and hands it to an unsupervised (nobody monitoring it) loop that repeatedly edits code and runs simulations, committing only once verification passes. Across four public chip-design exams — 12 categories in total — this one loop pushed every single one to a 100% pass rate.
Whether it's right · comes down to this one shot
Passes · git commit ✓
Fails · git log, then keep editing
But with the same loop, some problems clear in two or three tries while others grind on much longer — where exactly does that gap come from? First, see how it actually runs.
The trick isn't a smarter model — it's treating the Git repository (the tool programmers use to store code and keep a history of every step) as the brain. Every time a new version is edited, a simulation runs: if it passes, git commit stores it as a green checkpoint and the main line moves forward; if it fails, git log records it as a cautionary example. This history in the repo becomes the AI's own experience bank.
All 12 exam categories hit 100% — something no unsupervised AI had ever done before. But behind that "100%" the problems vary wildly in difficulty; the clearest yardstick is "how many versions did it take to pass."
All figures above come from NVIDIA's own paper testing, with no independent third-party reproduction yet; the authors also caution that the AI can see detailed evaluation feedback each round, which means it might be "gaming the exam" rather than truly getting the chip design right.
turned in as-is
rides on this one shot
and it's already erroring
one of these wrong and the whole chip is dead
- × Bit-width off by one on some wire
- × Clock out of sync with the tick
- × Handshake interface not connected
and turn it in,
need it right first try?
one spec
off the rails unwatched?!
on a "passed" verdict
= experience bank
database needed
passed, not one missed
the easiest took just 1
wildly different roads to get there
model got smarter?
Git as the brain
Members can copy or download the full Markdown, and let their AI subscribe and ask.
Found this useful? Leave your email — every new explainer, the moment it's out. Unsubscribe anytime.