ブロック レベルの制約は、次のような規則に従う必要があります。
- クロックがデザインの最上位で作成されるようにする場合は、ブロック レベルの制約内でクロックを定義しないようにします。
ブロック内では、get_clocks -of_objects コマンドを使用してクエリします。このコマンドは、デザインの特定オブジェクトを介するクロックすべてを返します。
例:
set blockClock [get_clocks -of_objects [get_ports clkIn]]
クロックをブロック内で定義する必要がある場合は、インスタンシエート済み入力/入出力バッファーを駆動する入力/入出力ポートか、クロックを作成/変換するセルの出力 (MMCM/PLL またはタイミング ツールで自動的に処理される特別バッファーは除く) に対して定義する必要があります。
例:
- 入力バッファーの付いた入力クロック
- クロック分周器
- GT 復元クロック
- ポートが最上位ポートに直接接続され、I/O バッファーが IP 内にインスタンシエートされている場合にのみ、入力および出力遅延を指定します。
例:
- 入力バッファーの付いた入力データ ポート
- 出力バッファーの付いた出力データ ポート
- IP 内に制限されていない 2 つのクロックにタイミング例外を定義しないようにします。
- クロック名は最上位のクロック名に基づいて変わるので、クロックは名前で指定しないようにしてください。ブロックが複数回インスタンシエートされる場合も名前で指定しないでください。
- ブロックが同じ最上位デザインで複数回インスタンシエートできる場合、配置制約は追加しないでください。