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

ID 683641
日付 9/30/2019
Public

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

インテルのみ表示可能 — GUID: mwh1410471242895

Ixiasoft

ドキュメント目次

5.4.1.4.3. ホールドに向けた配線の追加

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

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

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

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

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

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

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

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

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

図 18. クロック遅延

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

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

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