Vivadoの合成をコマンドラインで実行する

FPGA

Vivado GUIのSynthesisをコマンドラインから実行する場合の手順です。

Synthesisをコマンドラインで実行する手順

まず、Vivado GUIで一通り動作するプロジェクトを作成して合成を実行します。この時、プロジェクトのディレクトリに合成用のTclファイルが生成されます。場所は、<プロジェクト名>.runs/synth_1/<トップモジュール名>.tclです。このファイルを参考に、コマンドライン実行用のTclファイルを作成します。

tclファイルの作成

合成の主な流れは

  • read_verilogで必要なRTLを読み込む
  • synth_designで合成する
  • write_checkpointで結果を保存する

です。実際のTclファイルは次の様になります。GUIで生成されたTclファイルを見ると、.xdcを読み込んでからused_in_implementation属性をfalseに設定しているようなので、同様の処理を追加しています。Verilogのincludeパスは、synth_designの-include_dirsオプションで指定します。

set PROJ_NAME polyphony
set PROJ_DIR .
set RTL_ROOT_DIR ../../rtl
set TOP_NAME zed_base_wrapper

create_project -in_memory -part xc7z020clg484-1

set_property parent.project_path ${PROJ_DIR}/${PROJ_NAME}.xpr [current_project]
set_property default_lib xil_defaultlib [current_project]
set_property target_language Verilog [current_project]
set_property board_part em.avnet.com:zed:part0:1.3 [current_project]
set_property vhdl_version vhdl_2k [current_fileset]
add_files ${PROJ_DIR}/${PROJ_NAME}.srcs/sources_1/bd/zed_base/zed_base.bd

set XDC_LIST "\
  ${PROJ_DIR}/${PROJ_NAME}.srcs/sources_1/bd/zed_base/ip/zed_base_axi_gpio_0_0/zed_base_axi_gpio_0_0_board.xdc \
  ${PROJ_DIR}/${PROJ_NAME}.srcs/sources_1/bd/zed_base/ip/zed_base_axi_gpio_0_0/zed_base_axi_gpio_0_0_ooc.xdc \
:(中略)
"
foreach i $XDC_LIST {
  set_property used_in_implementation false [get_files -all ${i} ]
}

set V_LIST "\
  ${RTL_ROOT_DIR}/fm_3d/fm_3d_vtx_dma.v \
  ${RTL_ROOT_DIR}/fm_3d/fm_3d_tu_etc.v \
:(中略)
  ${TOP_NAME}.v \
"
foreach i $V_LIST {
  read_verilog  -library xil_defaultlib ${i}
}

read_xdc user_const.xdc
set_property used_in_implementation false [get_files user_const.xdc]

read_xdc dont_touch.xdc
set_property used_in_implementation false [get_files dont_touch.xdc]

synth_design -top ${TOP_NAME} -part xc7z020clg484-1 -verilog_define PP_BUSWIDTH_64=1 -include_dirs {../../rtl/include ../../rtl/fm_3d} -fanout_limit 10000 -flatten_hierarchy rebuilt
write_checkpoint -force ${TOP_NAME}.dcp
report_utilization -file ${TOP_NAME}_utilization_synth.rpt -pb ${TOP_NAME}_utilization_synth.pb

実行

Vivadoコマンドプロンプトから次のコマンドを実行すると、合成が行われます。

vivado -m64 -mode batch -source synth.tcl

GUIでの結果確認

write_checkpointで保存した.dcpを読み込むと、結果を確認できます。

vivado -m64 zed_base_wrapper.dcp
タイトルとURLをコピーしました