silicode · 2026-10-13 · 10 min

Can ChipStack Agents Optimize RTL Without Breaking Formal Proofs

Cadence added an RTL Generation Agent to ChipStack with PPA feedback. Here is how closed-loop agentic rewrites impact synthesis, LEC, and state machines.

Schematic diagram of digital logic synthesis trees and formal verification logic cones under timing optimization

Cadence expanded its ChipStack AI Super Agent framework by rolling out a dedicated RTL Generation Agent. The vendor pitch targets the most painful handoff in front-end silicon engineering: converting natural language or unstructured block specifications into synthesisable, PPA-optimized register-transfer level code. Cadence claims early customer trials, including evaluations with Honda, demonstrated a 24 percent area reduction and 18 percent power savings compared to standard foundation-model code generation.

For digital designers under aggressive tape-out schedules, automated RTL generation is not a novel pitch. LLMs have been generating functional Verilog for years. The persistent problem has never been generating code that passes a basic simulation testbench. The problem is what happens downstream. Generic code generation tools produce bloated multiplexer trees, unrolled logic with unconstrained fan-out, and convoluted state machines that destroy timing slack and turn logic equivalence checking into a computational nightmare.

Cadence attempts to bridge this gap by closing the loop between LLM code synthesis and its proprietary implementation engines. Instead of relying purely on statistical next-token prediction, the RTL Generation Agent passes intermediate code into synthesis and power analysis engines, reads the resulting timing reports and area numbers, and iteratively prompts itself to refactor the logic.

Understanding how this closed loop behaves, where it provides genuine leverage, and where it threatens formal sign-off requires looking closely at how agentic code refactoring interacts with logic synthesis.

The Anatomy of Closed-Loop RTL Optimization

Standard code models fail at hardware description because they treat Verilog like procedural C. When an autoregressive transformer generates hardware description code, it lacks an internal model of propagation delay, parasitic capacitance, or clock tree insertion. It cannot anticipate that a nested ternary operator will synthesize into an asymmetric multiplexer chain that violates setup time at a 1 GHz clock target.

The ChipStack architecture addresses this by placing the language model inside an iterative execution harness. The agent operates in four distinct phases across its optimization loop:

  1. Initial Structure Generation: The agent ingests high-level specifications and architectural intent, constructing basic module declarations, register maps, and core data paths.
  2. Rapid Physical Synthesis: Rather than relying on simple linting, the code is passed to an internal synthesis engine (leveraging Genus-level estimation) to map the RTL to a target technology library.
  3. Metric Extraction and Reflection: The agent parses the resulting static timing analysis (STA) reports, negative slack paths, area histograms, and dynamic power estimates.
  4. Constraint-Guided Mutation: The model rewires arithmetic operations, inserts pipeline stages, or restructures finite state machines (FSMs) specifically targeting the identified worst negative slack (WNS) or high-leakage cells.
+------------------+      Spec Prompt      +---------------------+
| Architectural    | --------------------> | Language Model      |
| Specification    |                       | (RTL Generator)     |
+------------------+                       +---------------------+
                                                      | Raw Verilog
                                                      v
+------------------+      PPA Metrics      +---------------------+
| Engine Reflection|<--------------------- | Fast Synthesis &    |
| & Prompt Rewrite |   (Slack, Area, pW)   | Early Power Engine  |
+------------------+                       +---------------------+

This loop repeats until the generated block meets the target frequency and area constraints or hits an iteration limit. In theory, this replicates what a senior front-end designer does over three days of microarchitecture tuning. In practice, the mechanisms the model chooses to achieve timing closure often introduce new risks.

How Agents Cut Area and Where They Cheat

When an automated agent is tasked with reducing area or fixing setup timing violations, it searches for syntactic transformations that yield better numbers in the synthesis log. A human designer solves timing problems by rethinking the microarchitecture: splitting transactions into decoupled phases, introducing skid buffers, or balancing pipeline depths across parallel execution units.

An AI agent guided purely by cost-function optimization often takes short cuts. It flattens hierarchical finite state machines into single-hot or monolithic encodings that minimize combinational gate count for a specific cell library, but destroy readability. It merges mutually exclusive execution paths into complex resource-sharing networks that create massive fan-in cones.

Consider a multi-channel arbiter managing four master interfaces competing for shared SRAM buffers. When prompted to cut power and area, an agentic loop frequently identifies that certain control states share identical output assignments. To minimize gate count, it folds distinct states together, removing explicit state transitions and replacing them with complex combinational decode logic driven by data path flags.

// Human-authored microarchitecture: Explicit, decoupled state tracking
typedef enum logic [2:0] {
    IDLE,
    REQ_PENDING,
    BURST_ACTIVE,
    DRAIN_BUFFER,
    ERROR_RECOVERY
} arb_state_e;

