シミュレータ
テストは veryl test で実行することができます。
ネイティブテスト ではVerylの組み込みシミュレータが使用されます。外部シミュレータのインストールは不要です。
ネイティブシミュレータのコード生成バックエンドは veryl test --backend で選択します。
| バックエンド | 説明 |
|---|---|
cc | 既定値。C を出力し、外部の C コンパイラ (gcc または clang の -O3) でコンパイルした結果をロードする。 |
cranelift | インプロセスの Cranelift JIT。 |
interpret | コード生成を行わず、サイクルごとに IR を歩く。 |
cc バックエンドは cc (通常は gcc または clang) が PATH に存在することを要求します。cc が無い場合や、特定の構文がまだ cc エミッタで対応されていない場合は、その部分について Cranelift へ透過的にフォールバックします。veryl test --backend-validate を使うと cc バックエンドを Cranelift と並行実行し、差異があれば中断します。
SystemVerilogテストとcocotbテストでは、外部のRTLシミュレータが必要です。サポートされているシミュレータは以下の通りです。
Verilatorはデフォルトのシミュレータです。Veryl.tomlやコマンドラインオプションでシミュレータが指定されていない場合に使用されます。
全設定の説明はこちら。
JSON レポート
veryl test --format json は、人間向けのサマリの代わりに、テスト結果の機械可読なレポートを標準出力に書き出します。CI やその他のツールから結果を利用するのに便利です。
$ veryl test --format json
{
"format_version": 1,
"backend": "cc",
"passed": 1,
"failed": 1,
"ignored": 1,
"tests": [
{ "name": "test_a", "status": "pass", "runtime_s": 0.000405, "sim_s": 0.0000147 },
{ "name": "test_b", "status": "fail", "message": "assertion failed", "runtime_s": 0.000559, "sim_s": 0.0000206 }
]
}
各テストの status フィールドは pass または fail で、失敗したテストには message フィールドが付きます。テストが標準出力に何かを書き出した場合は output フィールドに格納されます。無視されたテストは ignored で数えられますが、tests には列挙されません。
レポートのスキーマバージョンは --format-version で指定できます。これは --format json と併用する場合のみ有効です。現在は 1 のみサポートされています。
cocotb
cocotb テストを実行するには cocotb がインストールされた python3 の環境が必要です。サポートされている cocotb のバージョンは 1.9.x あるいは 2.0.x です。
例えば以下のコマンドでインストールすることができます。
$ pip3 install cocotb==2.0.0
シミュレータバックエンドとしては Verilator のみサポートされています。