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

ID 683243
日付 9/30/2019
Public

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

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

Ixiasoft

ドキュメント目次

2.2.1.4. クロックグループの設定(set_clock_groups)

Set Clock Groupsset_clock_groups)制約を使用すると、デザイン内のどのクロックが無関係であるかを指定できます。デフォルトでは、Timing Analyzerは、共通のベースまたは親クロックを持つすべてのクロックが関連しており、それらのクロックドメイン間のすべての転送がタイミング解析に有効であると想定しています。クロックグループをカットすることにより、特定のクロックドメイン間の転送をタイミング解析から除外できます。

逆に、共通の親クロックまたはベースクロックのないクロックは常に無関係ですが、それらのクロックが異なるクロックグループにある場合(またはすべてのパスが偽のパス制約でカットされている場合)を除き、タイミング解析にはそのようなクロック間の転送が含まれます。

クロック信号のグループを定義してから、各グループ間の関係を定義します。各グループに含めるクロック信号を定義し(-group)、グループが互いにLogically exclusive (-logically_exclusive)、Physically exclusive (-physically_exclusive、またはAsynchronous ( -asynchronous)であるかどうかを指定します。

set_clock_groups -asynchronous -group {<clock1>...<clockn>} ... \
    -group {<clocka>...<clockn>}
  • -logically_exclusive—多重クロックなど、論理的に排他的であると同時にアクティブではないクロックを定義します。
  • -physically_exclusive—同時にアクティブではない物理的に排他的なクロックを定義します。
  • -asynchronous—異なる理想的なクロックソースを持つ完全に無関係なクロックを定義します。このフラグは、クロックが両方とも切り替えられていることを意味しますが、データを同期的に渡すことはできません。

たとえば、8nsクロックと10nsクロックの間にパスがある場合、クロックが完全に非同期であっても、それらが関連していないと指定しない限り、Timing Analyzerはこれらのクロック間の2nsのセットアップ関係を満たそうとします。

Set Clock Groupsダイアログボックスでは2つのクロックグループのみが許可されますが、 .sdcファイルで-group {<group of clocks>}オプションを無制限に指定できます。割り当てから無関係なクロックを省略すると、Timing Analyzerは保守的に動作し、クロックが接続する他のすべてのドメインとの関連でそのクロックを分析します。

Timing Analyzerは現在、クロストークを明示的に分析していません。代わりに、タイミングモデルは追加のガードバンドを使用して、潜在的なクロストーク誘導遅延を考慮します。Timing Analyzerは、クロストーク関連の解析では-asynchronousオプションと-exclusiveオプションを同じように扱いますが、最大スキューレポートやシンクロナイザー検出などでは非同期および排他的なクロックグループを別々に扱います。

単一の割り当てで、クロックを複数のグループ(-group)内に含めることはできません。ただし、複数のset_clock_groups割り当てを持つことができます。

クロック間のタイミングを削減する別の方法は、 set_false_pathを使用することです。sys_clkdsp_clkの間のタイミングを短縮するには、次を使用できます。

set_false_path -from [get_clocks sys_clk] -to [get_clocks dsp_clk]
set_false_path -from [get_clocks dsp_clk] -to [sys_clk]

この手法は、クロック数が少ない場合に効果的ですが、多数の制約があると管理不能になる可能性があります。複数の出力を持つ3つのPLLを使用したシンプルなデザインでは、set_clock_groupsコマンドは、10行未満で関連するクロックを表示できますが、set_false_pathコマンドを使用すると50行以上を使用できます。