コマンド ラインの使用 - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: プログラムおよびデバッグ (UG908)

Document ID
UG908
Release Date
2023-10-19
Version
2023.2 日本語

Vivado の Tcl モードまたは Vivado IDE の [Tcl Console] ウィンドウを使用して SVF ファイルを書き出すには、write_hw_svf コマンドを使用します。

SVF チェーン、直接 FPGA および間接フラッシュ プログラム操作は、一時ファイルに保存されます。write_hw_svf コマンドを実行すると、この一時ファイルがコマンドで指定したファイルに保存されます。write_hw_svf コマンドを実行した後は一時ファイルはリセットされ、その後のプログラム操作は SVF ファイル シーケンスの最初に追加されます。

次のコードは、xcku9p デバイスの直接プログラム操作を含む my_xcku9p.svf という名前のファイルを作成する Tcl コマンドを示しています。

create_hw_target my_svf_target
open_hw_target
set device0 [create_hw_device -part xcku9p]
set_property PROGRAM.FILE {my_xcku9p.bit} $device0
program_hw_devices $device0
write_hw_svf my_xcku9p.svf
close_hw_target

このサンプル コードは、create_hw_device コマンドを使用して xcku9p デバイスを作成し、その戻り値を device0 という一時変数に設定します。この一時変数値を使用してオブジェクトを参照し、PROGRAM.FILE プロパティを my_xcku9p.bit ファイルに設定します。次に、program_hw_device を参照して device0 コマンドを実行します。この program_hw_device コマンドを実行すると、my_xcku9p.bit ファイルを xcku9p にプログラムするのに必要な SVF 操作を含む一時 SVF ファイルが作成されます。最後に write_hw_svf コマンドを実行し、一時ファイルを myxcku9p.svf に移動します。この時点で、SVF ファイルの作成プロセスは完了したので、ターゲットを閉じることができます。

ヒント: STAPL ファイルを記述する際、JTAG チェーンのすべてのデバイスを作成してからプログラム操作を実行してください。プログラム コマンドの間に create_hw_device コマンドを挿入すると、2 つの異なるチェーン シーケンスを含む SVF ファイルが生成されます。

間違った SVF ファイル作成手順の例:

create_hw_target my_svf_target
open_hw_target
set device0 [create_hw_device -part xcku9p]
set_property PROGRAM.FILE {my_xcku9p1.bit} $device0
# this program command will produce SVF instructions 
#  which account for only device0 in chain
program_hw_devices $device0
set device1 [create_hw_device -part xcku9p]
set_property PROGRAM.FILE {my_xcku9p2.bit} $device1
# this program command will produce SVF instructions 
#  which account for device0 and device1 in chain
program_hw_devices $device1
write_hw_svf my_bad_xcku9p.svf
close_hw_target

最初のプログラム コマンドでは、最初のデバイスを含むチェーン定義のみが使用されます。2 番目のプログラム コマンドにはチェーンの両方のデバイスが含まれます。この SVF ファイルを 2 つのデバイスを含むチェーンで実行すると、ライブ チェーンには 2 つのデバイスがあるので、最初のプログラムはエラーとなります。

この問題を修正するには、create_hw_device コマンドを先に実行してチェーンを完全に定義した後、プログラムを実行します (次の例を参照)。

正しい SVF ファイル作成手順の例:

create_hw_target my_svf_target
open_hw_target
# create device chain first
set device0 [create_hw_device -part xcku9p]
set device1 [create_hw_device -part xcku9p]
# program device0
set_property PROGRAM.FILE {my_xcku9p1.bit} $device0
program_hw_devices $device0
# program device1
set_property PROGRAM.FILE {my_xcku9p2.bit} $device1
program_hw_devices $device1
write_hw_svf my_good_xcku9p.svf
close_hw_target