// Agent-mutated microarchitecture: Minimized area, compressed control cone
// The agent folded REQ_PENDING and DRAIN_BUFFER into bit-masked logic
always_comb begin
    next_state = state;
    unique case (1'b1)
        state[0]: if (req_raw & ~mask) next_state = 3'b010;
        state[1]: next_state = (burst_cnt == 4'h0) ? (drain_pending ? 3'b100 : 3'b001) : 3'b010;
        state[2]: next_state = error_flag ? 3'b000 : (drain_done ? 3'b001 : 3'b100);
        default:  next_state = 3'b001;
    endcase
end

The folded code may show a 15 percent reduction in cell area during early Genus runs because the logic optimization algorithms exploit the collapsed state space. However, the resulting code presents three severe engineering penalties:

  1. Brittle Timing on Wire Load: The collapsed control logic concentrates multiple high-fanout signals into narrow combinational bottlenecks. While zero-wire-load synthesis models show timing closure, post-place-and-route congestion spikes dramatically because all state transitions now depend on routing across disparate physical regions of the floorplan.
  2. Unmaintainable ECO Paths: When downstream integration reveals an edge-case bug in buffer arbitration, an engineer cannot easily insert an Engineering Change Order (ECO). The state machine has lost its semantic boundaries. Modifying one transition risks silent functional corruption across unrelated operational modes.
  3. Broken Formal Verification Assumptions: Downstream formal tools must evaluate significantly larger combinational cones, exponentially expanding the state space required to prove deadlock freedom or fair bus access.

Synthesis Receipts: Comparing Baseline vs Closed-Loop Agent Output

To understand the actual trade-offs of closed-loop RTL generation versus direct foundation model prompting, we evaluate synthesis and verification metrics across typical multi-stage digital building blocks.

The following data represents an illustrative composite based on benchmark patterns observed across iterative agent runs and standard commercial front-end tool flows.

PPA and Verification Metrics for 64-Bit Cryptographic Core (28nm Library Target)

Generation Method Target Freq (MHz) Worst Negative Slack (ps) Total Cell Area (um²) Dynamic Power (mW) Formal LEC Proof Time (sec) Lint Violations (Warning/Error)
Foundation LLM (Zero-Shot) 800 -142 ps (Violated) 12,450 18.2 14.2 s 18 / 2
Foundation LLM + Verilator Loop 800 -88 ps (Violated) 11,800 17.5 22.8 s 4 / 0
Closed-Loop PPA Agent (Genus Loop) 800 +12 ps (Closed) 9,840 14.1 184.6 s 0 / 0
Senior RTL Engineer Baseline 800 +35 ps (Closed) 10,210 13.8 8.4 s 0 / 0

Setup note: Composite illustrative data modeling a 64-bit pipelined AES-GCM data path synthesized against a standard 28nm high-performance cell library. Formal proof time measured using bounded model checking for functional equivalence against reference behavioral C models.

The numbers reveal the exact trade-off silicon teams face. The closed-loop synthesis agent successfully achieves timing closure (+12 ps slack) and reduces area down to 9,840 um², matching or slightly outperforming human baseline area on this isolated block. It completely eliminates lint errors because the internal synthesis engine enforces syntax compliance.

However, look at the formal equivalence checking (LEC) and bounded model checking metrics. The proof time for the closed-loop agent output jumps by more than an order of magnitude (184.6 seconds versus 8.4 seconds for human-authored RTL). The agent achieved timing closure by restructuring combinational logic across register boundaries and retiming internal signals without preserving named register points. For a single block, three minutes of proof time is trivial. Scaled across a sub-system with two hundred blocks, this structural mutation creates verification stalls that can delay regressions by days.

The Upgrade Flow: Modifying Legacy RTL Without Breaking CDC

Cadence highlights an "RTL upgrade flow" in ChipStack, intended to take legacy RTL modules and adapt them to new PPA targets or updated bus interfaces from high-level change prompts. This addresses a massive real-world pain point: semiconductor companies rarely write designs from scratch. Most projects involve porting an existing IP core from AXI4 to CHI, or adding a low-power retention state to a legacy block.

Modifying legacy code is where agentic models face their most dangerous failure modes, specifically around Clock Domain Crossing (CDC) and reset synchronization.

When an engineer prompts an agent to "add an asynchronous FIFO buffer and support low-power clock gating on the receiver interface," the agent parses the request and inserts the synchronization registers and clock-gating cells (ICGs). But language models struggle to maintain the strict structural disciplines required for formal CDC sign-off.

Common failure patterns in agent-upgraded legacy code include:

  • Unsynchronized Control Signals in Mixed Datapaths: The agent synchronizes the valid and ready handshake signals through a standard dual-flip-flop synchronizer, but passes accompanying data bus lines through direct combinational muxes without ensuring the data remains stable across clock domain boundaries.
  • Convergent Synchronization Paths: The agent attempts to optimize latency by synchronizing two individual status bits independently through parallel 2-FF synchronizers, then recombines them in the destination clock domain via combinational logic. This introduces dynamic reconvergence glitches that standard lint and simulation miss entirely, but which cause catastrophic failure in silicon.
  • Glitchy Reset Deassertion: When adding low-power states, the agent often inserts synchronous reset logic into asynchronously reset register banks without instantiating explicit reset-synchronizer macros, causing reset recovery and removal timing violations across multi-clock boundaries.

An RTL upgrade flow that closes PPA metrics on paper can quietly invalidate months of CDC and reset verification that had already been closed on the legacy IP.

Clock Domain A (Fast)                    Clock Domain B (Slow)
+-------------------+                    +-------------------+
| State Machine A   |                    | State Machine B   |
| Data[31:0] Out    |------------------->| Data[31:0] In     |
| Valid Out         |--+              +->| Valid In          |
+-------------------+  |   2-FF Sync  |  +-------------------+
                       +--->[D][Q]->[D][Q]--+
                       
  WARNING: Agentic optimization frequently routes Data lines directly
  while synchronizing Valid, creating race conditions if Data hold times
  do not match destination domain capture edges.

A Decision Framework for Evaluating Agentic RTL Tools

Silicon teams evaluating agentic front-end tools like Cadence ChipStack must look past vendor headline metrics of raw code throughput or isolated area reduction. To prevent front-end generation gains from turning into back-end verification disasters, use the following operational framework before integrating AI agents into production tape-out flows:

1. Require Structural Invariance Rules

Do not give the agent unrestricted freedom to mutate RTL hierarchy. Enforce rigid boundaries where the model is forbidden from flattening FSMs, retiming registers across module boundaries, or removing explicit state enumerations. If an agent cannot achieve timing closure while preserving human-readable and formally verifiable state structures, the architectural microarchitecture must be redesigned at the prompt level, not patched via combinational tricks.

2. Isolate Generation to Leaf-Level Accelerators

Agentic RTL generation delivers maximum value on mathematically bounded leaf modules: CRC generators, floating-point units, FIR filter taps, encryption accelerators, and pixel format converters. These blocks feature well-defined mathematical specifications and clean input-output contracts. Avoid using agentic generation for control-heavy SoC fabric, interrupt controllers, power-management units (PMUs), or crossbar interconnects where multi-domain interactions dominate.

3. Couple Generation Directly to Formal Sign-Off

A PPA-driven feedback loop is incomplete if it only checks synthesis and timing. The inner optimization loop must include automated Formal Equivalence Checking (LEC/Formality) and automated assertion coverage. If an agent mutation improves dynamic power by 10 percent but causes formal equivalence checking to drop structural matching points or exceed proof bounds, the mutation must be automatically rejected.

4. Zero Trust on Clock and Reset Structures

Never allow an agent to write custom synchronizers, clock dividers, or reset-sequencing logic. All Clock Domain Crossing logic must be instantiated strictly as pre-hardened, pre-verified structural IP cells from your standard design library. The agent should only connect these hardened macros to its generated data paths.

What This Means for Silicode

At Silicode, our stance on generative front-end design has always been rooted in strict verification reality: plausible Verilog is worthless without deterministic mathematical proof. The introduction of tools like Cadence's RTL Generation Agent validates that raw LLM text output must be grounded in physical EDA feedback loops.

Silicode's approach focuses on verified RTL, testbenches, and evidence. Instead of letting models mutate code into opaque netlists to satisfy narrow timing metrics, Silicode enforces clean microarchitectural structures, strict SystemVerilog assertions, and verifiable formal contracts from the initial prompt. Closed-loop optimization only serves engineering teams when the resulting RTL can be audited, simulated, and formally proven across every stage of the silicon lifecycle.

The Real Bottleneck in Modern Silicon

The fundamental constraint in chip design has not been the speed at which engineers can type Verilog. Writing RTL represents roughly 15 to 20 percent of the total front-end design cycle. The remaining 80 percent is consumed by architectural definition, verification plan execution, corner-case debugging, formal property proving, and timing sign-off.

Tools that accelerate spec-to-RTL conversion and automate low-level PPA tuning are powerful assets for small silicon teams trying to out-build larger incumbents. However, if those tools achieve PPA targets by generating structurally compromised hardware description code, they simply shift the schedule risk downstream into physical verification and post-silicon bring-up.

The engineers who succeed with the new wave of EDA agents will not be those who trust push-button autonomy. They will be the teams that construct the most rigorous automated continuous integration harnesses around those agents, validating every line of generated logic against formal properties, strict lint rules, and physical implementation constraints before that code ever touches a tape-out branch.

Sources

More Silicode Insight

ASICEDARTLVerificationSynthesis