インテル® Quartus® Prime プロ・エディションのユーザーガイド: Timing Analyzer

ID 683243
日付 9/30/2019
Public

このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。

ドキュメント目次

2.2.5.6.2. クロック不確実性

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

Timing Analyzerは、適用可能な各パスのデータ所要時間からセットアップの不確実性を差し引き、適用可能な各パスのデータ所要時間にホールドの不確実性を追加します。これにより、セットアップがわずかに削減され、各パスのスラックが保持されます。

Timing Analyzerは、クロック間転送の3つのタイプ(クロック内転送、クロック間転送、I/Oインターフェイス・クロック転送)の不確実性クロックの影響を考慮します。

  • デバイス内でレジスター間転送が行われ、ソースおよびデスティネーション・クロックが同じPLL出力ピンまたはクロックポートから来ると、クロック内転送が発生します。
  • クロック間転送は、デバイスのコアでレジスター間転送が行われ、ソースクロックとデスティネーション・クロックが異なるPLL出力ピンまたはクロックポートから送信されるときに発生します。
  • I/Oインターフェイスのクロック転送は、データがI/Oポートからデバイスのコアに、またはデバイスのコアからI/Oポートに転送されるときに発生します。

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

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

また、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>

Timing Analyzerが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の値を置き換えます。