組み込みテスト
組み込みテストは #[test(test_name)]
アトリビュートでマークすることができます。マークされたブロックはテストとして認識され、 veryl test
コマンドによって実行されます。
組み込みテストにはいくつかの種類があります。
- SystemVerilogテスト
- cocotb テスト
veryl test
で使用される RTLシミュレータについては シミュレータ を参照してください。--wave
オプションで波形を生成することもできます。
SystemVerilogテスト
SystemVerilog テストは inline
指定子で記述することができます。ブロックのトップレベルモジュールはテスト名と同じでなければなりません。
$info
、$warning
、$error
、$fatal
システム関数によるメッセージは Veryl コンパイラにより実行ログとして表示されます。$error
と $fatal
の呼び出しはテストの失敗として扱われます。
以下の例では SystemVerilog のソースコードを embed
宣言で埋め込み、テストとしてマークしています。
#[test(test1)]
embed (inline) sv{{{
module test1;
initial begin
assert (0) else $error("error");
end
endmodule
}}}
cocotb テスト
cocotb テストは cocotb
指定子で記述することができます。テスト対象のモジュール名は #[test]
アトリビュートの第二引数で指定します。
#[test(test1, ModuleA)]
embed (cocotb) py{{{
# cocotb code
}}}