非プロジェクト フローでは、synth_design
コマンド実行の前後など、フローのどの時点でも Tcl スクリプトを読み込むことができます。プロジェクト ベース フローでも、Vivado IDE を使用するか、set_property
コマンドを使用して合成 run またはインプリメンテーション run にプロパティを設定することにより、これを実行できます。Tcl フック スクリプトを使用すると、合成 run またはインプリメンテーション run、あるいはインプリメンテーションの任意の段階の前 (tcl.pre
) および後 (tcl.post
) にカスタム Tcl スクリプトを実行できます。
合成 run またはインプリメンテーション run を起動すると、Vivado で定義済みの Tcl スクリプトが使用され、選択したストラテジに基づいて標準デザイン フローが処理されます。Tcl フック スクリプトによりこの標準フローをカスタマイズできます。任意の段階で Tcl スクリプトを実行できるので、有益です。デザイン フローの各段階の前後でフック スクリプトを実行できます。一般的に、次のような使用法があります。
- カスタム レポート: タイミング、消費電力、リソース使用率、またはユーザー定義の Tcl レポート。
- フローの一部でのみタイミング制約を変更。
- ネットリスト、制約、またはデバイス プログラムを変更。
GUI では、デザイン run を右クリックして Change Run Settings をクリックすると、Tcl フック スクリプトを指定できます。Design Runs ウィンドウで run を右クリックして Change Run Settings をクリックし、Design Run Settings ダイアログ ボックスを開きます。[tcl.pre
] および [tcl.post
] オプションを使用して Tcl フック スクリプトを指定します。
Tcl フック スクリプトの定義 に示すように、Vivado IDE は合成またはインプリメンテーション run のプロパティを設定して、実行前または実行後に適用する tcl.pre
スクリプトまたは tcl.post
スクリプトを指定します。Tcl コンソールまたは Tcl スクリプトの一部として、合成 run またはインプリメンテーション run に直接このプロパティを設定することも可能です。
合成 run に設定するプロパティは、次のとおりです。
STEPS.SYNTH_DESIGN.TCL.PRE
STEPS.SYNTH_DESIGN.TCL.POST
たとえば、合成前に report.tcl
スクリプトを実行するには、次のように設定します。
set_property STEPS.SYNTH_DESIGN.TCL.PRE {C:/Data/report.tcl} [get_runs synth_1]
インプリメンテーション run では、インプリメンテーション プロセスの各段階 (最適化、消費電力最適化、配置、配置後の消費電力最適化、物理最適化、配線、ビットストリーム生成) の前後に Tcl スクリプトを実行できます。これらのプロパティは、次のとおりです。
STEPS.OPT_DESIGN.TCL.PRE
STEPS.OPT_DESIGN.TCL.POST
STEPS.POWER_OPT_DESIGN.TCL.PRE
STEPS.POWER_OPT_DESIGN.TCL.POST
STEPS.PLACE_DESIGN.TCL.PRE
STEPS.PLACE_DESIGN.TCL.POST
STEPS.POST_PLACE_POWER_OPT_DESIGN.TCL.PRE
STEPS.POST_PLACE_POWER_OPT_DESIGN.TCL.POST
STEPS.PHYS_OPT_DESIGN.TCL.PRE
STEPS.PHYS_OPT_DESIGN.TCL.POST
STEPS.ROUTE_DESIGN.TCL.PRE
STEPS.ROUTE_DESIGN.TCL.POST
STEPS.WRITE_BITSTREAM.TCL.PRE
STEPS.WRITE_BITSTREAM.TCL.POST
tcl.pre
および tcl.post
スクリプト内のパスは、プロジェクトの関連する run ディレクトリ <project>/<project.runs>/<run_name>
を基準とします。現在のプロジェクトまたは現在の run の DIRECTORY プロパティを使用して、Tcl フック スクリプト内の相対パスを定義できます。get_property DIRECTORY [current_project]
get_property DIRECTORY [current_run]