Hardware Design Verification and Test: Simulation, UVM, Formal Methods, and DFT
設計の正しさ(検証)と製造欠陥検出(テスト)を体系化。RTL/Gateシミュレーション・UVM・形式検証・SVAから、DFT・スキャン・ATPG・MBIST・JTAGまでチップ完成に不可欠な検証/テスト全域を解説。
article technology ja 設計の正しさ(検証)と製造欠陥検出(テスト)を体系化。RTL/Gateシミュレーション・UVM・形式検証・SVAから、DFT・スキャン・ATPG・MBIST・JTAGまでチップ完成に不可欠な検証/テスト全域を解説。Hardware Design Verification and Test: Simulation, UVM, Formal Methods, and DFT
ハードウェア設計検証とテスト:シミュレーション・UVM・形式検証・DFT
半導体チップの完成には「設計は仕様通りか(検証: Verification)」と「製造品は設計通りか(テスト: Test)」という二つの独立した問いに答えなければならない。どちらも失敗すると、数百億円の NRE と 6〜18 ヶ月のテープアウトサイクルが無駄になる。本記事は RTL シミュレーションから形式検証・DFT・ATPG まで、現代のチップ開発で必須の検証・テスト全域をマップする。
検証(Verification)vs テスト(Test)の区別
この二概念の混同は初学者の頻出エラー。明確に区別する。
| 検証(Verification) | テスト(Test) | |
|---|---|---|
| 目的 | 設計が仕様を満たすかの確認 | 製造されたチップに欠陥がないかの確認 |
| 対象 | RTL/ゲートレベルの論理 | 物理的なシリコンダイ |
| タイミング | テープアウト前(設計フェーズ) | テープアウト後(製造後・出荷前) |
| 手法 | シミュレーション・形式検証 | ATPG・スキャン・MBIST・JTAG |
| 欠陥モデル | 論理バグ・タイミング違反 | スタックアット故障・遷移故障・ブリッジ故障 |
両者は相互補完的。設計バグは検証で除去し、製造欠陥はテストで除去する。いずれかを省略すると歩留まり低下または市場品質問題に直結する。
RTL/Gate レベルシミュレーション
シミュレーションは最も基本的な検証手法。HDL(tech-105 参照)で記述したテストベンチから刺激を与え、DUT(Design Under Test)の応答を確認する。
RTL シミュレーション:
- クロック精度・ゲート遅延なしで論理動作を確認。設計初期フェーズに使用。
- ツール:VCS(Synopsys)・Xcelium(Cadence)・Questa(Siemens EDA)。
ゲートレベルシミュレーション(GLS):
- 論理合成後のネットリスト(ゲートとタイミング遅延情報)でシミュレーション。
- SDF(Standard Delay Format)ファイルを使ってタイミング注釈シミュレーションを実行。
- タイミング違反・グリッチ(メタスタビリティ含む)の検出。RTL シミュレーションでは見逃せる問題をキャッチ。
限界:シミュレーションはテストベンチが与えた刺激の組み合わせしか検証できない。全状態空間の網羅は不可能なため、カバレッジ駆動型アプローチ(UVM)が必要になる。
UVM:SystemVerilog ベースの業界標準検証方法論
UVM(Universal Verification Methodology) は Accellera が標準化した SystemVerilog ベースの検証フレームワーク。「制約付きランダムスティミュラス」と「カバレッジ駆動型テスト」を組み合わせ、膨大な状態空間を効率的に探索する。
UVM アーキテクチャの主要コンポーネント:
- Driver:DUT へのスティミュラス生成(トランザクションレベル)
- Monitor:DUT の出力を観測・収集(パッシブ)
- Scoreboard:期待値と実際の出力を比較
- Sequencer:テストシーケンスの制御(ランダム + 制約)
- Agent:Driver + Monitor + Sequencer をまとめた再利用可能ユニット
- Env(Environment):複数 Agent + Scoreboard の結合
ランダム化と制約(constraint random):
SystemVerilog の rand/constraint により、仕様に沿った範囲内でランダムなシナリオを大量生成。人手では思いつかないコーナーケースを自動的に探索できる。
// 例: アドレスを 4 バイト境界に制約しながらランダム生成
rand bit[31:0] addr;
constraint c_align { addr % 4 == 0; }
カバレッジ(Coverage):
- コードカバレッジ:実行済みのステートメント・ブランチ・ステート(ツールが自動計測)
- 機能カバレッジ:設計者が定義した仕様上の重要シナリオの到達度(
covergroup) - アサーションカバレッジ:SVA の
cover文
カバレッジ 100% = 検証完了ではない(質の問題)が、明らかな穴の検出に有効。業界ではコード 100% + 機能 90〜95% 達成を目標とするケースが多い。
SVA(SystemVerilog Assertion)と形式検証
SVA(SystemVerilog Assertion) は設計プロパティをクロック精度で記述する言語。シミュレーション実行中に違反を自動検出するか(動的検証)、形式検証ツールに渡して数学的証明を行う(形式検証)。
SVA 基本構文:
- 即時アサーション(
assert):常に成立すべきプロパティ - 同時アサーション(concurrent):クロック時系列で成立すべきプロパティ
- シーケンス演算子:
##N(N クロック遅延)・|->/|=>(含意)
// AXI 応答遅延が 16 クロック以内のアサーション例
assert property (@(posedge clk) valid |-> ##[1:16] ready);
形式検証(Formal Verification):
シミュレーションと異なり、全状態空間を数学的に探索する。
- プロパティ検査(Property Checking):アサーションが全状態で成立することを証明またはカウンタエグザンプルを生成。JasperGold(Cadence)・VC Formal(Synopsys)が主要ツール。
- 等価性検査(LEC: Logic Equivalence Checking):合成前後のネットリストが機能的に等価かを検証。ECO(Engineering Change Order)後の必須確認。Conformal(Cadence)・Formality(Synopsys)。
- モデル検査(Model Checking):有限状態機械の全経路を BDD/SAT ソルバーで探索。状態爆発(state explosion)が限界。
形式検証の弱点:状態空間が大きいとメモリ/時間が指数爆発(状態爆発問題)。ブロック単位の検証(モジュール分割)や抽象化(bounded model checking)で緩和する。
DFT(Design for Test):製造テスト設計
DFT(Design for Test) は製造後のテスト容易性を設計時に埋め込む技術群。DFT なしでは、製造後の IC にアクセスできる入出力ピン数が少なく、内部ノードの故障を外部から検出できない。
スキャン(Scan Chain): フリップフロップを直列に接続した「スキャンチェーン」を挿入する最も基本的な DFT 技術。テストモード時に TDI → FFn → FFn-1 → … → FF1 → TDO のシリアルパスでテストパターンを入力し、応答を読み出す。現代の ASIC では FF の 95〜100% がスキャン接続される。
ATPG(Automatic Test Pattern Generation): 自動テストパターン生成。故障モデル(stuck-at-0/1、遷移故障、ブリッジ故障)を設定し、各故障を検出するパターンを自動生成。ツール:Tessent(Siemens EDA)・TetraMAX(Synopsys)。
- Stuck-at 故障モデル:信号が 0 または 1 に固着。最も基本的なモデル。
- 遷移故障モデル:信号の 0→1 または 1→0 遷移の遅延/欠陥を検出。高速動作品質に重要。
- 故障カバレッジ:ATPG が生成したパターンで検出できる故障の割合。目標は 99%+ が業界標準。
MBIST(Memory Built-In Self-Test): SRAM・ROM・フラッシュ等のメモリを内蔵の回路でテストする。外部テスタからは届かないメモリ内部ビットを全検査できる。March アルゴリズムが標準的。
圧縮(Scan Compression): ATPG パターン数・テスト時間は回路規模に比例して増大する。Tessent DFTMax・Synopsys DFTMAX 等でスキャンデータを圧縮し、テスト時間・コストを削減。典型的に 10〜100x 圧縮。
JTAG と Boundary Scan
JTAG(IEEE 1149.1) はボードレベルのテスト用標準インタフェース。4 本または 5 本のピン(TDI/TDO/TMS/TCK/TRST)でテスト・デバッグ・プログラミングを実現。
Boundary Scan: チップのパッド(I/O ピン)の周囲にシフトレジスタ(境界スキャンセル)を挿入。ボード上での IC 相互接続の断線・短絡をテスト。PCB レベルの製造テストで必須。
JTAG の拡張用途:
- プロセッサコアのデバッグ(JTAG DP: Debug Port)
- FPGA の設定(コンフィグレーション)
- ICT(In-Circuit Test)との連携
エミュレーションとプロトタイピング
ASIC テープアウト前にシステムレベルの動作検証を高速で行う手段。
- ハードウェアエミュレータ:Palladium Z3(Cadence)・Zebu(Synopsys)。RTL をカスタム ASIC/FPGA で実装し、ソフトウェアシミュレーションの 1000〜10000x の速度を実現。OS ブートやアプリケーション実行も検証可能。
- FPGAプロトタイプ:HAPS(Synopsys)。高速プロトタイプボードに RTL を合成し実機速度で動作検証。EDA ツールとの統合で分割配置・デバッグが可能。
ハードウェアエミュレータ vs FPGA プロトタイプ:前者はセットアップが容易で可視性が高い、後者は実速度動作(数十 MHz〜)で SW テストに有利。
2026 フロンティア
- AI 検証アシスタント:LLM が SVA アサーション自動生成・UVM テストケース補完を支援 [VERIFY]。JasperGold AI Assist・Cadence Verisium 等の新機能。
- PSS(Portable Stimulus Standard:IEEE 2725):Accellera が策定した抽象テストシナリオ記述言語。UVM・C/C++・他環境へ移植可能な検証シナリオを一度書いて再利用。
- Shift-left 検証:設計初期(RTL 前のアーキテクチャフェーズ)から検証を前倒し。SystemC/TLM ベースのモデルで早期バグ発見。NRE 対比でバグ修正コストが 100x 安い。
- AI 故障診断:ATPG テスト後の不良品チェーン解析(Yield Analysis)に LLM/ML を適用し、根本原因特定を自動化 [VERIFY]。
情報カットオフ ~2025-08、confidence: medium 固定。AI 検証アシスタント・AI 故障診断の定量効果 [VERIFY] は 2026-05 時点で外部検証ができていない項目。
アンチパターン早見表
| パターン | 問題 | 対策 |
|---|---|---|
| カバレッジ 100% で検証完了と宣言 | カバレッジは質でなく量。重要シナリオを見逃す可能性 | 機能カバレッジの設計ポイント(重み付け)を仕様から導出 |
| DFT なしでテープアウト | 製造後テスト不能。歩留まり低下を検出できない | 設計フェーズでスキャン挿入・ATPG 計画を立案 |
| 形式検証の状態爆発を無視 | フルチップ形式検証は不可能 | ブロック分割・bounded MC・抽象化で適用範囲を明確化 |
| RTL とゲートレベルの GLS を省略 | タイミング起因のバグが量産後に発覚 | SDF 付き GLS を合成後・P&R 後の 2 回実施 |
| ATPG 故障カバレッジ目標なし | 出荷品質保証なし | 顧客規格(自動車は ISO 26262、~99%)で目標値を定義 |