まとめ:テストベンチの全体像
CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 78/90。
チャレンジ
このチャレンジでは、テストベンチについて学んだすべてのこと(刺激、display、monitor、dumpfile、dumpvars、およびシステムタスク)をテストします。テスト対象としてXORゲートモジュールが提供されています。
行うべきこと:
以下の内容を含む完全なテストベンチを作成してください:
- 信号を宣言する(入力には
reg、出力にはwireを使用) - XORゲートを
dutという名前でインスタンス化する xor_waveform.vcdという名前の波形ファイルを作成する- テストベンチ内のすべての信号をダンプする
- ヘッダー "Testing XOR Gate" を表示する
$monitorを使用して、時間、x、y、zを追跡する- 4つの入力の組み合わせ(00, 01, 10, 11)すべてを、各組み合わせの間に
#10の遅延を入れてテストする - 最後に "Test complete" を表示する
$finishでシミュレーションを終了する
自分で試してみよう
module xor_gate (
input x,
input y,
output z
);
assign z = x ^ y;
endmodule
module testbench;
// TODO: xとyのregを宣言する
// TODO: zのwireを宣言する
// TODO: xor_gateをdutという名前でインスタンス化する
// .x(x), .y(y), .z(z) を接続する
initial begin
// TODO: $dumpfile "xor_waveform.vcd" を追加する
// TODO: $dumpvars (0, testbench) を追加する
// TODO: $display "Testing XOR Gate" を追加する
// TODO: time, x, y, z のための $monitor を追加する
// フォーマット: "Time %0t: x=%b, y=%b, z=%b"
// TODO: 4つの組み合わせすべての入力を追加する
// 00, 01, 10, 11 を #10 の遅延付きで
// TODO: $display "Test complete" を追加する
// TODO: $finish を追加する
end
endmodule