制約ファイルの処理順序 - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: IP を使用した設計 (UG896)

Document ID
UG896
Release Date
2023-11-03
Version
2023.2 日本語

デフォルトでは、PROCESSING_ORDER 値は IP XDC 制約の場合は EARLY に、ユーザー制約は NORMAL に設定されています。これにより、前に処理された制約よりも後に処理された同じ制約が優先されます。

IP XDC ファイルの処理順序は、次のようになります。

  • EARLY に設定されたユーザー XDC
  • EARLY に設定された IP XDC
  • NORMAL に設定されたユーザー XDC (デフォルト)
  • LATE に設定された IP XDC
  • LATE に設定されたユーザー XDC

この方法を使用すると、XDC を IP XDC の前または後に処理するようにできます。

詳細は、次の資料を参照してください。

  • 『Vivado Design Suite ユーザー ガイド: カスタム IP の作成とパッケージ』 (UG1118)
  • 『Vivado Design Suite ユーザー ガイド: 制約の使用』 (UG903)

Vivado IP では、XDC 制約ファイルを複数生成できます。デフォルトでは、次の可能性があるため、ユーザー制約よりも前に IP 制約が処理されます。

  • IP からはクロックが提供されることがあり、これがエンドユーザー制約で使用できるようになっている必要がある。
  • IP に物理制約が含まれる場合、必要に応じてエンドユーザー制約を適用してそれらを無効にできる。

次に、制約のコンパイル順をレポートする report_compile_order Tcl コマンドの例を示します。

report_compile_order -constraints

このコマンドでは、合成およびインプリメンテーションで使用される制約の処理順序と、IP の DCP 生成に使用される各 IP の合成 run 別に制約が示されます。

IP で提供される制約の中には、エンドユーザーまたは別の IP のクロック オブジェクトに依存するものもあります。これらの制約は、別の XDC ファイルで提供され、エンドユーザー制約の後に処理されます。

通常、クロック作成コマンドおよび外部クロックに依存しないコマンドを含むコアの XDC ファイルが IP により提供されます。制約ファイル名は <ip_name>.xdc で、「コアの XDC ファイル」と呼ばれます。

IP には、クロックに依存するコマンドを含む別の XDC ファイルも含めることができます。

最上位クロックは、ほかの制約から、または依存関係のあるほかの IP から供給されるので、これらのクロックを必要とする制約はすべて <ip_name>_clocks.xdc の最初に定義する必要があります。デフォルトでは、Vivado IDE でユーザー制約およびその他の IP コアの XDC ファイルの後に <ip_name>_clocks.xdc ファイルが処理されます。

ほとんどの IP では、OOC の XDC ファイル (<ip_name>_OOC.xdc) も提供されます。このファイルには、IP への入力クロックのデフォルトの最上位定義が含まれます。このファイルは、推奨されるデフォルト フロー (IP を最上位デザインから独立させて OOC で合成) を使用する場合、DCP の作成時にのみ使用されます。Vivado Design Suite で IP が最上位デザインから独立させて OOC で合成されると、エンドユーザーまたはその他の IP で作成されたクロックは使用できないので、IP の合成にクロック定義を提供するためにこのファイルが必要となります。

ロジックを IP と共にインプリメンテーションする際は、制約が適用される前にすべてのネットリストがリンクされるので、<ip_name>_ooc.xdc は必要ありません。この段階では、クロックの必要な IP に対してユーザー作成クロックまたは IP 作成クロックを使用できます。

IP の中には追加の XDC ファイルが提供されているものもあります。これらのファイルには、合成中またはインプリメンテーション中にのみ使用される制約などが含まれます。IP で提供される XDC ファイルのリストは、IP のファイルおよびディレクトリ構造を参照してください。

一部の IP では、 『Vivado Design Suite ユーザー ガイド: システム レベル デザイン入力』 (UG895) で定義されている Vivado ボード フローがサポートされています。

パーツではなくプラットフォーム ボードをターゲットとするプロジェクトを作成する場合は、IP のカスタマイズ中に、IP との接続にそのボード上のどの接続を使用するか指定できます。これで <ip_name>_board.xdcPACKAGE_PIN などの物理制約を含む IOSTANDARD ファイルが生成されます。

XDC 制約の詳細は、 『Vivado Design Suite ユーザー ガイド: 制約の使用』 (UG903) を参照してください。

制約は、処理後はプロジェクトの「プロパティ」になります。プロパティの詳細は、 『Vivado Design Suite プロパティ リファレンス ガイド』 (UG912) を参照してください。

ビデオ: IP フロー中に次の制約がどのように使用されるかを示すデモは、Vivado Design Suite QuickTake ビデオ: デザイン制約の概要をご視聴ください。

次のセクションで、IP を処理する際に Vivado Design Suite で作成される制約ファイルの一部を簡単に説明します。

dont_touch.xdc 制約

Vivado では、IP の合成中に dont_touch.xdc を使用して IP 最上位に DONT_TOUCH プロパティが設定されます。これにより、インターフェイス ポートが削除されなくなります。

OOC を使用した合成 (デフォルト フロー) の合成ログ ファイル、またはエンドユーザー RTL と一緒に IP を合成した場合、この制約ファイルが処理されているのがグローバル合成ログ ファイルで確認できます。

in_context.xdc 制約

デフォルトでは、IP は OOC で合成されるので、最上位の合成中はブラック ボックスとして処理されます。次の状況下では、IP DCP の作成中に <ip_name>_in_context.xdc ファイルが作成され、IP の DCP ファイルに保存されます。

  • IP により IP の境界で参照できるクロックが生成される
  • IP に I/O バッファーのインスタンスがある

<ip_name>_in_context.xdc ファイルが存在する場合、ユーザー ロジックの合成時にエンドユーザー制約より前に処理されます。インプリメンテーション中には IP はブラック ボックスではなくなるので、このファイルは不要です。

クロックが作成されると、IP ブラック ボックス セルの境界ピン上に配置されます。クロックは、次のタイプになります。

  • IP (Clocking Wizard IP など) の入力ポートのプライマリ クロック。
  • IP の出力ポートのプライマリ クロック。
  • 入力クロックがマスターである IP (Clocking Wizard IP など) の出力ポートの生成クロック。

クロックは、IP に入力バッファーが含まれる場合にのみ IP の入力ポートに作成されます。Clocking Wizard は、デフォルトでそのように設定されます。このクロックは、最上位ユーザー ロジックの合成中に最上位ポートに伝搬されます。

IP で生成されたクロックをユーザー制約で参照する必要がある場合は、get_clocks コマンドなどでクロックが生成される IP のピンを参照します。

get_clocks -of_objects [get_pins <IP_clock_pin>]

I/O バッファーがある場合、I/O バッファーが付いたインターフェイス ピンの IO_BUFFER_TYPE プロパティが NONE に設定されます。このプロパティを設定すると、最上位合成中に余分な I/O バッファーが追加されることはなくなります。