celox CLIでcocotbを使う
CeloxはVerylの設計を、VPI経由で通常の cocotb テストを実行できるネイティブ実行ファイルへ コンパイルできます。生成物にはコンパイル済み設計とCeloxランタイムが含まれるため、 実行時にVerylソースは不要です。
CLIをビルドする
現在、CLIはCeloxのソースツリーからビルドします。
cargo build --release -p celox-vpi --bin celox利用するPython環境へcocotbをインストールします。
python3 -m pip install cocotbリポジトリのdevcontainerにはcocotb 2.0.1とVerilatorがあらかじめ入っています。
設計をコンパイルする
Verylプロジェクト内のソースを1つ指定し、トップレベルモジュール名を渡します。
target/release/celox vpi build src/Top.veryl --top Top -o build/top-simCeloxはソースの位置からVeryl.tomlを探し、プロジェクトのソースと依存関係を まとめてコンパイルします。Verylプロジェクト外の単独ソースを指定した場合は、 そのファイルだけをコンパイルします。-oを省略した出力先はcelox.outです。
cocotbを実行する
たとえばtest/test_top.pyにcocotbテストがある場合、そのモジュールをimportできる 状態で生成物を起動します。
PYTHONPATH=test build/top-sim --test-module test_top生成された実行ファイルは自動的に次を行います。
python3からcocotbのVPIアダプターとlibpythonを検出する- コンパイル済みのトップレベル名をcocotbへ渡す
results.xmlを出力し、テスト失敗時は非ゼロで終了する
別のPython環境や結果ファイルを使う場合は明示できます。
build/top-sim \
--test-module test_top \
--python .venv/bin/python \
--results-file build/results.xml--test-filter REGEXで一致するテストに絞れます。cocotbの従来形式向けに --testcase NAMEも利用できます。--vpi PATHを指定するとVPIアダプターの自動検出を 上書きします。既存の自動化向けに、PYGPI_PYTHON_BIN、LIBPYTHON_LOC、 CELOX_COCOTB_VPI、COCOTB_TEST_MODULES、COCOTB_TEST_FILTER、 COCOTB_RESULTS_FILEも引き続き利用できます。
現在の互換範囲
cocotb 2.0で使われるモジュール・信号の探索、immediate/deposit/force/release書き込み、 スカラー・ベクター値、シミュレーション時刻、およびStart、ReadWrite、ReadOnly、 NextTimeStep、Timer、ValueChange、Endの各コールバック領域に対応しています。
packed bit handle、遅延VPI書き込み、unpacked arrayのインデックス参照、 派生・カスケードクロックのスケジューリングにはまだ対応していません。