Menu
Coddy logo textTech

What Is A Testbench

CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 73/90。

testbenchは、別のモジュールをテストするために使用される特殊なVerilog moduleです。設計にinputsを与え、outputsが正しいかどうかを確認します。

なぜテストベンチが必要なのでしょうか?

モジュールを構築したら、正しく動作することを確認する必要があります。テストベンチを使うと、次のことができます。

  • モジュールにさまざまな入力値を適用する
  • 出力を観察する
  • 出力が期待どおりか確認する
  • 手動テストなしでこれを自動的に行う

テストベンチと設計モジュールの比較

 設計モジュールテストベンチ
目的ハードウェアを実装する設計モジュールをテストする
ポートがあるか?はい(inputs と outputs)いいえ(自己完結型)
合成可能か?はいいいえ(simulation のみ)

シンプルなテストベンチの例

module testbench;              // ポートなし!

  // 入力と出力は、テスト対象のモジュール(DUT)から来ます。
  reg a, b;                    // 入力用のreg
  wire c;                      // 出力用のwire
  

  // これはモジュールのインスタンス化です — and_gateモジュールのコピーを作成し、dutと名付けます
  and_gate dut (               // DUTをインスタンス化
    .a(a),
    .b(b),
    .c(c)
  );

  // これは、テスト対象のモジュールの入力にテスト値を適用するinitialブロックです。
  initial begin                // テスト値を適用
    a = 0; b = 0; #10;
    a = 0; b = 1; #10;
    a = 1; b = 0; #10;
    a = 1; b = 1; #10;
    $finish;
  end
endmodule

要点

  • testbenchにはポートがありません
  • regは変化する信号(DUTへのinputs)に使用されます
  • wireはDUTからの信号(outputs)に使用されます
  • テスト対象のモジュールはDUT(テスト対象デザイン)と呼ばれます
  • $finishはシミュレーションを終了します

次のレッスンでは、刺激の作成、結果の表示、その他のtestbenchの機能について学びます。

challenge icon

チャレンジ

ANDゲートのmoduleが与えられています。あなたのタスクは、そのtestbenchに不足している部分を追加することです。

やること:

次の部分をtestbenchに追加してください:

  1. Declare reg を inputs ab のために
  2. Declare wire を output c のために
  3. Instantiate and_gate を名前 dut で、ports を接続する

自分で試してみよう

module and_gate (
  input a,
  input b,
  output c
);
  assign c = a & b;
endmodule

module testbench;
  
  // タスク1: 入力 a と b 用の reg を宣言する
  
  
  // タスク2: 出力 c 用の wire を宣言する
  

  // タスク3: and_gate を dut という名前でインスタンス化する
  // .a(a), .b(b), .c(c) を接続する


  initial begin
    a = 0; b = 0; #10 $display("%d & %d = %d", a, b, c);
    a = 0; b = 1; #10 $display("%d & %d = %d", a, b, c);
    a = 1; b = 0; #10 $display("%d & %d = %d", a, b, c);
    a = 1; b = 1; #10 $display("%d & %d = %d", a, b, c);
    $finish;
  end
endmodule
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Verilogオンラインコンパイラ