CLOCK_LOW_FANOUT 制約の使用 - 2023.2 日本語

Versal アダプティブ SoC ハードウェア、IP、およびプラットフォーム開発設計手法ガイド (UG1387)

Document ID
UG1387
Release Date
2023-11-15
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 ロジックおよびクロック ゲーティングされたロジックが示されます。クロック ゲーティング同期化回路は CLOCK_REGION に配置され、XPIO の BUFG からの最小限の遅延が挿入されます。

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

XPIO グローバル クロック バッファーで駆動されるクロック ネットの制約例

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

注記: XPIO CLOCK_REGION とファブリック CLOCK_REGION は揃っていないため、CLOCK_LOW_FANOUT 制約を使用すると、XPIO グローバル クロック バッファーからの最小限の遅延が挿入される 1 つのクロック領域にロードが配置されます。

次に、XPIO に配置されたグローバル クロック バッファーで直接駆動されるクロック ネットに CLOCK_LOW_FANOUT 制約を設定する例を示します。入力クロック ポート clkIn は、PACKAGE_PIN が XPIO CLOCK_REGION X2Y0 内の GCIO に設定されており、DPLL を駆動します。DPLL はグローバル クロック バッファーを駆動し、そのグローバル クロック バッファーはロード数が 128 個のクロック ネットワークを駆動します。グローバル クロック バッファーのロードは、すべて CLOCK_REGION X1Y1 内に配置されます。

# PACKAGE_PIN BB44 - High Performance XPIO IOBank 702 - CLOCK_REGION X2Y0
set_property PACKAGE_PIN BB44 [get_ports clkIn]
set_property IOSTANDARD SSTL12 [get_ports clkIn]
set_property CLOCK_LOW_FANOUT TRUE [get_nets -of [get_pins BUFG_clkout1_inst/O]]
図 4. XPIO CLOCK_LOW_FANOUT 例の Device ウィンドウおよび Schematic ウィンドウ

HDIO グローバル クロック バッファーで駆動されるクロック ネットの制約例

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

次に、HDIO に配置されたグローバル クロック バッファーで直接駆動されるクロック ネットに CLOCK_LOW_FANOUT 制約を設定する例を示します。入力クロック ポート clkIn は、PACKAGE_PIN が HDIO CLOCK_REGION X0Y4 内の GCIO に設定されており、DPLL を駆動します。DPLL はグローバル クロック バッファーを駆動し、そのグローバル クロック バッファーはロード数が 128 個のクロック ネットワークを駆動します。グローバル クロック バッファーのロードは、すべて CLOCK_REGION X0Y4 内に配置されます。

# PACKAGE_PIN L35 - High Density HDIO IOBank 306 - CLOCK_REGION X0Y4
set_property PACKAGE_PIN L35 [get_ports clkIn]
set_property IOSTANDARD LVCMOS33 [get_ports clkIn]
set_property CLOCK_LOW_FANOUT TRUE [get_nets -of [get_pins BUFG_clkout1_inst/O]]
図 5. HDIO CLOCK_LOW_FANOUT 例の Device ウィンドウおよび Schematic ウィンドウ