GEM-4C 558 -4%
GPT-61S 555 -3.8%
CL-SN55 553 -3.8%
CL-OP55 551 -4%
GPT-61TERR 547 -3.5%
GEM-4CM 546 -4%
CL-OP55EH 542 -3.9%
GPT-61SOLXH 541 -3.6%
GPT-61SOLH 527 -3.7%
CL-SN55XH 523 -3.5%
GEM-4CL 520 -3.9%
GPT-61TERRXH 507 -3.4%
CL-OP55H 506 -4%
GPT-61SOLM 500 -3.5%
KIMI-K31P 499 -3.5%
GEM-4AR 498 -3.9%
GPT-61TERRH 490 -3.2%
CL-OP55M 483 -3.6%
MUSE-WONDFUL 479 -3.8%
CL-SN55H 467 -3.3%
CL-HK55 463 -2.9%
GPT-61TERRM 462 -3.1%
GPT-6A 451 -4.7%
MUSE-WOND 451 -3.6%
CL-HK55XH 450 -3%
GPT-6ASTRXH 440 -4.8%
GROK-47 440 -3.1%
GROK-47H 438 -2.9%
GPT-6ASTRH 437 -4.8%
DSK-V-340615 436 -2.9%
QWEN-38X 428 -2.9%
GPT-61SOLL 423 -3.2%
GLM-53 420 -3%
MIMO-V26P 420 -2.6%
CL-HK55H 419 -2.8%
LING-31F1019 417 -2.6%
GEM-38F 416 -2.8%
GPT-6ASTRM 415 -4.6%
MMAX-M31F 414 -2.8%
GEM-38FM 412 -2.8%
GPT-61TERRNO 411 -2.8%
GROK-47L 410 -2.8%
DSK-V-3E48BD 410 -2.6%
GPT-6L 407 -2.6%
GLM-53F 407 -2.6%
STEP-5 405 -2.6%
CL-FABL51XH 403 -4.7%
GPT-61TERRL 403 -2.9%
MIMO-V26F 401 -2.4%
CL-FABL51 399 -4.5%
CL-SN55M 395 -2.9%
CL-OP55L 393 -3.4%
MIST-LARG4 390 -2.7%
CL-FABL51H 386 -4.5%
CL-HK55M 386 -2.3%
GPT-6LUNAXH 377 -2.6%
MUSE-SPAROPE 375 -2.6%
MIST-LARG4M 371 -2.4%
DSK-V4P 365 -2.4%
GPT-6LUNAH 365 -2.1%
GLM-53L 364 -2.4%
CL-SN55L 362 -2.7%
GEM-38FL 361 -2.4%
GPT-6ASTRL 359 -4.5%
CL-FABL51M 359 -4.5%
QWEN-827B 349 -2.2%
CL-HK55L 347 -2%
MMAX-M3 345 -2%
GPT-6LUNAM 344 -2.3%
DSK-V-02811D 344 -2%
K2-HORI375BA 342 -2%
REFL-BEAM 338 -2%
QWEN-827BM 332 -1.8%
CL-FABL51L 329 -4.4%
QWEN-827BL 320 -1.8%
NEMO-35SUPEV 313 -1.9%
INKL 295 -1.7%
NVID-NEMO3UL 295 -1.3%
GEM-35FLITE 295 -1.3%
GPT-6LUNAL 287 -1.4%
GPT-6LUNANON 286 -1%
NANB-333B 285 -2.7%
QWEN-827BNON 282 -1.4%
COMM-APLUS 266 -1.1%
MUSE-GLIM 263 -1.1%
NEMO-35LIGH 261 -0.8%
GRAN-428B 258 -0.8%
MIST-SMAL4 252 -0.4%
INKL-SM 235 -2.5%
GEMM-431B 225 —
GEMM-4E4B 225 —
GEMM-4E4BNON 225 —
LING-30TINY 225 —
MINI-33B 225 —
NORT-MCODE 225 —
NOVA-MICR 225 —
NVID--ADE3B4 225 —
QWEN-54B 225 —
QWEN-54BNONR 225 —
TINY-AYAGLOB 225 —
GEM-4C 558 -4%
GPT-61S 555 -3.8%
CL-SN55 553 -3.8%
CL-OP55 551 -4%
GPT-61TERR 547 -3.5%
GEM-4CM 546 -4%
CL-OP55EH 542 -3.9%
GPT-61SOLXH 541 -3.6%
GPT-61SOLH 527 -3.7%
CL-SN55XH 523 -3.5%
GEM-4CL 520 -3.9%
GPT-61TERRXH 507 -3.4%
CL-OP55H 506 -4%
GPT-61SOLM 500 -3.5%
KIMI-K31P 499 -3.5%
GEM-4AR 498 -3.9%
GPT-61TERRH 490 -3.2%
CL-OP55M 483 -3.6%
MUSE-WONDFUL 479 -3.8%
CL-SN55H 467 -3.3%
CL-HK55 463 -2.9%
GPT-61TERRM 462 -3.1%
GPT-6A 451 -4.7%
MUSE-WOND 451 -3.6%
CL-HK55XH 450 -3%
GPT-6ASTRXH 440 -4.8%
GROK-47 440 -3.1%
GROK-47H 438 -2.9%
GPT-6ASTRH 437 -4.8%
DSK-V-340615 436 -2.9%
QWEN-38X 428 -2.9%
GPT-61SOLL 423 -3.2%
GLM-53 420 -3%
MIMO-V26P 420 -2.6%
CL-HK55H 419 -2.8%
LING-31F1019 417 -2.6%
GEM-38F 416 -2.8%
GPT-6ASTRM 415 -4.6%
MMAX-M31F 414 -2.8%
GEM-38FM 412 -2.8%
GPT-61TERRNO 411 -2.8%
GROK-47L 410 -2.8%
DSK-V-3E48BD 410 -2.6%
GPT-6L 407 -2.6%
GLM-53F 407 -2.6%
STEP-5 405 -2.6%
CL-FABL51XH 403 -4.7%
GPT-61TERRL 403 -2.9%
MIMO-V26F 401 -2.4%
CL-FABL51 399 -4.5%
CL-SN55M 395 -2.9%
CL-OP55L 393 -3.4%
MIST-LARG4 390 -2.7%
CL-FABL51H 386 -4.5%
CL-HK55M 386 -2.3%
GPT-6LUNAXH 377 -2.6%
MUSE-SPAROPE 375 -2.6%
MIST-LARG4M 371 -2.4%
DSK-V4P 365 -2.4%
GPT-6LUNAH 365 -2.1%
GLM-53L 364 -2.4%
CL-SN55L 362 -2.7%
GEM-38FL 361 -2.4%
GPT-6ASTRL 359 -4.5%
CL-FABL51M 359 -4.5%
QWEN-827B 349 -2.2%
CL-HK55L 347 -2%
MMAX-M3 345 -2%
GPT-6LUNAM 344 -2.3%
DSK-V-02811D 344 -2%
K2-HORI375BA 342 -2%
REFL-BEAM 338 -2%
QWEN-827BM 332 -1.8%
CL-FABL51L 329 -4.4%
QWEN-827BL 320 -1.8%
NEMO-35SUPEV 313 -1.9%
INKL 295 -1.7%
NVID-NEMO3UL 295 -1.3%
GEM-35FLITE 295 -1.3%
GPT-6LUNAL 287 -1.4%
GPT-6LUNANON 286 -1%
NANB-333B 285 -2.7%
QWEN-827BNON 282 -1.4%
COMM-APLUS 266 -1.1%
MUSE-GLIM 263 -1.1%
NEMO-35LIGH 261 -0.8%
GRAN-428B 258 -0.8%
MIST-SMAL4 252 -0.4%
INKL-SM 235 -2.5%
GEMM-431B 225 —
GEMM-4E4B 225 —
GEMM-4E4BNON 225 —
LING-30TINY 225 —
MINI-33B 225 —
NORT-MCODE 225 —
NOVA-MICR 225 —
NVID--ADE3B4 225 —
QWEN-54B 225 —
QWEN-54BNONR 225 —
TINY-AYAGLOB 225 —

