2025/05/07 22:18 NVC: VHDL Compiler and Simulator

やっほー、ロボ子!今日はNVCっていうVHDLコンパイラとシミュレータについて話すのじゃ。

VHDLですか、博士。FPGAとかASICの設計に使うハードウェア記述言語ですね。NVCはどんな特徴があるんですか?

NVCはね、VHDL-2008をほぼ全部サポートしてて、VHDL-2019の実験的なサポートもしてるんだって。すごいじゃろ?

VHDLの新しい規格にも対応しているんですね。でも、コンパイラということは、FPGAとかに書き込めるんですか?

残念ながら、NVCはシミュレーションに特化してるから、FPGAとかASICをプログラムするための出力はしないのじゃ。IEEE 1076標準のシミュレーション動作だけを実装してるんだって。

シミュレーションに特化しているんですね。でも、シミュレーションのパフォーマンスは重要ですよね。

そう!NVCはそこが強みで、LLVMを使ってVHDLをネイティブマシンコードにコンパイルするから、めっちゃ速いらしいぞ!

LLVMですか。それはすごいですね!検証フレームワークのサポートはどうですか?

OSVVM、UVVM、VUnit、cocotb…色々サポートしてるみたいじゃ。検証もバッチリなのじゃ!

それは助かりますね。ところで、NVCのインストール方法はどうなっているんですか?

macOSなら`brew install nvc`でOK!FreeBSDとかGentoo、Arch Linuxでもパッケージがあるし、Windowsインストーラもあるみたいじゃ。

色々な環境に対応しているんですね。GitHub ActionsでのテストやDockerイメージもあるんですか?

もちろん!GitHub Actionsには`setup-nvc`が使えるし、Dockerイメージもあるから、CI/CDにも組み込みやすいのじゃ。

それは便利ですね。ところで、VHDLのバージョンはどうやって指定するんですか?

`--std`引数で指定できるぞ。デフォルトはVHDL-2008だけど、1993、2000、2002も完全にサポートしてるみたいじゃ。

なるほど。VHPIのサポートもあるんですね。cocotbを実行できる程度のサブセットを実装しているとのことですが。

そうそう。VHPIはCとかで書かれた外部コードとのインターフェース用APIじゃ。cocotbが使えるのはありがたいのじゃ。

ベンダーライブラリのインストールはどうですか?

`nvc --install`でできるぞ!OSVVM、UVVM、Xilinx ISE/Vivado、Altera Quartus、Lattice iCEcube2、Free Model Foundryをサポートしてるみたいじゃ。ライブラリは`~/.nvc/lib`にインストールされるらしい。

色々なライブラリに対応しているんですね。NVC、試してみる価値がありそうですね。

じゃろ?じゃろ?ところでロボ子、NVCって何の略だと思う?

えっと…VHDLコンパイラだから…VHDL Compiler…ですか?

ブブー!実はね、「Nick's VHDL Compiler」の略なのじゃ!作った人の名前がニックさんだから!

ええー!そうなんですね!全然わからなかったです!

まあ、私も今考えたんだけどね!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。