はじめに
VSCode HDL RunnerはベンダーフリーのHDL開発向けのVSCodeの拡張機能です。
コンパイルやテスト実行などのシミュレーションやLintやCDCなどのポイントツールまで、よく使うコマンドスクリプトを登録して、VSCode上で実行を支援します。
主な機能
- ツリービュー管理:コンパイル、テスト実行、Lintなどのコマンド/スクリプトを登録してボタンクリックで実行します。
- リグレッションパネル:テストの結果や進捗を可視化するビューワーを持ちます。
- パラレル実行:テストを複数のプロセスで同時に実行可能です。
- ファイルウォッチャー:結果の再現性のためにHDLの変更を監視します。
Get Started
シミュレータにiverilogを使用するときの設定方法についてご説明します。
最小設定
カレントディレクトリの.vscode/settings.jsonに下記を追加します。
{
"hdlRunner.items": {
"sim": {
"type": "group",
"items": {
"compile": {
"type": "stage",
"command": "iverilog -g2012 -o sim.out -f filelist.f"
},
"runTest": {
"type": "stage",
"dependsOn": ["sim.compile"],
"command": "vvp sim.out"
}
}
}
},
"hdlRunner.tests": {
"sample_test": { "plusargs": [] }
}
}“hdlRunner.items”に実行するコマンド/スクリプトを定義します。
各項目の説明は以下をご確認ください。
{
"hdlRunner.items": {
"sim": { // アイテム名
"type": "group", // typeはgroup or stageから選択。groupは子itemを持ち、
// stageはcommandを持つ。
"items": { // simの子アイテム
"compile": { // simの子アイテムにcompileを作成
"type": "stage", // typeがstageなのでcommandを設定可能
"command": "iverilog -g2012 -o sim.out -f filelist.f" // iverilogのコンパイルコマンドを登録
},
"runTest": { // runTestはリザーブドワードでテストを実行するときに使用する
"type": "stage",
"dependsOn": ["sim.compile"], // dependsOnを設定することで、runTest前にcompileが実行されるようになる。
"command": "vvp sim.out" // iverilogのシミュレーション実行コマンドを登録
}
}
}
},
"hdlRunner.tests": { // テストを登録
"sample_test": { "plusargs": [] } // テストごとに引数を設定可能
}
}ファイルリストの作成
DUT/TB/Testを含んだファイルリストを作成してfilelist.fの名前で保存します。
VSCode HDL Runnerを有効化
Ctrl+Shift+PでHDL Runner: Enable Extensionを実行して有効化します。
有効化前

有効化後

有効化すると、ツリービューにsettings.jsonで設定したアイテムが表示されます。
コマンド実行
runTestをクリックします。Quick Pickが起動するので実行したいテストを選択します。

dependsOnでsim.compileを指定しているので、compileは自動で実行されます。
実行が完了するとGUIが起動します。

結果の確認
前項ですでにGUIが起動していますが、HDL Runner: Open Regression PanelからもGUIを起動可能です。
Open logをクリックすると、それぞれのテストのログを確認できます。

テスト実行の補足
テスト実行用のアイテム
テストを実行するためのアイテムとして、runTest/runSelectedTest/runAllTestがリザーブドワードとして設定されています。
- runTest:Quick Pickでテストを1本指定して実行
- runSelectedTest:Quick Pickでテストを複数本指定して実行
- runAllTest:settings.jsonに記載のテストすべてを実行
テスト実行時の引数
run*Testでテストを実行するときには下記5つの変数を使用することが可能です。
${logs}: ログ格納用${works}: 実行ディレクトリ。中間ファイルなどを置く${waves}: 波形格納用${covs}: カバレッジ格納用${results}: テスト結果をGUIで表示する用のメタデータを格納
また、plusargsで記述した引数がコマンドの後ろに追加されていきます。
実行結果の格納場所
上記のディレクトリはout/run_YYYYMMDD_…というディレクトリが自動生成されて、その下に生成されます。
まとめ
VSCode HDL Runnerについて説明しました。


コメント