🧪 5.1 シミュレーション結果の確認と波形評価
Simulation Results and Waveform Evaluation
本節では、PoCブロック(FSM、MUX、Adder)を対象に行った Verilogシミュレーション の結果を、波形ファイル(.vcd)を通じて 可視化・検証 する方法を学びます。
単に出力信号が出たかどうかではなく、タイミング関係・フラグの遷移・信号の整合性 を総合的に評価します。
🧰 使用ツール|Tools Used
| 種類|Type | ツール|Tool |
|---|---|
| シミュレータ | Icarus Verilog (iverilog, vvp) |
| 波形ビューア | GTKWave(.vcd ファイル表示) |
🗂️ 対象ブロックと波形ファイル|Target Blocks & Waveform Files
| ブロック|Block | 波形ファイル|VCD File | 検証目的|Purpose |
|---|---|---|
| FSM | fsm.vcd |
状態遷移と完了フラグの確認 |
| MUX | mux.vcd |
選択信号と出力の一致確認 |
| Adder | adder.vcd |
入力A/Bと加算結果・COUTの確認 |
🔍 GTKWaveによる表示方法|GTKWave Usage
以下のコマンドで .vcd ファイルを開きます:
gtkwave fsm.vcd
Makefile に gtkwave 起動ステップを含めると、シミュレーション後に自動表示も可能です。
✅ 表示の工夫|Display Tips
clk,rst_n,start,flag_doneなど主要信号を上部に配置zoom fit機能で全波形を一括表示- グループ化や色分けで視認性向上も可能
🔎 検証観点|Key Evaluation Points
🎯 FSM(状態遷移)
clk立ち上がりで状態が変化しているかstart信号でIDLE → LOAD遷移を確認EXEC状態でflag_doneが1になるかrst_nによりIDLEに戻るか
🔀 MUX(2:1セレクタ)
SEL = 0→ 出力Y = ASEL = 1→ 出力Y = BSEL変化に出力が即時追従しているか
➕ Adder(4bit加算器)
SUM = A + Bが常に正しいか- 桁あふれ(Carry Out)発生時、
COUT = 1を確認
💡 アサーションの活用(発展)|Assertions for Robust Testing
設計内に assert 文を追加すれば、自動的な動作検証が可能です:
always @(posedge clk) begin
if (state == DONE) assert(flag_done == 1);
end
🔧 → 波形を目視確認せずとも、異常検出が可能になります
📘 教材的まとめ|Summary
波形確認は、設計の「正当性の検証」における最初のステップです。
ここでの観察力・検証スキルが、物理設計や実装信頼性に直結します。
🔗 次節への接続|Next Section
📁 5.2 面積・タイミングの評価とレポート解釈
→ OpenLaneレポートをもとに、設計実装の効率や性能を数値的に評価します。