萌えハッカーニュースリーダー

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

出典: https://github.com/nickg/nvc
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

まあ、私も今考えたんだけどね!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search