VivadoからJTAGでFPGA書き込みを行うためのTCLスクリプト
VivadoでGenerate Bitstreamしたあと、Open Hardware Managerして書き込むのって面倒くさくないですか?
そこで、TCLスクリプトを開発しています。
まず、できあがったスクリプトを晒します。
set default_filename ""
proc _NahiProgram {{_filename ""}} {
global default_filename
set filename ""
if {$filename == ""} {
set filename $default_filename
} else {
set filename $_filename
}
set_property PROGRAM.FILE $filename [get_hw_devices xczu28dr_0]
program_hw_devices [get_hw_devices xczu28dr_0]
}
proc _NahiCloseProgram {} {
refresh_hw_device [lindex [get_hw_devices xczu28dr_0] 0]
disconnect_hw_server localhost:3121
close_hw_manager
}
proc _NahiOpenProgram {} {
open_hw_manager
connect_hw_server -allow_non_jtag
open_hw_target
}
_NahiOpenProgram
set default_filename "ファイルのパス/design_1_wrapper.bit"
_NahiProgram
です。
このスクリプトを
Vivadoへのパス\bin\vivado.bat -mode tcl -nolog -nojournal -source prog.tcl -tempDir ./temp
として起動するのですが、論理合成に使っているメインのVivadoとは別に分けるのがポイントです。
論理合成に使っているメインのVivadoでOpenHardwareManagerすると画面がちらちら開いたり閉じたりして邪魔でしょ?
それから、TCLスクリプトはprocと書かれたところは関数で、_NahiOpenProgramから_NahiProgramが実際に最初に実行される部分です。PHPみたいな構成です。
_NahiOpenProgramはVivadoのハードウェアマネージャを開いてターゲットを開きます。この処理は時間がかかるので、最初に1回だけ実行すればよいように分けてあります。
_NahiProgramは実際にプログラミングします。引数は書き込みたいbitファイルのファイル名ですが、default_filenameにファイル名を与えれば、ファイル名を省略しても書き込んでくれます。
だから、Tclのコンソールで↑のキーを押して_NahiProgramだけを実行すればいいわけです。
マウス操作をしなくていいので、これは楽です。
あと、get_hw_devices xczu28dr_0みたいなのは当方で使用している基板の構成をベタ打ちしてしまっているので、みなさんが使うときは環境に合わせて書き換えてください。
いずれNahiVivaに統合します。
| 固定リンク
コメント