Vivadoを自動化するTclスクリプトをLinuxでも使う


Vivadoの操作を自動化する「NahiViva(なひビバ)」というTclスクリプトがあります。
https://github.com/tokuden/NahiViva

このスクリプトを使うと、「Update IP」や「Synth→Impl→Generate Bitstream」などの操作をTclコマンドで行えるようになるほか、プロジェクトを本当にコアなVHD、V、XCI、TCLファイルだけで管理できるようになるので、アーカイブした時のサイズが、Vivadoの元のプロジェクトフォルダの1%くらいのサイズになります。ほかにもソースファイルをGITで管理できるようになるなどメリットがたくさんあります。

さて、このNahiVivaをLinuxで使いたいというご要望があったので、可能かどうかを試してみました。

NahiVivaの構造

Windows版のNahiVivaは、いくつかのバッチファイルが提供されていて、
やりたいことに合わせてバッチファイルをダブルクリックして起動します。

普段使うのはこの2つ

まぁ、ファイルはいっぱいありますが、普段使うのは以下の2つです。

  • open_project_gui.cmdでプロジェクトを開く
  • delete_project.cmdでプロジェクトのVivadoフォルダを削除してすっきりする

NahiVivaのバッチファイルの中身

open_project_gui.cmdを実行すると、SETTINGS.CMDというファイルを読み込んでVivadoをバッチモードで起動するようになっています。
その中身を見てみましょう。

SETTINGS.CMD
@SET VIVADO_PATH=D:\Xilinx\Vivado\
@SET VIVADO_VERSION=2018.3
open_project_gui.cmd
call SETTINGS.CMD
%VIVADO_PATH%\%VIVADO_VERSION%\bin\vivado.bat -mode tcl -nolog -nojournal -source nahiviva.tcl -tclargs opengui

VivadoをインストールするフォルダやVivadoのバージョンは、環境に応じてそれぞれなので、VivadoのインストールパスとバージョンをSETTINGS.CMDで設定できるようになっています。

バッチファイルからシェルスクリプトへ

Linuxに移行するには、これらのファイルをbashスクリプトに変えてしまえばよいのでしょう。

SETTINGS.sh
#!/bin/sh
VIVADO_PATH=/tools/Xilinx/Vivado/;export VIVADO_PATH
VIVADO_VERSION=2018.3;export VIVADO_VERSION
open_project_gui.sh
#!/bin/bash
. ./SETTINGS.sh
$VIVADO_PATH/$VIVADO_VERSION/bin/vivado -mode tcl -nolog -nojournal -source nahiviva.tcl -tclargs opengui

のようにします。WindowsのバッチファイルをLinuxのシェルスクリプトに変換する際には、改行コードをCR+LFではなくLFにするのを忘れないようにしましょう。

Tclファイルの変換

nahiviva.tclの書き換えは不要ですが、Tclの中で表示するメッセージに日本語が含まれており、Shift-JISだとLinux版のVivadoは読み込みでエラーを起こしてしまいます。
UTF-8に変換する必要があるようです。

実際にコンパイルしてみる

様子を動画にしました。字幕ONで見てみてください。
↓の画像をクリックすると、YouTubeにジャンプします。


https://www.youtube.com/watch?v=eUJVYi3A_To&feature=youtu.be

無事に論理合成に成功です。

合成時間

論理合成は最初の1回目はIPのGenerateを行うところが22分、配置配線自体は12分くらいでした。
2回目以降はIPのGenerateがないので早くなります。Windows版だと5分くらいで終わるのですが、仮想マシンのLinuxなのでやはり遅いですね。

プロジェクトがいらなくなったら

プロジェクトがいらなくなったら、TclコンソールにNahiSaveと打って、delete_project.shを実行してください。vivadoフォルダは消えますが、ソースはすべて保存されています。