Quartus® Prime プロ・エディションのユーザーガイド: デザイン最適化

ID 683641
日付 7/08/2024
Public
ドキュメント目次

5.4.4.3. ホールドに向けて追加された配線の評価

配線中、フィッターはレジスターパス間に配線を追加して、ホールドタイム要件を満たすために遅延を増やします。フィッターは、追加された配線遅延の量を Estimated Delay Added for Hold Timing レポートで報告します。 配線を過剰に追加すると、制約のエラーが表示されることがあります。このようなエラーの原因は通常、マルチレートクロック間、および異なるクロックネットワーク間の不正なマルチサイクル転送です。

Estimated Delay Added for Hold Timing レポートで特定のレジスターパスを確認し、フィッターがホールドタイミングを満たすために過剰な配線を追加しているかどうかを判断します。

図 30. Estimated Delay Added for Hold Timingレポート

ルーターがホールド要件のために配線を追加する原因となる不正確な制約の一例は、1x クロックから 2x クロックへのデータ転送がある場合です。例えば、転送ごとに 2 サイクルを許容することがデザインの意図であるとすると、データは、以下の例で示すようにマルチサイクル・セットアップ制約を追加することで、データは 2 つのデスティネーション・クロックのいずれかの時間に到達することができます。

set_multicycle_path -from 1x -to 2x -setup -end 2

タイミング要件は波形図の黒の破線で示すように、1 つの 2x クロックサイクル分緩和されます。

図 31. 緩和されたタイミング要件の波形図
青い破線で示されているデフォルトのホールド要件により、ルーターに強制的に配線を追加して、データが 1 サイクル遅れることを保証できます。ホールド要件を修正するには、ホールドオプションを使用してマルチサイクル制約を追加します。ホールド要件を修正するには、ホールドオプションを持つマルチサイクル制約を追加します。
set_multicycle_path -from 1x -to 2x -setup -end 2
set_multicycle_path -from 1x -to 2x -hold -end 1

図中のオレンジ色の破線はホールド関係を表し、データを遅らせるには余分な配線は必要ではありません。

ルーターは、同じクロックドメイン内でデータ転送が行われる場合でも、異なるバッファリングを使用するクロックブランチ間でホールドタイミング要件のために配線を追加することがあります。クロック・ネットワーク・タイプ間の転送は、ペリフェラルとコアの間でより頻繁に発生します。次の図では、データがデバイスに着信し、ペリフェラル・クロックがソースレジスターを駆動し、グローバルクロックがデスティネーション・レジスターを駆動しています。グローバルクロック・バッファーはペリフェラル・クロック・バッファーよりも挿入遅延が大きくなります。デスティネーション・レジスターへのクロック遅延はソースレジスターへの遅延よりもはるかに大きいため、ホールド要件を確実に満たすには、データパスに追加の遅延が必要です。

図 32. クロック遅延

パスにある異なるクロック・ネットワーク・タイプを特定するには、タイミング・アナライザーでパスを確認し、ソースとデスティネーションのクロックパス上のノードを確認します。また、ソースとデスティネーションのクロック周波数が同じか、倍数か、およびパスにマルチサイクルの例外があるかどうかを確認します。最後に、意図的にフォルスであるすべてのクロスドメイン・パスに関連するフォルスパス例外があることを確認します。

実際のホールドの問題を修正するために配線が追加されていると思われる場合、Optimize hold timing の詳細なフィッター設定 (Assignments > Settings > Compiler Settings > Advanced Settings (Fitter) > Optimize hold timing) を無効にできます。Optimize hold timing を無効にしてデザインを再コンパイルし、タイミング解析を再実行して、ホールドタイム要件を満たさないパスを特定して修正します。

注: Optimize hold timing オプションは、デザインのデバッグ時にのみ無効にします。通常のコンパイル時は、このオプションを有効 (デフォルトの状態) にしてください。ホールド用に追加されたワイヤーは、配線中のタイミング最適化の通常の部分であり、常に問題となるわけではありません。