FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

CMakeでVerilogシミュレーション環境を構築する

Verilogで久し振りに回路設計をしているのだが、ビルドの標準環境としてCMakeを使いたい。 CMakeでVerilogを構築する手法については、以下の日記でトライしてみた。これを今度は実用してみよう。

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

1. Vivado Simulatorの環境を構築するためのCMakeLists.txt

CMakeLists.txtには、Vivado Simulatorを実行するための記述をする。 Vivado Simulatorって、基本的に以下の3ステップが必要だという理解だ。

  1. xvlog ファイルリストからシミュレーション環境を構築する
  2. xelab シミュレーション環境をelaborateする。シミュレーションのためのスナップショットを作成する
  3. xsim スナップショットをシミュレーションする

これらをCMakeLists.txtで記述すると、以下のようになる。

add_custom_target (my_design ALL
  COMMAND xsim run_tb_my_design --R
  DEPENDS my_design_xelab
  )

add_custom_target (my_design_xelab
  COMMAND xelab -s run_tb_my_design work.tb_my_design
  DEPENDS work
  )

add_custom_command (OUTPUT work
  COMMAND xvlog -f filelist.f -i ../../../../hardware/common/include/
  DEPENDS filelist.f
  )

add_custom_command (OUTPUT filelist.f
  COMMAND cpp -P -DHW_DIR=../../../../hardware tb_my_design.f > filelist.f
  DEPENDS tb_my_design.f ../rtl/my_design.f
  )

add_custom_target (distclean ALL
  COMMAND rm -rf xsim.dir *.log *.jou *.pb *.wdb
  )

このときに気をつけなければならないのは、xvlogはインクルードファイルが格納されているディレクトリの場所は--include(-i)で指定しなければならないところだ。 filelistに格納して+incdir+DIRで指定できるのかと思っていたが、違うようだ。気をつけなければ。

とりあえずこれでVivado Simulatorでシミュレーションできる環境が構築できる。次は、cocotbでテストパタンを構築する方法を探索しよう。