このフローをスムーズに機能させるには、制約が 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_ffs
、all_latches
、all_rams
、all_registers
、all_dsps
、all_hsios
は、現在のインスタンスに含まれるインスタンスのみを返します。
-
- I/O ヘルパー コマンドは、範囲が限定された XDC では使用できません。
-
all_inputs
、all_outputs
-
- クロック コマンドでは範囲は限定されず、デザインのすべてのタイミング クロックが返されます。
-
get_clocks
、all_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
コマンドでできる限り具体的なパターンを指定します。制約する必要があるのが数個のオブジェクトであるのに、多数のオブジェクトを含むリストが返されると、実行時間が長くなる可能性があります。