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