FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

VivadoのIPをgitなどのバージョン管理システムで取り扱う方法 (Managed IP Projectを作成する)

Vivadoのプロジェクトはバージョン管理がしにくい。やたらと意味不明なファイルが更新されてファイルのmodificationマークが付くし、しかもファイル群が巨大なので、全部格納していたのでは、リポジトリが大変なことになる。 そのために、XilinxはVivadoのプロジェクトを使うにあたって、バージョン管理システムを使うときのガイドを示している。

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を同じプロジェクトで管理するのは大変だし、再利用が難しくなる。

とりあえず、チュートリアルに従って、どのようにしてバージョン管理システムで管理すれば良いのか、いろいろ試してみた。

  1. まずはgithubの上にでも、IP用のリポジトリを作成する。ここでは、 https://github.com/msyksphinz/fpga_ips を作ってみた。

github.com

  1. [Tasks]→[Manage IP]→[New IP Location]をクリックする

f:id:msyksphinz:20150606211131j:plain

f:id:msyksphinz:20150606211348j:plain

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

f:id:msyksphinz:20150606211416j:plain

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

f:id:msyksphinz:20150606211429j:plain

f:id:msyksphinz:20150606211448j:plain

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"
  1. 新しいIPを作って登録をする。まずは、IP Generatorで欲しいIPを選択する。

f:id:msyksphinz:20150606211812j:plain

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

f:id:msyksphinz:20150606211818j:plain

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

f:id:msyksphinz:20150606211846j:plain

これで、右上のProject Manager [sources]にIPが追加された。この段階でこのIPのディレクトリはクリーンな状態なので、もうgitに登録してしまおう。

$ git add axi_dram_128bit
$ git commit -a -m "Func: add axi_dram_128bit repository"