Vivadoのプロジェクトはバージョン管理がしにくい。やたらと意味不明なファイルが更新されてファイルのmodificationマークが付くし、しかもファイル群が巨大なので、全部格納していたのでは、リポジトリが大変なことになる。 そのために、XilinxはVivadoのプロジェクトを使うにあたって、バージョン管理システムを使うときのガイドを示している。
- Vivado Design Suite におけるバージョン管理システムの使用
http://japan.xilinx.com/support/documentation/application_notes/j_xapp1165.pdf
- Vivado Design Suite ユーザーガイド
http://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2013_2/ug896-vivado-ip.pdf
基本的には、最小限のものだけバージョン管理システムに登録し、それ以外のものは自動生成に任せるのが良いと思う。IPの利用のときは特に顕著だ。 ついでに言うなら、gitを使うなら、IPはsubmoduleで管理したほうが良いかな。全部のIPを同じプロジェクトで管理するのは大変だし、再利用が難しくなる。
とりあえず、チュートリアルに従って、どのようにしてバージョン管理システムで管理すれば良いのか、いろいろ試してみた。
- まずはgithubの上にでも、IP用のリポジトリを作成する。ここでは、 https://github.com/msyksphinz/fpga_ips を作ってみた。
- [Tasks]→[Manage IP]→[New IP Location]をクリックする


- 必要に応じてコンフィグを変えていき、Managed IPプロジェクトを作成していく。

僕はZynqユーザなのでZynqを設定した。


IPプロジェクトの設定が完了すると、プロジェクトマネージャが表示される。
この状態で、プロジェクトのツリー構造は以下のようになっている。
$ tree .
.
└── managed_ip_project
├── managed_ip_project.cache
│ └── compile_simlib
└── managed_ip_project.xpr
3 directories, 1 file
この段階で、もうgitに登録してしまおう。
$ cd fpga_ips $ git init $ git add managed_ip_project $ git commit -a -m "Func: add initial manager files"
- 新しいIPを作って登録をする。まずは、IP Generatorで欲しいIPを選択する。

ここで、AXI BRAM Controllerを選択した。

Xilinxのgitガイドにも書いてあるように、ウィザードの最後で、「Skip」とする。これで、余計なファイルが生成されない。

これで、右上のProject Manager [sources]にIPが追加された。この段階でこのIPのディレクトリはクリーンな状態なので、もうgitに登録してしまおう。
$ git add axi_dram_128bit $ git commit -a -m "Func: add axi_dram_128bit repository"