絶対に発生してはならない前提条件が検出されたときにアサートするモジュールがあります。モジュールに無効な入力を与えると、このアサートの失敗に基づいて合格するテストを作成するにはどうすればよいですか?
過去に、Verilog PLI を使用してこの種のことを行ったことがあります。私は SystemVerilog を学んでいます。可能であれば、Verilog または SV コンストラクトを使用して、別のプログラムを実行する必要がないようにしたいと考えています。
絶対に発生してはならない前提条件が検出されたときにアサートするモジュールがあります。モジュールに無効な入力を与えると、このアサートの失敗に基づいて合格するテストを作成するにはどうすればよいですか?
過去に、Verilog PLI を使用してこの種のことを行ったことがあります。私は SystemVerilog を学んでいます。可能であれば、Verilog または SV コンストラクトを使用して、別のプログラムを実行する必要がないようにしたいと考えています。
それを行う 1 つの方法は、マクロを使用することです。通常の操作用にマクロを定義し、テスト モード用に別のマクロを定義します。
`define MY_ASSERT(X) assert(X)
`ifdef TEST
`define MY_ASSERT(X) if (!(X)) $display("TEST PASS")
`endif
EDA Playground でのシミュレーション結果によるサンプル テスト: http://www.edaplayground.com/s/4/92
カスタム メッセージを含む別の例を次に示します。
`define MY_ASSERT(X,MSG) assert(X) else $error(MSG)
`ifdef TEST
`define MY_ASSERT(X,MSG) if (!(X)) $display({"TEST PASS with assert:", MSG})
`endif
次のように使用します。`MY_ASSERT(in == 1'b1, "Bad input");