同期 CDC - 2023.2 日本語

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

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

デザインに同じ MMCM/PLL からのクロック間の同期 CDC パスが含まれる場合、次の方法を使用して、クロック挿入遅延とスキューを制御することにより、これらのパスのスラックを制御できます。

重要: 異なる MMCM/PLL からのクロック間にある CDC パスでは、MMCM/PLL のクロック挿入遅延は制御が困難です。この場合、AMDではこれらのクロック乗せ換えを非同期として扱い、それに合わせてデザインを変更することをお勧めします。

同じ MMCM/PLL の異なる出力ピンからの 2 つのクロック間のパスに対してタイミング解析が実行されると、MMCM/PLL 位相エラーによりそのパスにクロックのばらつきが追加されます。高クロック周波数を使用するデザインでは、位相エラーによりセットアップとホールドの両方でタイミング クロージャ問題が発生することがあります。

次の図に、位相エラーのある場合とない場合のパスの例を示します。パス 1 は、同じ MMCM 出力に接続された 2 つのバッファーからクロックが供給されている CDC パスで、位相エラーはありません。パス 2 には、2 つの異なる MMCM 出力から 2 つのクロックが供給されており、位相エラーがあります。

図 1. MMCM および位相エラー

同じ MMCM/PLL からの 2 つの同期クロックがシンプルな周期比 (/2 /4 /8) である場合は、2 つの BUFGCE_DIV バッファーに接続される 1 つの MMCM/PLL 出力を使用すると、2 つのクロック ドメイン間で位相エラーが発生しないようにできます。BUFGCE_DIV バッファーでは、クロック分周 (/1、/2、/4、/8) が実行されます。その他の周期比 (/3、/5、/6、/7) も使用できますが、クロックのデューティ サイクルを変更する必要があり、混合エッジのタイミング パスがさらに困難になります。

注記: BUFGCE と BUFGCE_DIV のセル遅延は異なるので、AMDでは両方の同期クロックに同じクロック バッファー (2 つの BUFGCE または 2 つの BUFGCE_DIV バッファー) を使用することをお勧めします。

次の図に、CLKOUT0 クロックを 1 と 2 でそれぞれ分周する 2 つの BUFGCE_DIV を示します。

重要: BUFGCE_DIVIDE プロパティが 1 より大きい値に設定されている並列の BUFGCE_DIV セル間のタイミングが安全なものになるように、両方のバッファーで同じイネーブル信号 (CE) および同じリセット信号 (RST) を使用する必要があります。そうしないと、ハードウェアで分周クロックがお互いに位相シフトしたものになる可能性があり、これは Vivado ツールによりレポートされません。
図 2. 1 つの MMCM 出力に接続された BUFGCE_DIV を使用する MMCM 同期 CDC

同じ MMCM または PLL からの複数のクロック間のバランスが自動的に調整されるようにするには、バランス調整する必要のあるクロック バッファーで駆動されるネットに同じ CLOCK_DELAY_GROUP プロパティ値を設定します。次はその他の推奨事項です。

  • CLOCK_DELAY_GROUP を設定するクロックの数が多すぎないようにします。設定するクロックの数が多すぎると、クロック配置ツールに負荷がかかり、ソリューションが最適でなくなるか、エラーが発生します。
  • タイミング サマリ レポートでクリティカル同期 CDC パスを確認し、タイミングを満たすためにどのクロックの遅延を一致させる必要があるかを判断します。
  • 要件が厳しく、クロック トポロジが同一の同期クロックのグループに対しては、CLOCK_DELAY_GROUP の使用は制限してください。
    重要: AMDでは、最適なクロッキング構造を作成するため、Clocking Wizard を使用することをお勧めします。Clocking Wizard では、BUFGCE と BUFGCE_DIV が組み合わせて使用され、関連のクロック グループ制約が設定されます。