まとめ:テストベンチの全体像
CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 78/90。
チャレンジ
このチャレンジでは、テストベンチに関して学んだすべてのこと(stimulus、display、monitor、dumpfile、dumpvars、およびシステムタスク)をテストします。テスト対象としてXORゲートモジュールが与えられています。
行うこと:
以下を行う完全なテストベンチを作成してください:
- シグナルを宣言する(入力には
reg、出力にはwire) - XORゲートを
dutという名前でインスタンス化する xor_waveform.vcdという名前の波形ファイルを作成する- テストベンチ内のすべてのシグナルを出力(dump)する
- ヘッダーを表示する: "Testing XOR Gate"
$monitorを使用して time、x、y、および z を監視する- それぞれの間に
#10の遅延を挟んで、4つの入力組み合わせ(00, 01, 10, 11)すべてをテストする - 最後に "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