はじめに
ISE 14.7が2013年に最終リリースされてから8年ほどですが
Spartan-6などの開発や過去製品の保守で使用することも稀にあります。
古いプロジェクトはバージョン管理されていないことも多いので
バージョン管理できるようにする手順をまとめました。
開発環境
- Windows10
- ISE 14.7
想定
- HDLとIPのみのプロジェクト
- MicroBlazeなどのソフトコアCPU関係は対象外
手順
作業前にバックアップは取っておくこと
管理対象を整理
古いコードがプロジェクト内に混在している場合があるので必要なファイルを整理します
-
project_name.xise
を開く - ツールバーからProject > Generate Tcl ScriptでTCLを生成する
- TCLを生成する(設定はデフォルトでOK)
project_name.tcl
- All properties with complete script
- 生成された
project_name.tcl
を開く -
add_source_files
関数内でxfile add
されているファイルを管理用フォルダにコピーする-
src
、test
、ipcore
を分類する - IPについては各IP毎に
ipcore
内にフォルダを作って分類する
-
- プロジェクトから既存のファイルを削除し、コピーしたファイルを追加する
- ISEを閉じる
- プロジェクトフォルダ内の
project_name.xise
以外を全て削除する。 -
project_name.xise
を開く - Generate Programming Fileを実行し動作確認する。
- IPの再生成を確認されるのでYesを選択する
- 整理したファイルを管理できるように
.gitignore
を書く
この時点での管理対象ファイルは以下のような形になります
root/
├ .gitignore
├ project_name/
│ └ project_name.xise
├ src/
│ ├ *.vhd
│ └ *.ucf
├ test/
│ └ *.vhd
└ ipcore/
└ ip_name/
└ ip_name.xco
TCLによる管理
プロジェクト再生成までtclで管理するようにします
-
project_name.xise
を開く - ツールバーからProject > Generate Tcl ScriptでTCLを生成する
- TCLを生成する(設定はデフォルトでOK)
project_name.tcl
- All properties with complete script
-
rebuild.bat
を作成する- 各IPの再生成用のtclは適宜選択する
- rebuild.batを実行し動作確認する
-
.gitignore
を更新する-
project_name.tcl
を管理対象に追加 -
project_name.xise
を管理対象から削除 - IPの生成tclをを管理対象に追加
-
rebuild.bat
を追加
-
rebuild.bat(参考)
REM Set ENV
call C:\Xilinx\14.7\ISE_DS\settings64.bat
REM Regenerate IP
cd root\ipcore\ip_name
xtclsh gen_ip_name.tcl
REM Regenerate project
cd root\project\project_name
xtclsh project_name.tcl rebuild_project
以上で管理対象ファイルは以下のような形になります
root/
├ .gitignore
├ rebuild.bat
├ project_name/
│ └ project_name.tcl
├ src/
│ ├ *.vhd
│ └ *.ucf
├ test/
│ └ *.vhd
└ ipcore/
└ ip_name/
├ gen_ip_name.tcl # IP毎に異なる
└ ip_name.xco