Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

シミュレータ

テストは 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 のみサポートされています。