Vivado 2014.1では、.tclスクリプトを使用してプロジェクトを再生成できます。
これを行うには、プロジェクトを開いた状態で、[ファイル]-> [プロジェクトtclの書き込み]に移動します。
基本プロジェクト
通常、ソースと.tclスクリプトはプロジェクトディレクトリ以外の場所に保存します。プロジェクト内で生成されたxilinx IPコアは、コアを右クリックして[IPのコピー]を選択することにより、他の場所にコピーできます。元を削除します。tclスクリプトが生成されると、これらのファイルへの相対リンクが作成されます。これは通常、私のディレクトリ構造は次のようになります。
base_project/
srcs/
project.v
ip/
ip1/
ip1.xml
ip1.xci
genproject.tcl
IP .xmlおよび.xciファイルのみをコミットする必要があります。(そして、技術的には、これでさえ必要ではありません。最後の注意事項を参照してください)。
これがgitにコミットされます。project.xprまたはプロジェクトディレクトリがないことに注意してください。
を実行するgenproject.tcl
と、プロジェクト用の別のディレクトリが作成されます。
base_project/
srcs/
ip/
genproject.tcl
projectdir/
project.runs/
project.cache/
project.xpr
この新しいフォルダは完全に使い捨てです。この構造を作成するには、次の方法でtclスクリプトを変更します。
最初の3行を次のように変更します。
# Set the reference directory for source file relative paths (by default the value is script directory path)
set origin_dir [file dirname [info script]]
# Set the directory path for the original project from where this script was exported
set orig_proj_dir "[file normalize "$origin_dir/projectdir"]"
# Create project
create_project project $projectdir/project
これにより、新しいプロジェクトディレクトリとそのディレクトリに新しいプロジェクトが作成されます。
次に、正しい場所を指すようにパスを変更します。スクリプト内の他の場所でこれらのパスを変更する必要がある場合があります。
# Set 'sources_1' fileset object
set obj [get_filesets sources_1]
set files [list \
"[file normalize "$origin_dir/srcs/project.v"]"\
"[file normalize "$origin_dir/ip/ip1/ip1.xci"]"\
]
add_files -norecurse -fileset $obj $files
この回答に見られるように、IPコアのデザインランも変更します。
.wcfgファイルは、ipおよびsrcsと同様の方法で含めることができます。
ここで、より単純なプロジェクト(ソースとIPのみが含まれ、ブロック図は含まれません)の処理が終了します。ブロック線図データを保存するには、以下も実行する必要があります。
ブロック図プロジェクト
ブロック図を開いた状態でブロック図を保存するには、[File]-> [Export]-> [Block Diagram to Tcl]を選択し、他のtclファイルと同じディレクトリに保存します。
次にGenerate_Wrapper.tcl
、ブロック図ラッパーファイルを作成するスクリプトを作成したので、手動で行う必要はありません。project / project.srcsフォルダーはbdデータの保存に使用されますが、bdはtclスクリプトに保存されるため、完全に使い捨てです。これを他の2つで保存します。
set origin_dir [file dirname [info script]]
make_wrapper -files [get_files $origin_dir/project/project.srcs/sources_1/bd/design_1/design_1.bd] -top
add_files -norecurse -force $origin_dir/project/project.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v
update_compile_order -fileset sources_1
update_compile_order -fileset sim_1
最後に、genproject.tcl
ブロック線図とラッパーを生成するために次の行を追加します。
source $origin_dir/Create_bd.tcl
source $origin_dir/Generate_Wrapper.tcl
regenerate_bd_layout
ソースのないプロジェクト(ブロック図のみ)の場合、gitコミットは次のようになります。
base_project/
Generate_Wrapper.tcl
Create_Bd.tcl
genproject.tcl
すべてを生成するには、を実行しgenproject.tcl
ます。
特に効率的な場合は、これらすべてを1つにまとめることもできますが、まだ説明していません。
カスタムコンポーネント:コンポーネントプロジェクト
カスタムコンポーネントの作成に関するもう1つの簡単なメモ。component.xmlがある場合は、tclソースリストに追加します。
"[file normalize "$origin_dir/component.xml"]"\
そして、次のセクションも追加します。
set file "$origin_dir/component.xml"
set file [file normalize $file]
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
set_property "file_type" "IP-XACT" $file_obj
これには、簡単なカスタマイズのためのプロジェクトへのコンポーネント設計が含まれます。
カスタムコンポーネント:コンポーネントの参照
次のように、カスタムコンポーネントリポジトリパスを指定できます。
# Set IP repository paths
set obj [get_filesets sources_1]
set_property "ip_repo_paths" "[file normalize "$origin_dir/path/to/repository"]" $obj
リポジトリフォルダーには、.xmlファイルを含む個々のフォルダーがあります。したがって、.xmlを含むフォルダーではなく、そのフォルダーの親を参照しています。例えば:
repository/
component1/component1.xml
component2/component2.xml
これらのtclスクリプトをどのように実行しますか?
Vivadoを開き、プロジェクトを開かずに、[ツール]-> [TCLスクリプトの実行]を選択して、スクリプトに移動します。
追加のTCLノート
Vivadoで実行するすべてのコマンドは、tclコンソールにtclコマンドとして表示されます。たとえば、GUIを使用して新しいザイリンクスIPを生成すると、tclコンソールに次のように表示されます。
create_ip -name floating_point -vendor xilinx.com -library ip -module_name floating_point_0
set_property -dict [list CONFIG.Operation_Type {Fixed_to_float} CONFIG.A_Precision_Type {Custom} CONFIG.C_A_Exponent_Width {38} CONFIG.C_A_Fraction_Width {0} CONFIG.Result_Precision_Type {Custom} CONFIG.C_Result_Exponent_Width {8} CONFIG.C_Result_Fraction_Width {16} CONFIG.Flow_Control {NonBlocking} CONFIG.Has_ARESETn {true}] [get_ips floating_point_0]
これはいくつかのことを意味します。
xilinx IPコアを保存する必要さえありません-いったんそれらが希望通りになったら、コマンドをtclスクリプトにコピーし、ip /をコミットする必要はもうありません。
-module_nameの後に-dir引数を使用してIPディレクトリを指定し、任意の場所に配置します(デフォルトではproject.srcsにあります)。
GUIで行うほとんどの操作はtclで行うことができます。xilinxがどのように機能するかを確認する最も簡単な方法は、GUIでそれを行い、その後TCLコンソールの内容を確認することです。
この膨大なPDFには、すべてのvivado tclコマンドの詳細が記載されています。