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"