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

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

2.6.5.6.2. クロックの不確実性

デフォルトでは、タイミング・アナライザーは理想的で完全なエッジをもつクロックを作成します。ジッターなどのクロックレベルの影響を模倣するには、これらのクロックエッジに不確実性を追加します。 タイミング・アナライザーは適切なセットアップとホールドの不確実性を自動的に計算し、それらの不確実性をデザインのすべてのクロック転送に適用します。これは、derive_clock_uncertainty コマンドを .sdc ファイルに含めない場合にも当てはまります。セットアップとホールドの不確実性は、デザインを正しく制約するうえで重要な部分です。

タイミング・アナライザーは、該当するそれぞれのパスのデータ所要時間からセットアップの不確実性を引き、該当するそれぞれのパスのデータ所要時間にホールドの不確実性を加えます。これにより、それぞれのパスのセットアップとホールドのスラックがわずかに減少します。

タイミング・アナライザーは、3 つのタイプのクロック間転送 (クロック内転送、クロック間転送、I/O インターフェイス・クロック転送) におけるクロックの不確実性の影響を考慮します。

  • クロック内転送は、デバイスでレジスター間転送が行われ、送信元および送信先のクロックが同じ PLL 出力ピンまたはクロックポートから提供されている場合に発生します。
  • クロック間転送は、デバイスのコアでレジスター間転送が行われ、送信元と送信先のクロックが異なる PLL 出力ピンまたはクロックポートから提供されている場合に発生します。
  • I/O インターフェイス・クロック転送は、I/O ポートからデバイスのコアに、またはデバイスのコアから I/O ポートにデータが転送される場合に発生します。

クロックの不確実性を手動で指定するには、set_clock_uncertainty コマンドを使用します。セットアップとホールドの不確実性を個別に指定することができます。立ち上がりクロック遷移と立ち下がりクロック遷移に個別の値を指定することもできます。derive_clock_uncertainty コマンドが自動的に適用する値は、オーバーライドすることができます。

derive_clock_uncertainty コマンドは、PLL への入力のクロックジッターがターゲットデバイスの PLL の入力ジッター仕様内である場合に、PLL のクロックジッターを考慮します。PLL の入力クロックジッターが仕様を超える場合は、PLL 出力クロックにさらに不確実性を追加して、過剰なジッターを考慮します。それには、set_clock_uncertainty -add コマンドを使用します。ジッターの仕様については、お使いのデバイスのデバイス・ハンドブックを参照してください。

また、set_clock_uncertainty -add を使用すると、ジッターがデバイスのジッター仕様を超える場合に、ボードのピークからピークのジッターを考慮することもできます。この場合は、ジッターの値の 1/2 に等しい不確実性をセットアップとホールドの両方に追加します。

set_clock_uncertainty –setup –to <clock name>  \ 
    -setup –add <p2p jitter/2>
set_clock_uncertainty –hold –enable_same_physical_edge –to <clock name> \
    –add <p2p jitter/2>

タイミング・アナライザーが derive_clock_uncertainty および set_clock_uncertainty の値を適用する方法には、複雑な優先規則があります。これは、.sdc ファイルのコマンド順序とオプションに依存します。関連情報に示されているヘルプページでは、これらの規則の完全な説明を提供しています。これらの優先順位の規則は、次の推奨事項に従うことで、簡単に実装することが可能です。

  • 独自のクロックの不確実性値を任意のクロック転送に割り当てるには、.sdc ファイルの derive_clock_uncertainty コマンドの後に、独自の set_clock_uncertainty 例外を配置します。
  • set_clock_uncertainty-add オプションを使用する場合は、指定する値は derive_clock_uncertainty の値に加算されます。-add を指定しない場合は、指定した値で derive_clock_uncertainty の値が置換されます。