---
id: wiki-2026-0508-hardware-verification
title: Hardware Verification
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [Formal Verification, Chip Verification, RTL Verification]
duplicate_of: none
source_trust_level: A
confidence_score: 0.93
verification_status: applied
tags: [hardware, verification, formal-methods, eda, rtl]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
  language: SystemVerilog
  framework: UVM/JasperGold/SymbiYosys
---

# Hardware Verification

## 매 한 줄
> **"매 silicon 의 mistake 의 cost ≫ software bug — 매 60-70% chip dev effort 가 verification"**. Pentium FDIV (1994, $475M recall) 매 watershed; modern flow 매 simulation (UVM) + formal (property checking) + emulation (Palladium/Veloce) + post-silicon validation. 매 RISC-V 의 open verification revolution (2024-26).

## 매 핵심

### 매 layers
- **Simulation** (UVM/SystemVerilog): constrained-random + coverage-driven.
- **Formal verification**: mathematical proof of property (CDC, register, security).
- **Emulation**: FPGA/dedicated boxes (Palladium, Veloce, ZeBu) — 매 1000× faster than sim, full SoC.
- **Static**: linting, CDC (clock domain crossing), RDC (reset domain).
- **Post-silicon**: bringup on actual die — bugs that escaped pre-si.

### 매 metrics
- **Code coverage**: line/branch/toggle/FSM (necessary, not sufficient).
- **Functional coverage**: covergroups on intent.
- **Bug curve**: bugs/week vs time — closure when asymptote.

### 매 응용
1. CPU verification (RISC-V cores, ARM, x86).
2. AI accelerator verification (TPU, GPU, NPU).
3. Safety-critical (ISO 26262 ASIL-D, DO-254).
4. Security (Spectre/Meltdown class — formal info-flow).
5. Cryptography hardware (AES, post-quantum).

## 💻 패턴

### UVM testbench skeleton
```systemverilog
class my_test extends uvm_test;
  `uvm_component_utils(my_test)
  my_env env;
  function void build_phase(uvm_phase phase);
    env = my_env::type_id::create("env", this);
  endfunction
  task run_phase(uvm_phase phase);
    my_seq seq = my_seq::type_id::create("seq");
    phase.raise_objection(this);
    seq.start(env.agt.sqr);
    phase.drop_objection(this);
  endtask
endclass
```

### SystemVerilog Assertion (SVA)
```systemverilog
property req_ack;
  @(posedge clk) disable iff (rst)
  req |-> ##[1:5] ack;
endproperty
assert property (req_ack) else $error("ack timeout");
cover  property (req_ack);
```

### Formal property (Jasper / SymbiYosys)
```systemverilog
// Prove: FIFO never overflows
property no_overflow;
  @(posedge clk) (count == DEPTH) |-> !push;
endproperty
assert property (no_overflow);
```

### Constrained random
```systemverilog
class transaction;
  rand bit [31:0] addr;
  rand bit [31:0] data;
  constraint c_align { addr[1:0] == 0; }
  constraint c_range { addr inside {[32'h1000:32'h2000]}; }
endclass
```

### Coverage closure
```systemverilog
covergroup cg @(posedge clk);
  cp_addr: coverpoint addr {
    bins low  = {[0:32'h0FFF]};
    bins mid  = {[32'h1000:32'hEFFF]};
    bins high = {[32'hF000:$]};
  }
  cp_kind: coverpoint kind { bins all[] = {READ, WRITE, ATOMIC}; }
  cross cp_addr, cp_kind;
endgroup
```

### Open-source flow (SymbiYosys + Yosys)
```bash
# .sby file
[options]
mode prove
depth 20
[engines]
smtbmc z3
[script]
read -formal design.sv
prep -top top
[files]
design.sv
sby -f design.sby
```

### CDC check (Spyglass-style)
```tcl
read_verilog design.sv
set_top top
analyze cdc
report cdc -severity error
```

## 매 결정 기준
| 상황 | Approach |
|---|---|
| Control logic correctness | Formal (full proof) |
| Datapath / large bugs | UVM constrained-random |
| Full SoC software boot | Emulation |
| Post-RTL freeze | Gate-level sim + FV |
| Security properties | Formal info-flow (Coq/Sail) |
| Performance | Hybrid emulation + RTL profiling |

**기본값**: UVM for blocks + formal for control + emulation for system.

## 🔗 Graph
- 부모: [[Formal Methods]]
- 변형: [[Formal-Verification]]
- Adjacent: [[Model-Checking]] · [[Theorem-Proving]]

## 🤖 LLM 활용
**언제**: SVA generation from spec text, UVM boilerplate scaffold, coverage closure analysis, debugging waveform descriptions.
**언제 X**: signing off tapeout (need human + tool sign-off), safety-critical sole reviewer, novel formal proofs (need expert).

## ❌ 안티패턴
- **Coverage = correctness**: 100% code coverage 매 buggy chips ship 의 still.
- **No assertions**: bugs only at testbench checker → late detection.
- **Re-running same seed**: random ineffective without seed sweep.
- **Skipping CDC**: silicon metastability bugs 매 hardest to debug.
- **Late formal**: starting formal at end of project — embed early on critical blocks.
- **No regression triage**: failing tests left "to investigate" rot.

## 🧪 검증 / 중복
- Verified (Accellera UVM 1.2/2020 LRM, Cadence/Synopsys/Siemens EDA whitepapers, Pentium FDIV postmortem, RISC-V International verification WG 2024-25).
- 신뢰도 A.

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — UVM/SVA/formal/CDC patterns |