Delayed ticker data. Last calculated 5 Nov 2026, 11:04 pm Sydney time.

← Back to feed

AI Agent Finds 10 CPU Optimizations in 10 Hours, Beats Human-Tuned VexRiscv by 56%

Andrej Karpathy’s autoresearch pattern — propose, implement, measure, keep the wins — has been applied primarily to software: optimizing training loops, refining prompts, tuning gradient descent. Developer FeSens asked whether it generalises to a domain with a much harder feedback loop: CPU microarchitecture design.

The answer, published as auto-arch-tournament and picked up by IEEE Spectrum, is yes — with an important caveat about where the real work is.

Setup

The baseline is a textbook 5-stage in-order RV32IM pipeline in SystemVerilog: IF/ID/EX/MEM/WB, no branch predictor, no caches, no multi-issue. Locked at 2.23 CoreMark/MHz, 301 iter/s — the same methodology VexRiscv uses for its published benchmarks.

Each round, three agent slots run in parallel. An LLM proposes a microarchitectural hypothesis as structured YAML, a second LLM implements it in the rtl/ directory inside an isolated git worktree, and then a deterministic eval gate fires:

  • riscv-formal: 53 symbolic BMC checks covering decode, traps, ordering, liveness, and M-extension correctness
  • Verilator cosim: byte-identical RVFI trace against a Python ISS under ~22% random bus stalls
  • nextpnr place-and-route: 3-seed median Fmax on a Gowin GW2A-LV18 FPGA (Tang Nano 20K)
  • CoreMark CRC validation: the same 4 CRC values VexRiscv reports

