IP コアは、1 つまたは複数の XDC ファイルと共に配布されることが多く、そのような IP コアが RTL プロジェクト内で生成されると、その XDC ファイルもさまざまなデザイン コンパイル段階で使用されます。
たとえば、次の図では、プロジェクトに含まれている IP の 1 つが、1 つの XDC ファイルと共に配布されています。
デフォルトでは、IP の XDC ファイルがユーザー XDC ファイルの前に読み込まれます。この順序で処理することで、IP に XDC で参照できるクロック オブジェクトを作成できます。また、ユーザー制約が IP の後に評価されるので、IP コアで設定された物理制約をユーザー制約で上書きできます。ただし、ユーザーまたは別の IP で生成されたクロック オブジェクトに依存している IP コアは例外です (get_clocks -of_objects [get_ports clka]
など)。この場合、IP の XDC がユーザー ファイルの後に読み込まれます。
この動作は、各 XDC ファイルに設定されている PROCESSING_ORDER プロパティで指定します。
- EARLY: 最初に読み込む必要のあるファイル
- NORMAL: デフォルト
- LATE: 最後に読み込む必要のあるファイル
IP の XDC では、PROCESSING_ORDER プロパティは EARLY または LATE に設定されます。IP の XDC ファイルの PROCESSING_ORDER プロパティが NORMAL に設定されていることはありません。PROCESSING_ORDER 設定が同じユーザー XDC (または Tcl) ファイルは、Vivado IDE で表示されている順序で読み込まれます。グループ内の順序を変更するには、Vivado IDE の制約セット内でファイルの位置を移動するか、reorder_files
コマンドを使用します。
PROCESSING_ORDER 設定が同じ IP の XDC ファイルは、IP コアをインポートまたは作成した順序で読み込まれます。この順序は、プロジェクトの作成後には変更できません。
ユーザー グループと IP XDC PROCESSING_ORDER グループの間の相対的な順序は、次のとおりです。
- EARLY とマークされているユーザー制約
- EARLY とマークされている IP 制約 (デフォルト)
- NORMAL とマークされているユーザー制約
- LATE とマークされている IP 制約 (クロック依存関係を含む)
- LATE とマークされているユーザー制約
次の図に、PROCESSING_ORDER プロパティの設定例を示します。
これと同等の Tcl コマンドは、次のとおりです。
set_property PROCESSING_ORDER EARLY [get_files wave_gen_pins.xdc]
report_compile_order -constraints
コマンドを使用して、IS_ENABLED、USED_IN_SYNTHESIS、および USED_IN_IMPLEMENTATION などの上記のプロパティに基づいてツールで決定された XDC ファイル読み出しシーケンスがレポートされるようにします。