範囲を特定したクエリのガイドライン - 2022.1 日本語

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

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

このフローをスムーズに機能させるには、制約が IP またはサブモジュール インスタンスのみに適用されるように XDC 制約を記述する必要があります。Vivado ツールでは、制約の適用範囲の設定で説明したように、クエリの範囲を特定の階層レベルに設定できます。IP またはサブモジュール用に制約を作成する際は、クエリ コマンドの動作を理解しておく必要があります。

  • セル/ネット/ピン オブジェクトのクエリは、指定されたインスタンスおよびそのサブモジュールに限定されます。
    • get_cells/get_nets/get_pins <name pattern>
    • オブジェクトの NAME プロパティは、適用範囲に指定されたインスタンスだけでなく、最上位に対するオブジェクトの完全階層パスを示します。NAME プロパティに対して get_* コマンドの -filter オプションを使用する場合は、glob 文字列一致演算子を使用し、* で開始するパターンを指定します。次に例を示します。
      get_nets -hierarchical -filter {NAME =~ *clk}
  • get_ports では、ブロック/IP のポートが直接最上位ポートに接続されている場合は、最上位ポートが戻されます。それ以外の場合、get_ports では階層ピンが戻されます。
  • ネットリストのヘルパー コマンドも範囲が限定されます。
    • all_ffsall_latchesall_ramsall_registersall_dspsall_hsios は、現在のインスタンスに含まれるインスタンスのみを返します。
  • I/O ヘルパー コマンドは、範囲が限定された XDC では使用できません。
    • all_inputsall_outputs
  • クロック コマンドでは範囲は限定されず、デザインのすべてのタイミング クロックが返されます。
    • get_clocksall_clocks
  • 最上位およびローカル クロック オブジェクトは、ネットリストに対して get_clocks -of_objects を使用してクエリできます。
    • 現在のインスタンスに供給されるクロックは、get_clocks -of_objects [get_ports <interfacePinName>] を使用すると取得できます。
    • 現在のインスタンス内で自動生成されたクロックは、get_clocks -of_objects [get_pins <instName/outPin>] (instName はクロック ジェネレーター インスタンス) を使用すると取得できます。
  • デザインにあるオブジェクトをクエリするには、-of_objects オプションを使用します。
    • 例: get_pins -leaf -of_objects [get_nets local_net]
  • 現在のインスタンス インターフェイスのネットに接続されている最上位ポートをクエリできます。
    get_ports -of_objects [get_nets <scoped_instance_net>]
  • IP/サブモジュール インターフェイス ピンはクエリできません。
    • get_pins clk で次のようなエラーが返されます。
  • パス トレース コマンドも範囲が限定されます。
    • all_fanin/all_fanout は指定された範囲でのみ実行され、その境界を越えては実行されません。
  • 特定クロックに接続されているセルをすべてクエリするには、all_registers コマンドに -clock オプションを指定するのではなく、 get_cells/get_pins/get_nets コマンドでできる限り具体的なパターンを指定します。制約する必要があるのが数個のオブジェクトであるのに、多数のオブジェクトを含むリストが返されると、実行時間が長くなる可能性があります。