« VivadoでユーザIPの設定を一括で変える方法 | トップページ | Cosmo-Zの回路も完全Vivado化を達成 »

2019.09.07

Cosmo-Z Miniの回路をNahiViva環境に移行した

VivadoのプロジェクトをNahiViva環境に移行したら、劇的にサイズが減少しました。

NahiVivaというのはTclで書かれたライブラリで、Vivadoのプロジェクト生成や、ビルドなどを楽に行うためのものです。例えば、子IPを変更したらShow IP Status→Run・・のプロセスを行わなければなりませんが、コマンド一発で行えます。

NahiVivaでNahiSaveというコマンドを打つと、プロジェクトをTcl化して保存します。このときBlock DesignはBDファイルではなく、BDファイルを生成するためのTclファイルにして保存するので、他のディレクトリに移行しても矛盾することなく、顧客への配布も楽にできるようになります。

また、Vivadoが生成したプロジェクトフォルダやバイナリファイルはすべて消しても良くなるので、ユーザが作ったコアなソースファイルだけを管理すればよくなり、プロジェクトのサイズが激減します。

さて、御託はこのくらいにして、Cosmo-Z Miniの全回路をNahiViva環境に移行することができました。

Cosmo-Z Miniの現在の全体像を示します。

まず、TOPの回路。CPUと書かれた階層と、SignalProcessと、DACがあります。

Top

CPUの中にはZYNQとAXI Interconnectが入ったCoreという階層、それからレジスタファイルがあります。

Cpu

下の図がCosmo-Z Miniの信号処理系です。計測されたAD変換データはすべてAXI Streamになっていて、ADCBlockから出力され、フィルタやトリガといったロジックブロックを経由し、オリジナルなDMAコア(capture_top)に入っていきます。

Signalprocess

ユーザは、このフィルタブロックとトリガブロックをカスタマイズすることで、オリジナルなFPGA計測器を作ることができるというわけです。

今日移植に成功したのがDACブロックです。

Dac

正弦波、パルス、疑似乱数を出すことができるモジュールなのですが、各波形発生かいろが別々に存在しているのですっきりしていません。今後置き換えを考えています。

さて、このような規模だと結構なサイズのプロジェクトになると思います。

いったい、Vivadoのフォルダは何バイトくらいになると思いますか?

答えは、なんと2.2Mバイトでした。

After

僅か2MバイトでVivadoのこの規模の回路が出来上がってしまうのです。

ZIPで圧縮すれば380kバイト。フロッピーにも収まってしまいます。

NahiVivaに移行する前のプロジェクトフォルダは770MBあったので、

Before

なんと0.28%にまで圧縮できたことになります。

そもそもVivadoのフォルダには不要なバイナリファイルや中間ファイルが多すぎるのです。

コアな状態に圧縮しても、VivadoでRunするときに様々なファイルは復元されるので、初回のビルド時間が2分程度伸びるだけです。

また、Vivadoは使っているうちにだんだんプロジェクトがおかしくなってきて謎のエラーやWarningが出るようになりますが、NahiVivaではいつでもプロジェクトフォルダを削除できるので、壊れたプロジェクトもすぐに戻ります。

 

ここまでのサイズ低減を行うことができたのは、VivadoにおけるBlock Designの子IPプロジェクトについての知見が得られたからです。

基本的に子プロジェクト(IP)に必要なファイルは、

  • component.xml
  • ユーザの作ったRTLソース
  • xgui/〇〇.tcl
  • xciファイル

だということがわかりました。

子IPの中でXILINXのIPを使う場合は.xciが必要ですが、.xcoは古いISEのCoreGenなので適当なVivadoに読み込ませてxciに変換すれば不要だし、vhoやxmlは不要であることがわかりました。xciだけ残しておけば他のファイルはすべて不要です。

こんな感じでgitを使ってVivadoのプロジェクトを管理し、最小限のソースのみでやりくりできるようになりました。

Git

NahiVivaは

https://github.com/tokuden/NahiViva

から取得できます。

ぜひ使ってみてください。

 

|

« VivadoでユーザIPの設定を一括で変える方法 | トップページ | Cosmo-Zの回路も完全Vivado化を達成 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« VivadoでユーザIPの設定を一括で変える方法 | トップページ | Cosmo-Zの回路も完全Vivado化を達成 »