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
