Vivado IPコア コピー

Vivadoのip_repoの中に自分でつくったIPコアを複製したくなったときにコピーする方法。

Vivadoで作るユーザーIPのバージョン管理が、どういう設計手順を想定しているのかわからないが、とにかく使いにくいので、
結局自分でIPコアをコピーしてメジャーバージョンを変えるみたいな方法をとっている。
(個人的にはIPコアのポートを変えるほどの変更を加えたらメジャーバージョンをインクリメントする感じではあるが。。)

①IPコア"HOGE_1.0"がある。
②ip_repoにHOGE_2.0を作って中身をコピー
③component.xmlの中身を編集

 <spirit:modelName>HOGE_v1_0</spirit:modelName>

トップモジュール?を指定している?

<spirit:name>hdl/HOGE_v1_0.v</spirit:name>

ブロックデザイン上のGUI表示を司るtcl

<spirit:name>xgui/HOGE_v1_0.tcl</spirit:name>

とにかくIP設定のなにか

<spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.Component_Name" spirit:order="1">HOGE_v1_0</spirit:value>

その他いろいろ

HOGE_1.0だったり
HOGE_v1.0だったり
HOGE_v1_0だったり
とにかく表記が揺れているがそれらすべてを置換する。
間違えてバスのバージョンを変更しないようにする。

以下のフィールドはバスの定義に関するものなので変更しない。

<spirit:busInterface>
       <spirit:name>fifo</spirit:name>
       <spirit:displayName>fifo</spirit:displayName>
       <spirit:description>fifo</spirit:description>
       <spirit:busType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="fifo_write" spirit:version="1.0"/>
       <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="fifo_write_rtl" spirit:version="1.0"/>
       <spirit:master/>
       <spirit:portMaps>
       <spirit:portMap>

これで不整合があればIPコアをVivadoで編集するときにWarningになって出てくるのでそれを消すようにcomponent.xmlを修正すればなんとかなった。