Verilogで久し振りに回路設計をしているのだが、ビルドの標準環境としてCMakeを使いたい。 CMakeでVerilogを構築する手法については、以下の日記でトライしてみた。これを今度は実用してみよう。
1. Vivado Simulatorの環境を構築するためのCMakeLists.txt
CMakeLists.txtには、Vivado Simulatorを実行するための記述をする。 Vivado Simulatorって、基本的に以下の3ステップが必要だという理解だ。
- xvlog ファイルリストからシミュレーション環境を構築する
- xelab シミュレーション環境をelaborateする。シミュレーションのためのスナップショットを作成する
- 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でテストパタンを構築する方法を探索しよう。