Vivado GUIのImplementationをコマンドラインから実行する場合の手順です。
Implementationをコマンドラインで実行する手順
まず、Vivado GUIで一通り動作するプロジェクトを作成してインプリメンテーションを実行します。この時、プロジェクトのディレクトリにインプリメンテーション用のTclファイルが生成されます。場所は、<プロジェクト名>.runs/impl_1/<トップモジュール名>.tclです。このファイルを参考に、コマンドライン実行用のTclファイルを作成します。
tclファイルの作成
インプリメンテーションの主な流れは
- 合成結果の読み込み(add_files *.dcp)
- .xdcの読み込み(read_xdc)
- link_design
- opt_design
- place_design
- route_design
です。実際のTclファイルは次の様になります。GUIで生成されたTclファイルを見ると、.xdcを読み込んでから processing_order属性を EARLYに設定しているようなので、同様の処理を追加しています。read_xdcは非常に重要です。例えばZedBoardの場合、IP Integratorで生成した.xdcの読み込みを忘れると、外部ピンが意図通りに設定されない場合がありました。
set PROJ_NAME polyphony set PROJ_DIR . set TOP_NAME zed_base_wrapper set BD_IP_DIR ./${PROJ_NAME}.srcs/sources_1/bd/zed_base/ip create_project -in_memory -part xc7z020clg484-1 set_property board_part em.avnet.com:zed:part0:1.3 [current_project] set_property design_mode GateLvl [current_fileset] set_property parent.project_path ${PROJ_DIR}/${PROJ_NAME}.xpr [current_project] set_property ip_repo_paths ${PROJ_DIR}/${PROJ_NAME}.cache/ip [current_project] set_property ip_output_repo ${PROJ_DIR}/${PROJ_NAME}.cache/ip [current_project] # Synthesis result add_files -quiet ${TOP_NAME}.dcp # very important read_xdc -prop_thru_buffers -ref zed_base_axi_gpio_0_0 -cells U0 ${BD_IP_DIR}/zed_base_axi_gpio_0_0/zed_base_axi_gpio_0_0_board.xdc :(中略) read_xdc user_const.xdc # Link link_design -top ${TOP_NAME} -part xc7z020clg484-1 # Opt opt_design write_checkpoint -force ${TOP_NAME}_opt.dcp report_drc -file ${TOP_NAME}_drc_opted.rpt write_hwdef -force -file ${TOP_NAME}.hwdef # Place place_design write_checkpoint -force ${TOP_NAME}_placed.dcp report_io -file ${TOP_NAME}_io_placed.rpt report_utilization -file ${TOP_NAME}_utilization_placed.rpt -pb ${TOP_NAME}_utilization_placed.pb report_control_sets -verbose -file ${TOP_NAME}_control_sets_placed.rpt # Route route_design write_checkpoint -force ${TOP_NAME}_routed.dcp report_drc -file ${TOP_NAME}_drc_routed.rpt -pb ${TOP_NAME}_drc_routed.pb report_timing_summary -warn_on_violation -max_paths 10 -file ${TOP_NAME}_timing_summary_routed.rpt -rpx ${TOP_NAME}_timing_summary_routed.rpx report_power -file ${TOP_NAME}_power_routed.rpt -pb ${TOP_NAME}_power_summary_routed.pb report_route_status -file ${TOP_NAME}_route_status.rpt -pb ${TOP_NAME}_route_status.pb report_clock_utilization -file ${TOP_NAME}_clock_utilization_routed.rpt
実行
Vivadoコマンドプロンプトから次のコマンドを実行すると、インプリメンテーションが行われます。
vivado -m64 -mode batch -source implement.tcl
GUIでの結果確認
write_checkpointで保存した.dcpを読み込むと、結果を確認できます。
vivado -m64 zed_base_wrapper_routed.dcp