この例では、CDC はハンドシェイク メカニズムの一部です。データがサンプリングできるようになると、ソース クロック ドメインで send 信号が生成されます。デスティネーション クロック ドメインでは、この send 信号に 4 段のシンクロナイザーが使用されます。4 段のシンクロナイザーの後、この信号は CDC デスティネーション レジスタのクロック イネーブル ピンを駆動します。このようなクロック イネーブル制御 CDC 構造では、バス スキューはデータが有効であるデスティネーション クロック サイクル数を表すので、バス スキューを CE パス上の段数に調整する必要があります。
ソース クロック周期が 5 ns でデスティネーション クロック周期が 2.5 ns である場合、CDC パスのバス スキューは 10 ns (4 × 2.5 ns) に設定する必要があります。
set_bus_skew -from [get_cells src_hsdata_ff_reg*] -to [get_cells dest_hsdata_ff_reg*] 10.000
図 1. set_bus_skew の例 1
注記: この CDC を完全なものにするため、
set_max_delay
制約を追加してソース レジスタとデスティネーション レジスタが遠くに配置されすぎないようにする必要があります。set_max_delay -datapath_only -from [get_cells src_hsdata_ff_reg*] -to [get_cells dest_hsdata_ff_reg*] 10.000