XDC の適用範囲限定のメカニズム - 2022.1 日本語

Vivado Design Suite ユーザー ガイド: 制約の使用 (UG903)

Document ID
UG903
Release Date
2022-06-01
Version
2022.1 日本語

制約の適用範囲の限定には、ポートを除き、SDC (Synopsys Design Constraint) 標準の一部である current_instance が使用されます。current_instance コマンドでデザインの下位階層を指定すると、オブジェクト クエリ コマンドではその階層レベルとその下位階層に含まれるオブジェクトのみが返されます。

ただし、タイミング クロック オブジェクトおよびネットリスト ポートは例外です。

  • タイミング クロックは、create_clock または create_generated_clock で定義されます。これらのクロックは、current_instance の設定にかかわらず、デザイン全体でアクセスできます。get_clocks コマンドを使用すると、現在のインスタンスに含まれないクロックまたは現在のインスタンスを越えて伝搬されるクロックをクエリできます。ザイリンクスでは、適用範囲が限定された制約を作成する際、クロックが現在のインスタンスに完全に含まれていない場合は、クロックにタイミング例外を定義することはお勧めしていません。クロックを XDC で参照できるようにするには、クロックが既に定義されている必要があるので、プロジェクトの XDC ファイルの順序を変更する必要がある場合があります。
  • get_ports コマンドを使用すると、current_instance コマンドで下位インスタンスを設定していても最上位ポートを取得できますが、read_xdc -ref/-cells コマンドで下位インスタンスに設定された XDC ファイルを読み込む場合や、SCOPED_TO_REF/SCOPED_TO_CELLS ファイル プロパティを設定した後にデザインを読み込んだ場合、get_ports コマンドの動作は異なります。
    • get_ports で使用されるポート名は、最上位ポート名ではなく、指定されているインスタンス インターフェイスのポート名です。
    • 指定されているインスタンス ポートがデザインの階層を介して最上位ポートに直接接続されている場合、get_ports コマンドで最上位ポートが返され、制約は最上位ポートに適用されます。
    • 指定されているインスタンス ポートと最上位ポートの間に I/O やクロック バッファーなどの最下位セルがある場合は、get_ports コマンドは get_pins コマンドになり、指定されている階層インスタンス ピンが返されます。

Vivado Design Suite IP の制約ファイルを読み込む際には、常に XDC の制約適用範囲メカニズムが使用されます。図 1 および図 2 に、IP レベルの XDC がこの方法で読み込まれる場合に get_ports コマンドがどのように処理されるかの例を示します。

図 1 では、I/O バッファーが IP 内にインスタンシエートされ、IP インターフェイス ピンがその階層に関係なく最上位ポートに直接接続されています。IP の XDC が適用されると、get_ports コマンドの引数は自動的に最上位ポートに置き換えられます。

これにより、IP レベルに LOC または IOSTANDARD のような物理制約を設定でき、それが必要な最上位ポートに配置されるようになります。IP レベルで、デザインの最上位ポート名を指定する必要はありません。このコマンドは自動的に最上位ポートに置き換えられます。

図 1. IP ポートの最上位ポートへの変換

次の図では、IP に I/O バッファーが含まれないので、合成エンジンは IP インターフェイス ピンと最上位ポート間に 1 つの I/O バッファーを推論します。その結果、XDC が適用されると、get_ports は IP インターフェイス ピン (階層ピンなど) の get_pins に変換されます。

図 2. IP ポートの階層ピンへの変換

この機能は、IP のインターフェイスに制約を作成する際や、最上位デザインの名前を知らずにサブレベル モジュールを作成する際に有益です。

制約適用範囲が指定されている XDC ファイルに、最上位ポートにのみ適用可能な制約が含まれているのに、IP インスタンスが最上位ポートには直接接続されていない場合、Vivado Design Suite で XDC を読み込むときにエラーが発生します。たとえば、次の制約は最上位ポートのみに適用可能で、階層ピンには適用できません。

  • set_input_delay/set_output_delay
  • set_property IOSTANDARD