FPGA素人老人がAMD(Xilinx)社Vivadoで気になったのがGUIの下方のtclウインドウ。昔 tcl/tk を直接使いましたが、最近ではアチコチの縁の下でご活躍は知っていても直接tclを呼び出すことは有りません。しかしtclに触れずしてVivado環境の理解にいたらず、ということで触り始めました。
※かえらざるMOS回路 投稿順 INDEX
※実習にはWindows11上の AMD社(Xilinx) Vivado 2023.2 を使用させていただいております。
Vivadoのコマンドライン
Vivadoをインストールしてからこれまでデスクトップに置かれたVivadoのアイコンをクリクリしてGUIを呼び出してました。しかし当然というかVivadoにもCUI、コマンドライン・インタフェースがあるのでした。そしてその引数として「tclスクリプト」を指定して実行できるようになってます。
その辺をXilinx社の以下の日本語ドキュメントで勉強させてもらっています(最新版対応は英語しかありません。日本語版は古いVivado対応ですが、まあ素人老人が使う範囲などは大差あるまいと。)
Vivado Design Suite Tcl コマンド リファレンス ガイド (UG835)
vivado.batがおかれているbinフォルダへPATHを通しておいて以下のようにすると vivado のコマンドラインのヘルプを見ることができました。出力の冒頭が以下に。
Vivadoのtcl で Hello, World!
プログラミング言語を学ぶ第一歩はカーニハン&リッチ先生以来、”Hello, World!”と決まっています。そこで以下の tcl スクリプトをVivadoで実行してみることにいたしました。
puts "Hello World!"
およよ、GUIが立ち上がってきました。GUI的には tcl スクリプトの実行結果の影もありません。しかし、GUIを閉じて実行後のフォルダを見ると以下のLOGファイルとジャーナル・ファイルが生成されてます。
-
- vivado.log
- vivado.jou
ちゃんと tclスクリプトは実行されていたみたいです。ただし、GUI上に行先はなく、LOGファイルにひっそりと痕跡がのこされてました。
なお、vivadoのコマンドラインには以下の2つのオプションがあってどちらも tcl スクリプトファイル名を引数にとれるみたいです。
-
- -script
- -source
手元でちょっとやってみたところでは、どちらの挙動も同じみたいでした。”-script “でファイル名を指定しているのに、LOGみると source になってるし。
しかし、tclでHello WorldするのにGUIが毎度立ち上がるのもメンドイっす(VivadoでHello Worldする方が変態か?)
その場合、-mode 引数を使えるようです。まずは tcl モードね。
青矢印のところを見ると、Hello World!されてます。しかしその下の赤線をみると、Vivado%などとプロンプトが。これぞ tcl の「シェル」じゃないかと。ここにFPGAを操作するためのtcl コマンドを打ち込んでいけば、GUI無にも処理ができるのでしょう。。。
とりあえず 「汎用」tcl 的にちょっと計算してお茶を濁します。
なんだ、フツーのTCL処理系として使えるじゃん。
多分、処理スクリプトを生成しておいて、バッチで処理するという方が普通かも(大きな設計になるとそれなりに時間かかるので、手動でGUIをクリクリしていくのもメンドそうだし。)バッチ実行が以下に。
バッチモードにすると、スクリプトを実行して、標準出力に結果が表示され、完了後プロンプトに戻ります。なお、この場合でもジャーナルファイル、LOGファイルは生成されるので、何かエラーがあったなどしても追及は出来るのでしょう。知らんけど。
コマケー話だけれども、ちょっとスッキリした。