マルチビット・クロック・ドメイン・クロッシングにはタイミング制約を適用することが不可欠です。このバスに set_false_path 制約がある場合、バス両端のスキューが 1 クロック周期を超えることがあり、機能エラーの原因となることがあります。
最初の要件は、2 つのクロック・ドメイン間に set_false_path 制約がないことです。セットアップとホールドのためにそれらの間のパスを分析したくない場合は、優先順位の低いset_clock_groupsを使用できます。
次に、パスを set_net_delay で制約してできるだけ短くし、 set_max_skew s で制約します。et_max_skew はフィッターを制約しませんが、タイミング・アナライザーでこの制約に対して解析できます。
クロック・ドメイン・clk_a内のdata_aとクロック・ドメイン・clk_b内のdata_bの間を交差するクロック・ドメインの制約は、以下のようになります。
create_clock -名前 clk_a -期間 4.000 [get_ports {clk_a}]
create_clock -名前 clk_b -期間 4.500 [get_ports {clk_b}]
set_clock_groups -asynchronous -group [get_clocks {clk_a}] -group [get_clocks {clk_b}]
set_net_delay -from [get_registers {data_a[*]}] -to [get_registers {data_b[*]}] -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
set_max_skew -from [get_keepers {data_a[*]}] -to [get_keepers {data_b[*]}] -get_skew_value_from_clock_period min_clock_period -skew_value_multiplier 0.8
スキュー要件は、デザインおよびクロック・ドメイン・クロッシングの処理方法によって異なります。
最後に、タイミング・アナライザーで 最大スキュー・サマリーのレポート および ネット遅延サマリーのレポートを実行して、クロックドメイン交差のタイミングを確認します。