インテル® Quartus® Primeプロ・エディションのユーザーガイド: タイミング・アナライザー

ID 683243
日付 1/31/2023
Public
ドキュメント目次

2.6.5.7. CDC パスの制約

デザインのマルチビット・クロック・ドメイン・クロッシング (CDC) パスにタイミング制約を適用することは不可欠です。次の制約を使用して、CDC パスを制約することができます。

重要: インテル® Quartus® Primeプロ・エディション・ソフトウェア・バージョン 21.3 では、set_false_path 制約は set_max_skew 制約をオーバーライドしません。よって、set_false_path 制約と set_max_skew 制約は、オーバーライドが発生することなく同じパスに適用することができます。
表 28.  CDC パスの制約
制約 詳細

set_false_path

set_clock_groups -asynchronous

どちらの制約も、コンパイラーによる非同期ドメイン・クロッシング間のスラック最適化を防ぎます。set_clock_groups は最も積極的な制約です。

  • クロックベースのフォルスパスは、あまり積極的ではありません。この制約は、指定されている from_clock から to_clock の順序でタイミングを切断するだけです。
  • クロックベースのフォルスパスは、クロックグループとは異なり、パスを両方向に切断します。
  • パスベースのフォルスパスは、最も具体的な制約です。この制約は、指定されている from および to ノードでのみ切断を行います。
set_max_skew 異なるバスビット間の許容スキュー範囲を設定します。
  • Report Max Skew Summary コマンドを実行し、クロック・ドメイン・クロッシングのタイミングを確認します。
  • 実際のスキュー要件は、デザインの特性やクロック・ドメイン・クロッシングの処理方法によって異なります。

set_net_delay -max

set_data_delay

バス転送の任意のビットで許容可能なデータパス遅延の範囲を設定します。

  • set_net_delay は、個々のクロックエッジおよびネットを制約するものです。Report Net Delay Summary コマンドを実行し、この制約のデータをレポートにします。
  • set_data_delay はパス全体を制約するものです。Report Data Delay コマンドを実行し、この制約のデータをレポートにします。

次の例では、クロックドメイン clk_adata_a とクロックドメイン clk_bdata_b の間のクロック・ドメイン・クロッシングの制約を示しています。

create_clock -name clk_a -period 4.000 [get_ports {clk_a}]
create_clock -name clk_b -period 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

以下の例では、DCFIFO ブロックを含むデザインに set_false_path を適用しています。これにより、同期レジスターでのタイミングエラーを回避します。これらの例は、シングルビット・シンクロナイザーの CDC パスを制約するものです。

  • 書き込みドメインから読み出しドメインに渡るパスでは、レジスターの delayed_wrptr_grs_dgwp の間にフォルスパス割り当てを適用します。
    set_false_path -from [get_registers {*dcfifo*delayed_wrptr_g[*]}] \
    -to [get_registers {*dcfifo*rs_dgwp*}]
  • 読み出しドメインから書き込みドメインに渡るパスでは、レジスターの rdptr_gws_dgrp の間にフォルスパス割り当てを適用します。
    set_false_path -from [get_registers {*dcfifo*rdptr_g[*]}] \
    -to [get_registers {*dcfifo*ws_dgrp*}]