Vivadoコマンドラインとロジックアナライザ

FPGA

Tclスクリプトを使ったVivadoのコマンドライン実行は非常に快適なのですが、唯一困るのがロジックアナライザの設定です。ロジックアナライザを利用する場合は、追加の処理が必要になります。

Tclスクリプトとロジックアナライザの設定

前提

VivadoのTclスクリプトは、各フェーズで分割されているとします。具体的には、次のような分割です。

ファイル名 内容
ip.tcl IP Integrator用Tclスクリプト
synth.tcl 合成用Tclスクリプト
implement.tcl インプリメンテーション用Tclスクリプト
bitgen.tcl ビットデータ生成用Tclスクリプト
load_fpga.tcl ビットデータロード用Tclスクリプト
launch_sdk.tcl SDK起動用Tclスクリプト

前処理

ロジックアナライザで観測する信号を設定します。例えば、RTL中にmark_debugなどで観測する信号を指定します(これは、Tclスクリプトで処理をするかどうかに関係ありませんが)。

 (* mark_debug = "true" *)   output o_awvalid_m;

論理合成

synth.tclを使って論理合成を実行します。

vivado -m64 -mode batch -source synth.tcl

この例では、論理合成の結果は、synth.tcl内に記述されたwrite_checkpointコマンドによって、zed_base_wrapper.dcpという名前のファイルに格納されているとします。

ロジックアナライザの挿入

Vivado GUIを使って、ロジックアナライザに関する情報を挿入します。
まず、VivadoのGUIを起動します。そして、File->Open Checkpoint…からzed_base_wrapper.dcpを読み込みます。

Vivadoの起動

Vivadoの起動

.dcpの読み込み

.dcpの読み込み

Tools->Set Up Debug…ウィザードでロジックアナライザを挿入します(詳しい手順はこちら)。

Set Up Debugの実行

Set Up Debugの実行

次に、Tcl Consoleタブを選択して、write_checkpoint -forceでcheckpointを上書きします。

write_checkpoint -force zed_base_wrapper.dcp

ここで、-forceを付けないと、次のようなエラーが発生します。

ERROR: [Common 17-176] Overwrite of existing file isn't enabled.  Please specify -force to overwrite file  [C:zedboard_dbg/zed_base_wrapper.dcp]

逆に考えれば、-forceなしでエラーが出るということは「正しく上書きされようとしている」ということです。正しくzed_base_wrapper.dcpを上書きできれば、ここでVivadoを一旦終了します。

配置配線

Tclスクリプトを使って、配置配線を実行します。Tclスクリプトに特に変更は必要ありません。

vivado -m64 -mode batch -source implement.tcl

bitstreamの生成

ロジックアナライザを利用するには、write_debug_probesコマンドで.ltxファイルを生成する必要があります。具体的には、bitstreamを生成するTclファイルにwrite_debug_probesコマンドを追加します。

set PROJ_NAME polyphony
set PROJ_DIR .
set SDK_DIR ./sdk
set TOP_NAME zed_base_wrapper

open_checkpoint ${TOP_NAME}_routed.dcp
write_bitstream -verbose -force ${TOP_NAME}.bit 
write_sysdef -force -hwdef ${TOP_NAME}.hwdef -bitfile ${TOP_NAME}.bit -meminfo ${TOP_NAME}.mmi -file ${TOP_NAME}.sysdef
write_debug_probes -force ${TOP_NAME}.ltx    # これを追加

file copy -force ${TOP_NAME}.sysdef ${SDK_DIR}/${TOP_NAME}.hdf

write_debug_probesを追加後、TclスクリプトをVivadoで実行します。

vivado -m64 -mode batch -source bitgen.tcl

Vivadoロジックアナライザの起動

簡単なVivadoプロジェクトを作成してVivado GUIを起動します。簡単なプロジェクトは、例えば次のようなTclスクリプトで生成できます。

set PROJ_NAME test_prj
create_project -verbose -force -part xc7z020clg484-1 ${PROJ_NAME}
set_property board_part em.avnet.com:zed:part0:1.3 [current_project]
close_project

Vivaoを起動して、Open Project…でプロジェクトを読み込みます。次に、Flow NavigatorのProgram and DebugからOpen Targetを選択し、Auto Connectでターゲットボードと接続します。

ターゲットボードとの接続

ターゲットボードとの接続

次に、Program Deviceを実行します。

Program Device

Program Device

この時に表示されるポップアップウィンドウに、bitstreamとwrite_debug_probesで生成した.ltxファイルを指定して、Programをクリックします。

プログラムの実行

プログラムの実行

この後の処理は、通常の手順と同じです。

まとめ

まとめると、ロジックアナライザを利用するために追加で必要になる処理は次の2点です。

  1. 論理合成後のcheckpointをVivado GUIで読み込んで、ロジックアナライザの情報を組み込んでからwrite_checkpointで上書きする。
  2. write_debug_probesで.ltxファイルを生成する。
タイトルとURLをコピーしました