CLOCK_LOW_FANOUT 制約の使用 - 2023.2 日本語

FPGA および SoC 用 UltraFast 設計手法ガイド (UG949)

Document ID
UG949
Release Date
2023-11-29
Version
2023.2 日本語

クロック バッファーのロードを 1 つのクロック領域に含めるには、CLOCK_LOW_FANOUT 制約を使用できます。CLOCK_LOW_FANOUT 制約は、グローバル クロック バッファーで直接駆動されるクロック ネット セグメントまたはフリップフロップに設定できます。

注記: CLOCK_LOW_FANOUT 制約の優先順位は、ほかのクロック制約よりも低くなります。CLOCK_LOW_FANOUT が USER_CLOCK_ROOT、CLOCK_DELAY_GROUP、CLOCK_DEDICATED_ROUTE などのクロック制約と競合する場合、CLOCK_LOW_FANOUT は無視されます。

フリップフロップの制約例

CLOCK_LOW_FANOUT 制約をグローバル クロック バッファーで直接駆動されるフリップフロップのリストに設定すると、フリップフロップを隔離するため opt_design により新しい並列グローバル クロック バッファーが作成されます。place_design の実行中、新しく作成された並列グローバル クロック バッファーで駆動される隔離されたフリップフロップは、1 つのクロック領域に含まれます。

次の例では、クロック ゲーティング同期化回路の一部として使用されるフリップフロップのリストに CLOCK_LOW_FANOUT 制約を設定し、グローバル クロック バッファーのクロック イネーブルを制御しています。
set_property CLOCK_LOW_FANOUT TRUE [get_cells safeClockStartup_reg[*]]

このデザインでは最初、alwaysOn クロック ネットワークが、ほかのロジックのクロック ゲーティングに使用するクロック ゲーティング同期化回路の一部であるフリップフロップを含め、2000 個を超えるロード (フリップフロップを含む) を駆動していました。次の回路図に、opt_design を使用して新しい並列グローバル クロック バッファーを作成してクロック ゲーティング同期化回路を隔離する前と後の、alwaysOn クロック ネットワークに接続されたクロック ゲーティング同期化回路と追加のロジックを示します。

図 1. CLOCK_LOW_FANOUT をフリップフロップに適用する opt_design 変換前の回路図
図 2. CLOCK_LOW_FANOUT をフリップフロップに適用する opt_design 変換後の回路図

完全にインプリメントされたデザインの Device ウィンドウに、緑色で示されたクロック ゲーティング同期化回路と、alwaysOn ロジックおよびクロック ゲーティングされたロジックが示されます。クロック ゲーティング同期化回路は、MMCM と同じクロック領域の、グローバル クロック バッファーの近くに配置されます。

図 3. クロック ゲーティング同期化回路の配置を示した完全にインプリメントされたデザイン

クロック ネットの制約例

CLOCK_LOW_FANOUT プロパティをグローバル クロック バッファーで直接駆動されるクロック ネット セグメントに設定し、グローバル クロック バッファーのファンアウトが 2,000 ロード未満の場合、ロードの配置は 1 つのクロック領域に含まれます。

次に、グローバル クロック バッファーで直接駆動されるクロック ネットに CLOCK_LOW_FANOUT 制約を設定する例を示します。クロック ネットワークで駆動されるロードは 2000 個未満で、1 つのクロック領域に含まれます。入力クロック ポート clkIn は、PACKAGE_PIN が CLOCK_REGION X2Y0 内の GCIO に設定されており、PLLE3_ADV を駆動します。PLLE3_ADV はグローバル クロック バッファーを駆動し、そのグローバル クロック バッファーはロード数が 1379 個のクロック ネットワークを駆動します。グローバル クロック バッファーのロードは、すべて CLOCK_REGION X2Y0 内に配置されます。

# PACKAGE_PIN AF9 - IOBank 64 - CLOCK_REGION X2Y0
set_property PACKAGE_PIN AF9 [get_ports clkIn]
set_property IOSTANDARD LVCMOS18 [get_ports clkIn]
set_property CLOCK_LOW_FANOUT TRUE [get_nets -of [get_pins clkOut0_bufg_inst/O]]
図 4. CLOCK_LOW_FANOUT 例の Device ウィンドウおよび Schematic ウィンドウ