2022年11月23日水曜日

WSL : Verilator の インストール

目的:

Verilator をインストールする。

Verilator について:

Verilator は Verilog, SystemVerilog のシミュレータ である。
Verilator は 論理回路(論理合成可能なVerilogの記述) を C++ や SystemC 等にコンパイルし、シミュレーションを実行する。
シミュレーション用の記述は C++ や SystemC で 記述する。
また Lint チェックを行うことができる。

今回、Lint チェック を試すために インストールを行う。
 (文法チェック/記述チェック で使用できるか 確認。)

インストール手順:

参考URL : VERIPOOL ホームページ
apt で インストールできるようであるが、バージョンが少し古い為、ソースからビルドを行う事とした。

  1. Verilator をビルドするために必要なパッケージを インストールする。
    $sudo apt-get install git perl python3 make autoconf g++ flex bison ccache
    $sudo apt-get install libgoogle-perftools-dev numactl perl-doc
    $sudo apt-get install libfl2
    $sudo apt-get install libfl-dev
    $sudo apt-get install zlibc zlib1g zlib1g-dev
  2. 適当なディレクトリに移動し、git リポジトリからソースを取得する。
    $git clone https://github.com/verilator/verilator
  3. veerilator ディレクトリに移動する
    $cd verilator
  4. 以下の様に 環境変数を設定しておく。(SYSTEMC インストール済みの場合。設定値は一例。 ~/.bashrc に追加し、source する )
    export SYSTEMC=/usr/local/systemc/2.3.3
    export SYSTEMC_INCLUDE=$SYSTEMC/include
    export SYSTEMC_LIBDIR=$SYSTEMC/lib-linux64
    export SYSTEMC_ARCH=linux64
  5. 構成スクリプトを作成する。
    $autoconf
  6. 設定を行う。
    $./configure
  7. make 実行
    $make -j2
  8. 念のため、チェック実行
    $make test
  9. インストール 実行
    $sudo make install

動作確認 (Lint チェック):

Lint チェックを実行して見る。
Lintチェックは、

$verilator --lint-only -Wall  [RTL ファイル名]
で実行できる。
使用オプションは以下の通り。
--lint-only     Lint, but do not make output
 -Wall          Enable all style warnings

always 文 (FF) で
  data_1 <= #1 data ;
のように 遅延時間を指定していると
%Error-NEEDTIMINGOPT: test.v:64:25: Use --timing or --no-timing to specify how timing controls should be handled
の様なエラーが報告される。
メッセージにあるように
verilator --lint-only -Wall --timing  [RTL ファイル名]
とすると このエラー が報告されなくなる。
--no-timing を付けると、Warning 報告となる。
--timing        Enable timing support
--no-timing     Disable timing support


Lint チェックを実行して見た結果、処理は早く、rtl 記述後にまずは verilator で Lint チェックでデバッグ(記述チェック)するのが良いように思える。
但し、bit幅の不整合などで、実質問題ない記述でもWarning が出る為、煩わしく感じるかもしれない。
とはいえ、問題のある記述の場合もある為、ちゃんと 全数確認する必要がある。


0 件のコメント:

コメントを投稿