FPGA開発日記

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

VivadoのIPをgitなどのバージョン管理システムで取り扱う方法 (IPをsubmoduleとして管理する)

これはVivadoの使い方じゃなくて、gitの使い方なんだけれども。

github.com

http://japan.xilinx.com/support/documentation/application_notes/j_xapp1165.pdf

http://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2013_2/ug896-vivado-ip.pdf

前回までで作成したリポジトリを、別プロジェクトのsubmoduleとして使って、gitのリポジトリを階層構造として管理しておく。

IPと、それを使う側のリポジトリを別々に分ける理由として、

  • そもそもこれらは関係無いファイル同士(IPとそれを使う側のデザインは、関連性は強くない)
  • IPの改変をしただけでは、本体側のデザインのリビジョンが変わる訳ではない(急な変更が発生する訳ではない)

従って、依存関係の弱いモジュールは、なるべくならリポジトリを分けるべきだと思う。ここでは、IPを別モジュールとしてロードした方法を示す。

$ cd path_of_main_project
$ git submodule add https://github.com/msyksphinz/fpga_ips.git
$ git status
$ git st
On branch axi_connect
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   .gitmodules
        deleted:    fpga_ips

Untracked files:
  (use "git add <file>..." to include in what will be committed)

...

こんな感じで追加される。

$ git commit -a -m "Func: add fpga_ips directory as submodule"

できた。

あとは、ここに入っているxciなどを好きに使うだけで良い。シミュレーション用のxxx_funcsim.vを生成したければ、普通にVivadoから追加したIPを右クリックして、Generate Product Outputsをクリックすれば作成される。 ただし、それらの生成されたファイルはリポジトリには入らない。それは「一つのxciファイルが存在していれば、そこから自動生成できるファイルはリポジトリに入れるべきではない」という精神に則っている。 必要ならば生成して、使えばいいのでわざわざリポジトリには登録しないし、それでリポジトリが汚くならないように配慮するという方針だ。

f:id:msyksphinz:20150606214924j:plain