MODERN SOC DESIGN · PRESENTATION 10

Modern SoC Verification

From RTL Simulation to Silicon Sign-Off

RTL simulation Formal verification Emulation FPGA prototyping UVM DFT Coverage closure
01

The Verification Challenge

  • 60–70% of SoC development effort is spent on verification — more engineers verify than design
  • State-space explosion — a modern SoC with 1010 transistors has 21010 possible states; exhaustive testing is mathematically impossible
  • Bug escape cost — a bug found in silicon costs 1000× more to fix than one caught in RTL simulation
  • Schedule pressure — verification is almost always on the critical path to tape-out
Industry average: ~60% of first silicon respins are caused by logic/functional bugs that escaped verification.

Cost of Bug Escape

Stage FoundRelative Cost
RTL Simulation1×
Gate-Level Sim3–5×
Emulation10–50×
FPGA Prototype50–100×
First Silicon500–1000×
In-Field1000–10,000×
"Verification is the art of proving that a design does what it should — and does not do what it shouldn't."
— Stu Sutherland
Section I

Simulation-Based Verification

RTL simulation · UVM methodology · Assertions · Coverage-driven verification

02

RTL Simulation

The foundation of all digital verification — cycle-by-cycle behavioral modeling

Event-Driven Simulation

  • Principle — evaluate only signals that change; maintain an event queue sorted by simulation time
  • Languages — Verilog/SystemVerilog for RTL and testbench; VHDL in aerospace/defense and European designs
  • 4-state logic — 0, 1, X, Z model unknown and high-impedance states critical for reset and bus behavior
  • Scheduling — Active, Inactive, NBA, Observed, Reactive regions per IEEE 1800 semantics
VCS
Synopsys — compiled sim, fastest single-threaded
Xcelium
Cadence — multi-core parallel simulation
Questa
Siemens — strong debug, UVM integration
Verilator
Open-source — 2-state, cycle-accurate, ~10× faster for synthesizable code

Simulation Speed Hierarchy

Behavioral / TLM — 10–100 MHz effective
RTL (2-state, Verilator) — 1–10 MHz
RTL (4-state, VCS/Xcelium) — 100 kHz–1 MHz
Gate-Level Sim (SDF timing) — 1–100 kHz
Transistor-Level (SPICE) — <1 Hz
A full SoC booting Linux at RTL speed (~100 kHz) would take ~28 hours for 10 billion cycles. Emulation is essential.
// Simple directed test in SystemVerilog
module tb_counter;
  logic clk, rst_n, en;
  logic [7:0] count;

  counter dut(.clk, .rst_n, .en, .count);

  initial begin
    clk = 0;
    forever #5ns clk = ~clk;
  end

  initial begin
    rst_n = 0; en = 0;
    #20ns rst_n = 1;
    #10ns en = 1;
    repeat(256) @(posedge clk);
    $finish;
  end
endmodule
03

UVM — Universal Verification Methodology

IEEE 1800.2 standard — the industry-standard framework for reusable, scalable verification

UVM Architecture

Test (extends uvm_test)
Environment (env) — agents + scoreboard + coverage
Agent (active)
Agent (passive)
Sequencer
Driver
Monitor
Scoreboard & Coverage Collector
DUT (Design Under Test)
  • Sequencer — generates stimulus transactions
  • Driver — converts transactions to pin-level signals
  • Monitor — observes interface, creates transactions
  • Scoreboard — reference model comparison

Constrained Random Verification

