眼鏡止水

FPGA、ネットワーク機器、料理、そしてメガネ女子。

【Verilator】高速なVerilogシミュレータ"Verilator"の最新安定版を自前でビルドする

概要

FPGAに搭載する論理のシミュレーションは、その動作の正しさを検証するために重要な工程です。

今回は高速なVerilogシミュレータであるVerilatorの最新安定版をビルドします。

作業

Verilatorのマニュアルに従って、Verilatorを自前でビルドします。 今回は "Git Quick Install" をもとに作業します。

初めに依存パッケージをインストールします。 一覧にあるものをすべて書くとzlibcがないといわれます。 そこで、zlibcを除外してコマンドを実行します。

sudo apt install -y git help2man perl python3 make autoconf g++ flex bison ccache libgoogle-perftools-dev numactl perl-doc libfl2 libfl-dev zlib1g zlib1g-dev
# zlibcを除外しない場合
$ sudo apt install git help2man perl python3 make autoconf g++ flex bison ccache libgoogle-perftools-dev numactl perl-doc libfl2 libfl-dev zlibc zlib1g zlib1g-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package zlibc

今回は安定版を用いるので、以下のコマンドたちを実行します。 特に、stableブランチにチェックアウトすることが重要です。 ここでお好みのバージョンを指定することも可能です (git tag等で確認) 。

git clone https://github.com/verilator/verilator # VerilatorをGitHubからクローン。
unset VERILATOR_ROOT                                     # Verilatorのパス?を意味する環境変数をアンセット。
cd verilator
git pull                                                                # 最新のコミットまで落としていることを確認。
git checkout stable                                             # 最新の安定コミット (安定ブランチ) にチェックアウト。

もちろん、以下のようにシャロークローンしてもよいと思います。

git clone https://github.com/verilator/verilator -b stable --depth=1

続いて、以下のコマンドたちを実行し、Verilatorをビルドしインストールします。 並列数はお好みで指定してください。 ただし、-jだけ書くと並列処理可能な数だけスレッドが生成されるようで、メモリ不足などの原因になりますから、何らかの数を指定することをお勧めします。

autoconf                           # ./configureスクリプトを生成。
./configure                        # 設定済みMakefileを生成。
make -j$(($(nproc)/2+1))  # 全CPUスレッド数の半分+1で並列コンパイル。
sudo make install

インストールが完了したら、以下のコマンドでバージョンを確認します。 筆者の環境ではv5.026がインストールされました。

$ verilator --version
Verilator 5.026 2024-06-15 rev UNKNOWN.REV

まとめ

本記事では、高速なVerilogシミュレータであるVerilatorの最新安定版を自前でビルドしました。

今後はこのVerilatorを使ってLiteXのSoCをシミュレートしたいと思います。