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と比較していきたいと思います。