class axi_transaction extends uvm_sequence_item;
  rand bit [31:0] addr;
  rand bit [7:0]  data[];
  rand axi_burst_e burst_type;
  rand bit [3:0]  len;

  // Constraints focus stimulus on corners
  constraint c_aligned {
    addr[1:0] == 2'b00;  // word-aligned
  }
  constraint c_burst {
    burst_type dist {
      FIXED := 10, INCR := 60, WRAP := 30
    };
  }
  constraint c_len {
    len inside {[0:3], 7, 15};  // AXI legal
  }

  `uvm_object_utils_begin(axi_transaction)
    `uvm_field_int(addr, UVM_ALL_ON)
    `uvm_field_array_int(data, UVM_ALL_ON)
    `uvm_field_enum(axi_burst_e,
                    burst_type, UVM_ALL_ON)
  `uvm_object_utils_end
endclass
Key insight: Constrained random + coverage-driven verification finds corner-case bugs that directed tests miss. Typically achieves 10× higher bug-find rate per engineer-hour.
04

SystemVerilog Assertions (SVA)

Embedding design intent directly into RTL — continuous checking across all simulation cycles

Immediate vs Concurrent

TypeTimingUse Case
ImmediateCombinational (no clock)Checking invariants in procedural code
ConcurrentClock-based, multi-cycleProtocol checking, temporal properties
// Immediate assertion
always_comb begin
  assert (onehot(grant))
    else $error("Grant not one-hot!");
end

// Concurrent: AXI handshake protocol
property axi_handshake;
  @(posedge clk) disable iff (!rst_n)
  valid |-> s_eventually ready;
endproperty
assert property (axi_handshake)
  else $error("AXI handshake timeout");

// Concurrent: data stability
property axi_stable;
  @(posedge clk) disable iff (!rst_n)
  (valid && !ready) |=>
    ($stable(addr) && $stable(data));
endproperty
assert property (axi_stable);

Property & Sequence Syntax

// Sequence: request followed by grant
sequence req_grant_seq;
  req ##[1:5] gnt;  // 1-5 cycle delay
endsequence

// Property: grant must be followed by ack
property grant_ack_p;
  @(posedge clk) disable iff (!rst_n)
  gnt |-> ##[1:3] ack;
endproperty

// Cover property for functional coverage
cover property (
  @(posedge clk)
  req ##1 gnt ##1 ack
);

Assertion-Based Verification Methodology

  • White-box — assertions inside RTL modules; designers write them during coding
  • Black-box — interface protocol monitors; verification engineers author
  • Formal — same SVA properties proven exhaustively by formal tools
  • Coverage — cover property tracks when specific scenarios occur
Industry best practice: ≥2 assertions per FSM state, protocol checkers on every bus interface, and X-propagation assertions on all resets.
05

Coverage-Driven Verification

Measuring what you have verified — the quantitative backbone of verification signoff

Coverage Types

TypeMeasuresSource
LineWhich RTL lines executedAutomatic
Branchif/else/case paths takenAutomatic
ToggleSignal 0→1 and 1→0Automatic
FSMStates visited, arcs traversedAutomatic
FunctionalSpec scenarios hitManual
CrossCombinations of coverpointsManual
covergroup axi_cg @(posedge clk);
  cp_burst: coverpoint burst_type {
    bins fixed = {FIXED};
    bins incr  = {INCR};
    bins wrap  = {WRAP};
  }
  cp_size: coverpoint size {
    bins byte   = {0};
    bins hword  = {1};
    bins word   = {2};
    bins dword  = {3};
  }
  // Cross: all burst x size combos
  bxs: cross cp_burst, cp_size;
endgroup

Coverage Closure Process

1. Write Coverage Model (from spec)
↓
2. Run Constrained Random Regressions
↓
3. Analyze Coverage Holes
↓
4. Refine Constraints or Add Directed Tests
↓
5. Merge Coverage Across Seeds & Tests
↓
6. Signoff: Code ≥95%, Functional ≥100%
Typical signoff targets:
Line ≥ 95%  |  Branch ≥ 90%  |  Toggle ≥ 85%  |  FSM ≥ 100%  |  Functional ≥ 100%

Unreachable code/states must be formally proven unreachable and waivered — never silently excluded.

Section II

Formal & Static Methods

Model checking · Equivalence checking · CDC/RDC analysis · Lint

06

Formal Verification

Exhaustive mathematical proof — no stimulus required, no coverage gaps

Model Checking Fundamentals

  • Bounded — proves properties hold for N clock cycles (e.g., N=50); cannot guarantee behavior beyond bound
  • Unbounded — proves property holds for all reachable states forever; uses induction, k-induction, interpolation, or IC3/PDR
  • Counterexample — if property fails, tool provides minimal waveform trace to reproduce the bug
  • Complexity — state space is 2N where N = number of state bits; formal typically effective on blocks ≤500K gates
Jasper
Cadence — market leader in formal apps
VC Formal
Synopsys — tight VCS/Verdi integration
Questa Formal
Siemens — strong CDC/formal combo
SymbiYosys
Open-source — Yosys + SMT solvers

Property Types

PropertyMeaningExample
Safety"Bad thing never happens"No deadlock on bus
Liveness"Good thing eventually happens"Every request gets response
Fairness"No starvation"Arbiter grants all ports
// Formal assumptions + assertions
// Prove FIFO never overflows
module fifo_formal #(DEPTH=16) (
  input logic clk, rst_n, push, pop
);
  logic [$clog2(DEPTH):0] count;

  // Assumption: environment constraint
  assume property (@(posedge clk)
    disable iff (!rst_n)
    (count == DEPTH) |-> !push);

  // Assertion: count never exceeds DEPTH
  assert property (@(posedge clk)
    disable iff (!rst_n)
    count <= DEPTH);

  // Liveness: FIFO eventually drains
  assert property (@(posedge clk)
    disable iff (!rst_n)
    (count > 0) |-> s_eventually (count == 0));
endmodule
07

Formal Verification Apps

Pre-packaged formal solutions for common SoC verification challenges

Connectivity

Prove that SoC integration wiring is correct: interrupt routing, MUX selections, address decode, pin connections. Replaces 1000s of directed tests.

Jasper Connectivity / VC Formal CC

Register Verification

Automatically verify CSR read/write behavior, field access policies (RW, RO, W1C, RC), reset values against register spec (RALF/IP-XACT/SystemRDL).

Jasper FRV / VC Formal REG

Deadlock & Livelock

Exhaustively prove that protocol FSMs cannot deadlock or enter infinite non-progress loops. Critical for NoC routers, cache coherence, arbiters.

Jasper DLV / VC Formal DPV

Security Path

Prove that secure assets (keys, fuses, privileged registers) are unreachable from untrusted interfaces. Information flow analysis across all possible execution paths.

Jasper SPV / Radix-S

X-Propagation

Detect where X-optimism in RTL simulation masks real hardware behavior. Proves that unknown values on reset or uninitialized memories cannot reach functional outputs.

Jasper X-Prop / Questa X-Check

Equivalence Checking

LEC (Logic Equivalence Checking): prove RTL ≡ gate-level netlist after synthesis. Sequential equivalence for retiming, clock-gating, datapath optimization.

Conformal LEC / Formality / SLEC

08

Static Analysis — Lint, CDC, RDC

Catch structural and multi-clock bugs without simulation

Lint — RTL Code Quality

  • Spyglass (Synopsys) — industry standard for lint + CDC + power
  • Ascent (Real Intent) — advanced X-analysis and reset checking
  • Catches: width mismatches, undriven nets, incomplete sensitivity lists, inferred latches, multi-driven signals, naming convention violations
  • Mandatory step before synthesis; clean lint = fewer downstream surprises

CDC — Clock Domain Crossing

  • Single biggest cause of silicon respins — metastability bugs are non-deterministic, nearly impossible to catch in simulation
  • Structural checks: synchronizer detection, FIFO depth adequacy, convergence, reconvergence
  • Formal CDC: prove data coherency and no data loss across domains using formal methods

RDC — Reset Domain Crossing

  • Similar to CDC but for asynchronous reset release across domains
  • Verify reset sequencing, ordered de-assertion, and no glitches during reset release
  • Critical in power-managed SoCs with many reset domains

Power-Aware Checks

CheckStandardCatches
IsolationUPF (IEEE 1801-2024)Missing isolation cells on power boundary crossings
RetentionUPF (IEEE 1801-2024)State lost on power-down without save/restore
Level ShiftUPF (IEEE 1801-2024)Voltage domain crossings without level shifters
Power SeqUPF (IEEE 1801-2024)Incorrect power-up/down sequencing
Modern SoCs: 50–200+ clock domains, 10–30+ power domains. Automated static analysis is the only viable approach.
Section III

Hardware-Assisted Verification

Emulation · FPGA prototyping · Bridging simulation and silicon

09

Emulation

Custom hardware to run full SoC designs at 1–10 MHz — 100–1000× faster than simulation

Emulation Platforms

PlatformVendorArchitectureCapacity
Palladium Z3CadenceCustom processorsup to 48B gates
Veloce StratoSiemensCustom ASIC15B gates
ZeBu-200 / ZeBu Server 5SynopsysAMD Virtex UltraScale+ VU19PZeBu-200 15 BG; Server 5 >60 BG modular

Compile Flow

RTL + Testbench Partition
↓
Synthesis & Mapping to Emulator
↓
Partition & Place Across Emulator Units
↓
Run at 1–10 MHz (ICE or SCE mode)

Use Cases

  • Software-driven verification — boot real firmware, RTOS, Linux kernel; find HW/SW co-design bugs
  • Long-sequence tests — run billions of cycles: PCIe link training, DDR initialization, USB enumeration
  • Power estimation — FSDB/VCD activity dumped from emulator fed to power analysis tools (Joules/PrimeTime PX)
  • Low-power verification — UPF-aware emulation validates power domain transitions at speed
ICE Mode
In-Circuit Emulation — real external interfaces (PCIe, Ethernet)
SCE Mode
Simulation Co-Emulation — testbench in simulator, DUT in emulator
Speed
1–10 MHz (design dependent)
Cost
$5M–$50M+ per system
Compile
Hours to days for full SoC (incremental: minutes)
Key advantage: emulation is deterministic and fully debuggable (waveform dump) — unlike FPGA prototyping.
10

FPGA Prototyping

Running SoC designs on multi-FPGA boards at near-real-time speeds

FPGA Prototyping Platforms

PlatformVendorSpeedUse
HAPS-100Synopsys~200 MHzPre-silicon SW dev
Protium X3Cadence~100 MHzHW/SW co-validation (2024 launch; 2× capacity vs X2)
CustomVarious50–150 MHzCustomer-specific

Partitioning Challenges

  • Multi-FPGA partitioning — large SoCs span 4–16+ FPGAs; inter-FPGA routing adds latency and reduces frequency
  • Memory mapping — on-chip SRAMs must be mapped to FPGA block RAMs or external DRAM
  • Clock conversion — multi-clock designs require careful PLL configuration across FPGAs
  • Hard IP — SerDes, analog blocks, and custom memory macros need behavioral models or bypass

Emulation vs FPGA Prototyping

FeatureEmulationFPGA Proto
Speed1–10 MHz50–200 MHz
DebugFull waveformLimited probes
Compile timeHoursHours–days
DeterminismDeterministicNon-deterministic
Cost$5M–$50M$50K–$500K
Primary useHW verificationSW development
Early software development: FPGA prototypes enable OS bring-up, driver development, and application benchmarking 6–12 months before silicon. This is often the primary ROI justification.
Section IV

SoC-Level Verification

Integration verification · DFT · Performance validation · System-level scenarios

11

SoC Integration Verification

Proving the whole is correct when the parts are assembled

Integration Checklist

  1. IP connectivity — all ports wired, no dangling nets, correct polarity (active-high/low), width matching
  2. Address map — decode logic matches spec; no aliasing or holes; all CSRs accessible from correct masters
  3. Interrupt routing — all IRQ lines reach GIC/PLIC; edge/level sensitivity correct; no missed or spurious interrupts
  4. Clock & reset topology — each IP gets correct clock and reset; gating/ungating sequences verified
  5. Power domain mapping — isolation/retention cells correctly inserted; power sequencing validated
  6. DMA paths — all DMA channels reach intended memory regions through correct NoC routes

Integration Verification Methods

Formal

Connectivity checking (Jasper/VC Formal) proves wiring against spreadsheet spec. 100% completeness.

Simulation

C-based tests running on embedded CPU; boot sequence, register access, interrupt exercises.

Emulation

Full firmware boot; OS driver bring-up; real-world traffic scenarios at ~MHz speed.

SoC Verification Architecture

SoC-Level Tests (C/UVM/PSS)
Subsystem Verification (CPU+cache, GPU+mem)
IP-Level UVM Environments (reused)
VIP Libraries (AXI, AHB, PCIe, DDR, USB, AMBA)
RTL Design (SoC top-level)
12

DFT — Design for Testability

Enabling post-silicon manufacturing test to catch defects in fabricated chips

DFT Techniques

TechniquePurposeCoverage Target
ScanConvert FFs to scan chains; shift-in test patterns, capture, shift-out≥95% stuck-at
ATPGAutomatic Test Pattern Generation for stuck-at, transition, path-delay faults≥98% combined
LBISTLogic Built-In Self-Test — on-chip PRBS generation + MISR compressionIn-field test
MBISTMemory BIST — march algorithms for SRAM/ROM defect detection100% memory

Scan Architecture

ATE (Automatic Test Equipment)
↓
Scan-In → Scan Chains (1000s) → Scan-Out
Codec: Decompressor ↔ Compressor
Combinational Logic (DUT)

JTAG / IEEE 1149.1

  • TAP Controller — 4-wire interface (TCK, TMS, TDI, TDO) + optional TRST
  • Boundary Scan — test board-level connectivity without physical probes; each pin has a boundary scan cell
  • IJTAG (IEEE 1687) — hierarchical access to on-chip instruments (MBIST, sensors, debug) through scan infrastructure
  • IEEE 1838 — 3D test access for die-to-die testing in stacked packages

Manufacturing Test Economics

Test time
100ms–2s per die (cost: $0.01–$0.10/sec on ATE)
DPPM
Target <10 Defective Parts Per Million
Test cost
5–15% of total chip manufacturing cost
Pattern count
10K–1M+ patterns (compressed on-chip)
DFT insertion happens during synthesis — scan replacement, compression logic, BIST controllers are added by tools (DFT Compiler, Tessent, Modus).
13

Performance Verification

Ensuring the SoC meets bandwidth, latency, and throughput targets under real traffic

Traffic Generation & Analysis

  • Synthetic traffic generators — programmable AXI/CHI masters that inject controlled read/write patterns with configurable burst size, outstanding transactions, and address distribution
  • Trace-driven replay — capture real workload traces (from FPGA prototype or architecture sim) and replay on RTL
  • Performance monitors — on-chip counters for latency histograms, bandwidth measurement, queue occupancy, stall cycles

Key Performance Metrics

Read Latency
Cycles from AXI AR to R-last (target: <100 cycles to DDR)
BW Utilization
Achieved / theoretical peak (target: >80%)
QoS Violation
% transactions exceeding deadline (target: 0%)
Interconnect Contention
NoC link saturation under worst-case traffic

NoC Performance Validation

CPU Cluster
GPU
NPU
DMA
NoC (Network-on-Chip) — QoS, arbitration, routing
DDR MC 0
DDR MC 1
SRAM
PCIe/CXL

Memory Subsystem Verification

  • DDR protocol verification — VIP checks timing (tRCD, tRP, tRFC), command sequencing, refresh, and training
  • Cache coherency — ACE/CHI protocol checks; coherence race conditions; snoop filter correctness
  • End-to-end data integrity — ECC injection, poison propagation, and error reporting paths
Performance bugs are often found late because they require full-chip simulation or emulation with realistic traffic — plan for dedicated performance regression suites.
Section V

Modern Challenges

AI/ML SoC verification · Verification signoff · Emerging tools and methods

14

AI/ML SoC Verification

Unique challenges when verifying neural processing units and accelerator datapaths

Systolic Array Verification

  • Matrix multiply correctness — verify NxN PE arrays against golden reference for all supported precisions (FP32, FP16, BF16, FP8, INT8, INT4)
  • Dataflow validation — weight-stationary, output-stationary, and row-stationary patterns; verify data movement matches architecture spec
  • Boundary conditions — non-square matrices, partial tiles, zero padding, accumulator overflow/underflow
  • Numerical precision — FP8 (E4M3/E5M2) rounding modes, denormal handling, NaN/Inf propagation, mixed-precision accumulation (e.g., FP8 multiply → FP32 accumulate)

DMA Engine Challenges

  • Multi-dimensional tensor DMA: strided access, transpose, tiling
  • Outstanding transaction management across multiple channels
  • Coherency with CPU caches when sharing data buffers
  • Descriptor chain verification: linked-list DMA, scatter-gather

Multi-Clock NPU Domains

DomainFrequencyCDC Challenge
PE Array1–2 GHzWeight load from SRAM domain
SRAM Ctrl1–1.5 GHzActivation shuffle between banks
NoC Interface0.5–1 GHzAXI async FIFO crossings
Config/CSR200–500 MHzRegister access from APB domain

End-to-End Inference Validation

  • Golden model — PyTorch/TensorFlow reference output (bit-accurate after quantization)
  • Compiler verification — verify that the NPU compiler's generated command stream produces correct layer-by-layer outputs
  • Full-network tests — run ResNet-50, BERT, GPT inference on emulator; compare output tensors against golden (tolerance: ≤1 ULP for INT, ≤0.1% relative for FP)
AI verification trend: using ML models to guide stimulus generation — reinforcement learning agents that maximize coverage.
15

Verification Signoff

The systematic process of declaring a design verified and ready for tape-out

Regression Management

  • Nightly regressions — 10K–100K+ test seeds run across server farm; results triaged by morning
  • Seed management — failed seeds saved and replayed for debug; passing seeds archived for coverage
  • Coverage merging — aggregate coverage across all tests, seeds, and platforms (sim + emulation + formal)
  • Incremental regressions — only re-run tests affected by RTL changes (dependency tracking)

Bug Rate Curves

  • Bug discovery rate plotted over time — must show clear declining trend before signoff
  • Weibull model — project remaining bugs from observed bug-find rate; predict when target bug density is reached
  • All P0/P1 bugs must be resolved; P2 bugs waivered with documented risk

Tape-Out Verification Checklist

CriterionTargetStatus
Functional coverage≥100%PASS
Code coverage (line)≥95%PASS
Code coverage (branch)≥90%PASS
Formal proofsAll convergedPASS
CDC signoff0 violationsPASS
Lint (Spyglass)0 errorsPASS
LEC (RTL vs netlist)EquivalentPASS
DFT coverage (ATPG)≥98%PASS
Bug rateDeclining ≥4 weeksPASS
Open P0/P1 bugs0PASS
Formal signoff: all formal properties must reach proven, bounded-proven (N≥50), or waivered with justification. No inconclusive results at tape-out.
16

Verification Tools Landscape

The three major EDA vendors and the growing open-source ecosystem

Category Synopsys Cadence Siemens EDA Open Source
RTL Simulation VCS Xcelium Questa Sim Verilator, Icarus
Debug Verdi SimVision / Indago Questa Visualizer GTKWave, Surfer
Formal VC Formal Jasper Questa Formal SymbiYosys, modelchecker
Emulation ZeBu Server 5 / ZeBu-200 Palladium Z3 Veloce CS —
FPGA Proto HAPS-200 / HAPS-100 Protium X3 Veloce proFPGA LiteX, custom
Lint / CDC Spyglass JasperGold CDC Questa CDC Verilator lint, SVLint
DFT DFT Compiler Modus Tessent —
Coverage Verdi Coverage vManager / IMC Questa CoverCheck —
UVM Framework IEEE 1800.2 — all three support standard UVM cocotb (Python), CHISEL/ChiselTest, pyuvm

Open-Source Momentum

Verilator — cycle-accurate C++ sim, now supports UVM subset, multi-threading, and is the default for RISC-V verification. cocotb — Python-based testbench framework gaining traction for rapid prototyping and ML-driven test generation.

Portable Stimulus (PSS)

Accellera PSS 3.0 (2024) — write test intent once, generate tests for simulation, emulation, FPGA, and post-silicon. 3.0 adds behavioural coverage (scenario-level coverpoints). Declarative constraint-based approach.

17

References & Further Reading

IEEE 1800-2023 — SystemVerilog Unified Hardware Design, Specification, and Verification Language LRM (supersedes 1800-2017; free via IEEE GET)
IEEE 1800.2-2020 — Universal Verification Methodology (UVM) standard
Accellera PSS 3.0 (2024) — Portable Test and Stimulus Standard; adds behavioural coverage, supersedes 2.0 / 2.1
Spear, C. — SystemVerilog for Verification, 3rd ed., Springer, 2012
Bromley, J. — SystemVerilog Assertions Handbook, VhdlCohen Publishing
Bergeron, J. et al. — Verification Methodology Manual for SystemVerilog, Springer
Synopsys — VCS, Verdi, ZeBu EP1, Spyglass, DFT Compiler documentation
Cadence — Xcelium, Jasper, Palladium Z2, Modus product literature
Siemens EDA — Questa, Veloce Strato, Tessent technical references
Wilson Research Group — DVCON Functional Verification Study (annual industry survey)
Verilator — verilator.org — open-source SystemVerilog simulator
cocotb — cocotb.org — Python-based verification framework

Presentation built with Reveal.js 4.6 · Saira Semi Condensed + Archivo + Share Tech Mono
Educational use. Code examples provided as-is.