Improvement merges. Regression or failure destroys the worktree. A diversity rotation forces each slot into a different category (micro_opt / structural / predictor / memory / extension) to prevent fixation.

Results

73 hypotheses. 10 accepted. 50 regressions. 9 formal or cosim failures. 4 placement failures. 9 hours 51 minutes wall-clock.

End state: 2.91 CoreMark/MHz, 577 iter/s, 199 MHz Fmax, 5,944 LUT4.

That is +91.9% CoreMark over the locked baseline. Compared against the human-optimised VexRiscv reference (2.57 CoreMark/MHz at 144 MHz), it lands +56% on CoreMark iter/sec (578 vs 370) and uses 40% fewer LUTs.

The step-function crosses the VexRiscv line at iteration 6 and stays above it. The gap between VexRiscv’s full no cache and linux balanced configurations — their next tier, with caches — is about 40 percentage points; the loop covered 13 of those in under 10 hours on a single FPGA target.

The 10 accepted optimisations, in order:

CoreMark/MHzFmaxHypothesis
2.32135 MHzBackward-Branch Taken Predictor
2.35138 MHzIF Direct-Jump Predictor
2.35160 MHzCold Multi-Cycle DIV/REM Unit
2.37168 MHzOne-Deep Store Retirement Slot
2.37179 MHzSegmented RVFI Order Counter
2.89164 MHzRegistered Lookahead I-Fetch Replay Predictor
2.89175 MHzCompressed Resetless I-Fetch Replay Tags
2.89183 MHzRTL-Only Hot/Cold ALU Opcode Split
2.91199 MHzBanked Registered I-Fetch Replay Predictor

The biggest single jump — moving DIV/REM off the single-cycle ALU path at iteration 3 — also halved the LUT count as a side effect. The agent did not know that would happen. It found out by doing it and watching the synthesiser.

The Actual Thesis

The project’s central argument is not about the loop. It is about the verifier.

Of 73 hypotheses, 63 were wrong. Several examples from the log illustrate why the eval gate is load-bearing:

The same DIV/REM idea arrived at round 1 as Move DIV/REM off the single-cycle ALU path and broke cosim before ever reaching the FPGA. Two hours later, the agent resubmitted it as Cold Multi-Cycle DIV/REM Unit — same idea, fixed implementation — and it became the breakthrough win. Without the cosim gate, the broken version would have shipped.

At round 24, after the peak of 577 iter/s was already locked, the agent proposed Registered Lookahead JALR Target Predictor. Fitness collapsed to 154 iter/s — a 73% regression. The comparison-against-baseline check caught it before it merged.

Two separate hypotheses attempted to write files outside the allowed rtl/** path. The path sandbox rejected both before any code was generated.

The conclusion: the agent loop is a commoditised component. Six months of moat at best. The formal verifier, the cosim harness, the schema validation, the budget check — those are the parts that make the loop safe to run unattended. Without them, the agent fixes one bug by introducing three.

What This Means for Hardware Design

The significance is domain transfer, not benchmark numbers. AI agents have become routine in software: SWE-bench Verified scores above 80% are now table stakes at the frontier. Hardware design involves a fundamentally different feedback cycle — synthesis, place-and-route, timing closure, formal property verification — and it has historically been insulated from this class of automation.

Auto-arch-tournament demonstrates that a general-purpose LLM, with no hardware-specific fine-tuning and no domain-specific training data beyond the SystemVerilog files in the repo, can navigate that feedback cycle autonomously and improve on a carefully hand-tuned baseline. The loop is the same. The verifier is the hard part.