« 本物のオシロが壊れた | トップページ | VivadoでユーザIPの設定を一括で変える方法 »

2019.09.05

Cosmo-ZのFPGAソースをgitで管理するため再構築した

Cosmo-ZのFPGAには、従来型のCosmo-Z、Cosmo-Z Mini、お客様ごとのカスタマイズ版など、さまざまな版があります。

これらのソースをいままではgitなどのバージョン管理システムで管理していなかったので、フォルダごとの全コピーとdiffでなんとかやりとりしてきました。

ですが、Copy & diffにも限界を感じてきたので、gitで管理するためにNahiVivaを利用することにしました。

NahiVivaでVivadoプロジェクトを管理すると、次のようなメリットがあります

  • Vivadoのプロジェクトフォルダはすべて消してしまってもいつでも復活できる
  • 管理するのは以下のファイルのみなので、プロジェクトのアーカイブサイズが小さくなる
    • 自分で書いたFPGAのソース(VHDL,V)
    • プロジェクトの全体の設定が入ったTCL
    • Block Designを生成するためのTCL
    • 子IPの設定ファイル(component.xmlとxguiフォルダのtclとソース、XILINX IPのxci)
  • フォルダの移動が自由にできるので、他人に渡すときにも楽になる
  • 任意のバージョンのVivadoが開く

Vivadoのプロジェクトファイルをはじめ、tmpやcacheやhw、ip_user_files、srcsなどVivadoが生成したファイルはすべて消してもよくなります。

メインのプロジェクトのBlock Designに置いたIPは、tclに「生成方法」が取り込まれるので、xciの管理なども一切不要です。

bdファイルも不要になり、本当に最低限の必要なテキストファイルのみを管理すればよくなります。

 

プロジェクト開始前に、フォルダの状態は以下のようになっています。

Cz1

ip_repoは子IPのつまったレポジトリです。

Cz1_iprepo

srcは細かいRTLや制約ファイルが入っています。

Cz1_src

バッチファイルのopen_project_gui.cmdを実行すると、指定されたバージョンのVivadoが起動し、

Cz2

まず、空のプロジェクトが作成されます。

Cz3

そして、勝手にBlock Designが追加されて・・・

Cz4

どんどん子IPや階層が追加されていって・・

Cz5

勝手に配線がひかれます。

Cz6

ここまで見ているだけでOKです。

出来上がったTopのデザインです。

Cz8

この中のCPUモジュール。ZYNQのコアと、その周辺のレジスタファイルや、UARTの送信時にLEDを点滅させる回路などを置いてあります。

Cz9

CPU Coreと書かれた中身。ZYNQのコアとAXI Interconnect、リセットモジュールがあります。

Cz11

下の図は信号処理回路の中身。Cosmo-Zユーザは、フィルタとトリガを、自分の実験に合うようにカスタマイズすればよいように階層化しています。

Cz12

プロジェクトが生成されたら、TclコンソールでNahiRunとコマンドを打てば、自動的にbitStreamが生成され、プロジェクト名.run/impl_1から表にコピーされてきます。

このプロジェクトのサイズは、わずか5.97Mバイトで、ほとんどがテキストファイルです。

ZYNQのコアが入っているデザインでもNahiVivaはうまく動きました。

Vivadoのプロジェクト全体だと300Mバイトくらいになりますが、ユーザが保存するべき本当に必要な部分を抜き出すと6Mバイトくらいに圧縮できるのです。しかも、6Mバイトの大半はXILINXのIPで生成されたXMLなどなので、頑張れば1Mバイトくらいにまで減らせられると思います。

Vivadoのプロジェクトを小さくして管理したいなら、ぜひともNahiVivaをご検討ください。

|

« 本物のオシロが壊れた | トップページ | VivadoでユーザIPの設定を一括で変える方法 »

コメント

コメントを書く



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




« 本物のオシロが壊れた | トップページ | VivadoでユーザIPの設定を一括で変える方法 »