同期 CDC - 2023.2 日本語

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

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 日本語

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

重要: 異なる MMCM/XPLL/DPLL からのクロック間にある CDC パスでは、MMCM/XPLL/DPLL のクロック挿入遅延は制御が困難です。この場合、AMDではこれらのクロック乗せ換えを非同期として扱い、それに合わせてデザインを変更することをお勧めします。
重要: CDC パスが、入力クロックと出力クロック間、あるいは MMCM または XPLL プリミティブの 2 つ以上の出力クロック間にある場合は、 『Versal アダプティブ SoC クロッキング リソース アーキテクチャ マニュアル』 (AM003)このセクションを参照して、プリミティブのコンフィギュレーションに基づいてクロック間のタイミングが安全なものになるようにしてください。DPLL の詳細は、 『Versal アダプティブ SoC クロッキング リソース アーキテクチャ マニュアル』 (AM003)このセクションを参照してください。

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

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

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

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

次の図に、CLKOUT0 クロックを 1 分周 (O1 ピン) および 2 分周 (O2 ピン) する 1 つの MBUFGCE セルを示します。MBUFGCE セルでは、ネットは最下位分周器に到達するまでシングル クロック トラックを使用して配線されるので、論理出力ネットに追加のクロック制約は必要ありません。

図 2. 1 つの MMCM 出力に接続された MBUFGCE を使用する同期 CDC

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

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

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

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