Verilatorのメリット・デメリット
無料のRTL SImulatorを探して、Verilatorに行きつきました。 なぜ選んだかを説明します。 これから使い方を書いていきたいですが、まずはメリット・デメリットをまとめました。
前提条件 (RTL Simに求めること)
- Virtual Box上のUbuntuまたはWSLからターミナルで実行したい
- 無料で使いたい
- 波形ファイルを出力したい
- VCSやNC Verilogに似た使い勝手がいい
- System Verilogに対応していてほしい
候補
ツール名 | メリット | デメリット |
---|---|---|
VCS | 高速 | 有料(個人で買えない) |
NCVerilog | 高速 | 有料(個人で買えない) |
Quartus(ModelSim) | WSLから実行できる | シミュレーションが遅い。VirtualBoxから実行できない? |
Icarus Verilog | 高速 | System Verilogのalways_ff記述などが書けない |
Verilogger Pro | ? | 有料。情報が少ない |
Veritak | 安い | 有料。情報が少ない |
Verilator | 高速 | 勉強が必要。詳細は下記 |
前提条件からQuartus(ModelSim)かVerilatorに絞り、 せっかくなのでRISC-Vと関わりのあるVerilatorを選びました。
Verilator デメリット詳細
RTLは合成記述しか書けない
例えばDelayが書けません。そのため、テストベンチのClockはC++またはSystemCで書く必要があります。 これがiverilogやvcsやncverilogと大きく違うところだと思います。
情報が少ない
日本語の情報は少ないうえに古く、最近のバージョンでの使い方が出てきません。
icarus verilogが一般的な無料のRTLシミュレータであり情報が多いです。System Verilog記述を使わないのであればicarus verilogを使った方がいいと思います。Versionで仕様が結構違う
過去のバージョン(10年前くらい)で使えたオプションやsystem Cのテストベンチ記述が、新しいバージョンでは使えなかったりするみたいです。(自分ができなかっただけのため、あまり確かな情報ではないですが)
バージョン違いのエラーと戦わないといけない可能性があります。
所感
とはいえ少し触ってみた感じではシミュレーションが高速でした。
System Cは流行っていない感じがあるので、C++のテストベンチを勉強したいと思いました。
Open SourceのRISC-V Coreのテスト環境として、テストベンチがCoreに同梱されていることもあるので、それを見て勉強していきます。
そして、今後ModelSimと比較していきたいと思います。