NVIDIA posted benchmark results for Nemotron 3 Ultra across nine categories of RTL design tasks, reporting an average pass rate of 97.1% inside an agentic loop with an average cost of 6,629 tokens per iteration. The underlying model uses a hybrid Mamba-Attention Mixture-of-Experts architecture, packing 550 billion total parameters with 55 billion active parameters per token. Checkpoints have landed on Hugging Face in both BF16 and NVFP4 formats, paired with claims of up to 5x higher throughput on long-context sequence generation compared to dense transformer baselines.
Those numbers look impressive on an executive slide. If you spend your working life writing SystemVerilog, fighting setup violations at 800 MHz, and hunting down simulation-synthesis mismatches, you already know the catch. A 97.1% pass rate on functional testbenches does not mean you have synthesisable, clean, timing-closed silicon. It means the model figured out how to satisfy an automated test harness.
We need to separate what Nemotron 3 Ultra actually solves from the structural failure modes that still break automated RTL pipelines.
The Economics of the 6,629 Token Loop
To understand why NVIDIA built a hybrid Mamba-Transformer architecture for this workload, look at how an agentic RTL loop actually consumes tokens.
In a typical autonomous generation loop, an LLM does not just emit a Verilog module and walk away. The orchestrator takes the generated RTL, feeds it to a simulator (such as Verilator, Icarus, or VCS), captures the standard out and error logs, appends those logs to the prompt context, and tells the model to repair its mistakes.
If the design fails a lint check or an assertion, the entire multi-thousand-token trace gets reprocessed. In a pure Transformer model, every iteration suffers quadratic KV cache scaling as the conversation history grows. When you feed a 2,000-line simulation log with raw signal dumps back into the context, inference throughput collapses.
Nemotron 3 Ultra uses Mamba state space model (SSM) layers interleaved with standard multi-head attention. The SSM layers maintain a constant-size hidden state across sequential data, processing long simulation logs and trace outputs with linear complexity. Attention layers are retained selectively to maintain exact token-to-token retrieval across module definitions, interface declarations, and port bindings.
NVIDIA's reported figure of 6,629 tokens per iteration reflects this loop in action. It is not the size of the generated RTL file. It represents the prompt, the generated code, the compiler diagnostics, the lint output, and the tool error logs passing back and forth across 2 to 4 self-correction cycles.
At 55B active parameters, running at NVFP4 precision, that token consumption is practically deployable on local enterprise infrastructure. A small dual-H100 or four-L40S node can host the quantized weights and sustain real-time agent loops without incurring massive API billing. But speed and cost are only half the battle. The critical question is what the model produces inside that loop.
The CVDP Benchmark vs Tapeout Reality
The 97.1% pass rate comes from evaluations on the Comprehensive Verilog Design Problems (CVDP) benchmark, alongside VerilogEval. CVDP is a clear step forward from early, toy-grade datasets like HumanEval-Verilog, which tested little more than 4-bit multiplexers and single-stage counters. CVDP covers nine distinct functional domains, including:
- Arithmetic units (pipelined multipliers, FP adders, divider arrays)
- Finite state machine controllers with complex transition guards
- Memory and FIFO interfaces (synchronous, circular, credit-based)
- Packet parsing and framing logic (AXI-Stream decoders, header splitters)
- Register files and configuration memory spaces
- DSP pipeline building blocks
- Bus interface bridges and crossbars (APB, AHB, AXI-Lite)
- Clock and reset management skeletons
- Verification monitors and assertion wrappers
Passing CVDP means the agent can take an English or structured specification, write a module header, implement internal logic, parse Verilator compilation failures, fix basic syntax errors, and produce a waveform that matches the expected testbench vectors.
In standard software engineering, passing unit tests is often 80% of the job. In digital silicon, passing a functional testbench is roughly 25% of the job.
Testbenches written for automated LLM benchmarks are almost universally behavioral. They check input-to-output functional mappings across a finite set of clock cycles. They do not run formal property verification across the full state space. They rarely run physical synthesis against a specific standard cell library, and they rarely extract parasitics to run gate-level simulations with back-annotated SDF timing.
When language models write RTL to satisfy a pure functional testbench, they take architectural shortcuts. They write code that behaves like software, because their training data contains millions of lines of code written by students, researchers, and hobbyists who care only whether their simulation runs in ModelSim.
Three Failure Modes Testbenches Miss
There are three specific architectural errors that Nemotron 3 Ultra, like every other frontier model, routinely makes when optimizing purely for functional testbench passes.
1. Inferred Latches and Incomplete Case Trees
When an LLM writes a complex decoder or an execution unit with dozens of control states, it frequently fails to assign default values to every internal register across every execution branch. In behavioral simulation, unassigned variables hold their previous values cleanly. The testbench passes without warning.
When that RTL hits a synthesis tool like Synopsys Design Compiler, Cadence Genus, or Yosys, the synthesis engine sees an unassigned path in a combinational always @(*) block and infers a level-sensitive transparent latch.
// Typical LLM output that passes behavioral sim but creates synthesis latches
always_comb begin
alu_out = 32'h0;
case (opcode)
OP_ADD: alu_out = src_a + src_b;
OP_SUB: alu_out = src_a - src_b;
OP_BRANCH: begin
if (src_a == src_b) begin
branch_taken = 1'b1; // branch_taken not assigned in OP_ADD or OP_SUB
alu_out = target_addr;
end
end
default: alu_out = 32'h0;
endcase
end
Inferred latches destroy timing closure. They complicate static timing analysis (STA), create glitch-sensitive clock networks, and cause catastrophic failure during scan chain insertion and automatic test pattern generation (ATPG). An agentic loop driven solely by a simulation engine like Icarus Verilog will never catch this error. Unless your agentic pipeline explicitly runs a strict linter (like SpyGlass, AscentLint, or verilator --lint-only -Wall) and fails the build on any latch warning, the model will happily keep the code.
2. Blocking vs Non-Blocking Assignment Misuse
Large language models struggle with the operational distinction between blocking (=) and non-blocking (<=) assignments inside sequential processes. When generating complex pipelined logic, models often mix assignment styles inside an always_ff @(posedge clk) block to propagate intermediate values across pipeline stages in a single procedural pass.
// Functional in simulation, disaster in gate-level timing
always_ff @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
stage1_reg <= '0;
stage2_reg <= '0;
end else begin
temp_val = stage1_reg ^ mask; // Blocking assignment creates zero-delay intra-assignment
stage2_reg <= temp_val + 1'b1;
stage1_reg <= in_data;
end
end
This code creates race conditions between compilation units and causes simulation-synthesis mismatches. In the behavioral cycle, temp_val evaluates instantly, but the synthesized netlist creates intermediate combinational logic that might fail setup timing against the clock edge. The model sees green ticks on its functional regression suite while producing hardware that cannot run at speed.
3. Asynchronous Clock Domain Crossings (CDC)
When tasked with designing asynchronous FIFOs or multi-rate interfaces, models know the textbook solutions: two-flip-flop synchronizers and Gray-coded pointers. But they consistently fail at the boundary constraints.
A model will generate a 2-FF synchronizer for an entire 8-bit bus without recognizing that multi-bit buses cannot be synchronized independently with simple flip-flop chains due to skew. If bits transition across clock domains at slightly different times, the receiving logic captures illegal intermediate states. The testbench, running with idealized zero-delay delta cycles, will never capture this metastability window unless the verification engineer manually injects random skew and jitter into the simulation harness.
Does Mamba-Attention Fix the State Problem?
Where Nemotron 3 Ultra genuinely helps is in sustaining state across complex, multi-file RTL modules.
Standard transformers hit an attention degradation wall when managing large SystemVerilog packages with deeply nested parameter files, interface bundles, and struct definitions. If a top-level module instantiates six sub-modules, passes 30 parameterized bus widths, and binds external SystemVerilog Assertions (SVA), a standard model frequently hallucinates signal names or inverts polarity between the port map and the instance.
Mamba layers excel at continuous sequence scanning. By running linear state updates, the model keeps the entire hierarchy's port list and parameter set active in its recurrent state. When the attention layers fire, they perform sharp query-key lookups against the specific struct definitions declared 8,000 tokens earlier in the compilation context.
This shows up clearly in interface-heavy designs like AXI-4 crossbars or PCIe header splitters. In our own work testing model architectures on Silicode pipelines, hybrid state space models demonstrate significantly fewer structural hallucination errors (such as dropping ready/valid handshake dependencies or misaligning byte-enable strobes) than pure dense models of equivalent active parameter size.
However, Mamba's linear recurrence has a blind spot: precise multi-hop relational reasoning across distant, unordered context. If a bug fix in a sub-module requires changing a pipeline latency from 3 cycles to 4 cycles, the model must simultaneously update:
- The read latency parameter in the configuration package.
- The valid-signal delay shift register in the control path.
- The credit return counter in the upstream flow controller.
- The output FIFO read enable timing in the downstream consumer.
If these four code locations are separated by thousands of tokens of unrelated RTL, the linear state compression in the Mamba layers can dilute the tight mathematical dependency between the four changes. The attention layers must compensate. When they fail, the agent fixes the sub-module latency but leaves the upstream credit counter untouched, breaking system-level flow control after 500 simulation cycles.
Building a Production-Grade Agentic RTL Pipeline
If you want to use Nemotron 3 Ultra in a real ASIC or FPGA engineering environment, you cannot use a simple "prompt-run-eval" loop. You must construct a multi-stage validation sandbox that forces the model to optimize for hardware physical constraints rather than software execution.
+-------------------------------------------------------------------+
| Agent Orchestrator |
| (Nemotron 3 Ultra 550B MoE) |
+---------------------------------+---------------------------------+
| Generates RTL
v
+-------------------------------------------------------------------+
| Phase 1: Static Lint & Syntax Validation |
| Tools: Verilator (-Wall), SpyGlass, AscentLint |
| Gates: No inferred latches, no mixed blocking/non-blocking, |
| no implicit wire declarations |
+---------------------------------+---------------------------------+
| Clean Lint
v
+-------------------------------------------------------------------+
| Phase 2: Synthesis & Area/Timing Estimation |
| Tools: Yosys / OpenROAD, Synopsys Design Compiler |
| Gates: Standard cell mapping, zero unconstrained paths, |
| slack >= 0.00 ns at target target clock period |
+---------------------------------+---------------------------------+
| Clean Synthesis
v
+-------------------------------------------------------------------+
| Phase 3: Dynamic Simulation & Property Checking |
| Tools: Questa, VCS, SymbiYosys (Formal Verification) |
| Gates: 100% functional coverage, zero SVA assertion failures, |
| CDC structural sign-off |
+-------------------------------------------------------------------+
Stage 1: Aggressive Static Linting
Feed the generated RTL through Verilator with strict warning flags enabled: -Wall --Werror-latch --Werror-style --Werror-caseincomp. If the tool generates a single warning about an unused signal bit, an unhandled case item, or a circular logic dependency, do not attempt simulation. Feed the lint error log directly back to the model. The model must provide clean, lint-passing RTL before any testbench execution begins.
Stage 2: Synthesis Pre-Pass
Run the RTL through a fast synthesis shell using Yosys or Design Compiler mapped to a representative open target (like the SkyWater 130nm or NanGate 45nm standard cell libraries). This step takes less than 30 seconds for block-level RTL. It guarantees three critical parameters:
- Is the code actually synthesisable into physical gates?
- Did it infer unwanted latches or asynchronous feedback loops?
- What is the rough cell count and logic depth?
If the synthesis script detects latches or combinatorial loops, pipe the netlist report back to the model with an explicit prompt instruction to rewrite the always_comb block using comprehensive default assignments.
Stage 3: Formal Verification and Constrained Random Simulation
Do not rely on static directed testbenches provided in standard benchmarks. Use an agentic sub-routine to generate SystemVerilog Assertions (SVA) along with the RTL. Feed the design and the assertions to a model checker like SymbiYosys or Cadence JasperGold.
Formal property verification forces the engine to test every possible state transition up to a bounded depth. It instantly uncovers the exact boundary conditions that LLMs fail to consider: backpressure assertions firing when a FIFO is full, back-to-back resets during active transfers, and illegal one-hot state transitions in power-saving modes.
What This Changes for Silicon Teams
Nemotron 3 Ultra does not replace digital design engineers, and it does not allow a software engineer to design an ASIC. Anyone who claims otherwise has never had to explain a silicon respin to an executive board.
What it actually changes is the velocity of initial IP scaffold creation.
Writing boilerplate AXI stream adapters, register slices, memory-mapped peripheral wrappers, and parameterized crossbars is tedious, repetitive work. It is precisely the kind of work that consumes weeks of junior engineer time during the early phases of an SoC project.
Nemotron 3 Ultra executes these routine structural translations at massive throughput. Because the model is open and can be quantized to NVFP4, design teams can run instances completely on-premise, entirely behind corporate air-gaps, ensuring that proprietary microarchitecture specifications and RTL codebases never touch external cloud APIs.
The leverage is real, provided you treat the model output as untrusted candidate code. The value is not in the 97.1% benchmark pass rate. The value lies in using the model's high throughput to burn 6,000 tokens per loop across automated lint and synthesis checks, arriving at a clean, lint-verified, synthesisable RTL block in ten minutes instead of two days.
Practical Steps to Take Now
If you are planning to test Nemotron 3 Ultra in your own RTL workflows, do not test it on basic arithmetic or FIFO prompts. Put it through your team's actual integration tests:
- Pull the BF16 or NVFP4 checkpoints from Hugging Face and deploy them on a local inference server using vLLM or TensorRT-LLM with tool-calling capabilities enabled.
- Build a rigid orchestrator harness that wraps a local linter and logic synthesizer around the model loop. Hard-fail any generation that produces a lint warning.
- Test the model against your most annoying legacy IP interfaces: take an internal proprietary bus protocol, provide the interface specification in markdown, and ask the model to generate a bridge to AXI4-Lite with full backpressure handling.
- Run formal property checks against the generated handshake signals. Specifically verify that the
readysignal never depends combinationally onvalidto prevent deadlocks across interconnected IP cores.
The open availability of frontier-scale MoE models optimized for long context brings real utility to hardware design automation. But in hardware, functional simulation is only an opinion. The static timing report and the silicon netlist are the only things that matter.
Sources
- https://developer.nvidia.com/blog/nvidia-nemotron-3-ultra-leads-open-models-on-accuracy-and-efficiency-in-agentic-rtl-coding/
- https://research.nvidia.com/labs/nemotron/Nemotron-3-Ultra/
- https://developer.nvidia.com/blog/nvidia-nemotron-3-ultra-powers-faster-more-efficient-reasoning-for-long-running-agents/
- https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16
- https://arxiv.org/html/2601.13815v1
