このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。
インテルのみ表示可能 — GUID: mwh1412203473009
Ixiasoft
インテルのみ表示可能 — GUID: mwh1412203473009
Ixiasoft
2.2.5.5.3. set_clock_groups制約のヒント
derived_pll_clocksを使用してクロックを作成する場合、set_clock_groups制約に含めるすべてのクロック名を決定するのに時間がかかる場合があります。ただし、次の手法を使用すると、すべてのクロック名がわからない場合でも、クロック制約の作成をある程度自動化できます。
- 推奨される初期SDC制約を含む基本的な.sdcファイルを作成しますが、現時点ではset_clock_groups制約を省略しています。
- プロジェクトに.sdcを追加するには、Assignments > Settings > Timing Analyzerをクリックします。SDC files to include in the projectファイルの下に.sdcファイルを指定します。
- Timing Analyzerを開くには、Tools > Timing Analyzerをクリックします。
- Taskペインで、 Report Clocksをダブルクリックします。Timing Analyzerは.sdcを読み取り、制約( derive_pll_clocksを含む)を適用し、すべてのクロックをレポートします。
- Clocks Summaryレポートから、最初の列に表示されるすべてのクロック名をコピーします。このレポートには、Timing Analyzerで認識できるように正しい形式でクロック名がリストされます。
- .Sdcファイルを開き、ファイルにクロック名を貼り付けます(1行に1つのクロック名)。
- クロック名リストを適切なグループにカットアンドペーストして、set_clock_groupsコマンドにフォーマットします。次に、次のテンプレートを.sdcファイルに貼り付けます。
。set_clock_groups -asynchronous -group {\} \ -group {\} \ -group {\} \ -group {\}
- クロック名をグループにカットアンドペーストして関係を定義し、必要に応じてグループを追加または削除します。グループをフォーマットして、コードを読み出し可能にします。
注: このコマンドは、1行で読み出すのが難しい場合があります。 Tcl行継続文字「\」を使用して、これをより読みやすくすることができます。最後の文字の後にスペースを置き、行末に「\」文字を置きます。この文字はエスケープします。エスケープ文字の後にスペースを入れないように注意してください。そうしないと、スペースが行末文字ではなくエスケープ文字になります。
set_clock_groups -asynchronous \ -group {adc_clk \ the_adc_pll | altpll_component_autogenerated | pll | clk [0] \ the_adc_pll | altpll_component_autogenerated | pll | clk [1] \ the_adc_pll | altpll_component_autogenerated | pll | clk [2] \ c | altpll_component_autogenerated | pll | clk [0] \ the_system_pll | altpll_component_autogenerated | pll | clk [1] \} \ -group {the_system_pll | altpll_component_autogenerated | pll | clk [2] \}
複雑なクロッキングを使用するデザインの場合、クロックグループの作成は反復プロセスになる場合があります。たとえば、2つのDDR3コアと高速トランシーバーを使用するデザインでは、30以上のクロックを使用できます。そのような場合、手動で作成したクロックを追加することから始めます。 Timing Analyzerは、コマンドに表示されないクロックがすべてのクロックに関連していると想定しているため、これにより既知のクロックが控えめにグループ化されます。無関係なクロックドメイン間のデザインにまだパスがある場合、必要に応じて新しいクロックドメインの追加を開始できます。この場合、IPコアの.sdcファイル(DDR3コアが生成する.sdcファイルなど)でカットされているか、または関連するクロックドメインのみに接続されているため、set_clock_groupsコマンドには多数のクロックが含まれていません。
多くのデザインでは、コアを制約するために必要なのはそれだけです。このセクションでは詳細に説明していない一般的なコアの制約は次のとおりです。
- デフォルト分析よりも遅い速度で分析のためにレジスター間にマルチサイクルを追加すると、データを読み取ることができる時間が長くなります。たとえば、10 nsのクロック周期には10 nsのセットアップ関係があります。データがより遅いレートで変化する場合、またはクロックイネーブルによりレジスターがより遅いレートで切り替わる場合、セットアップ関係を緩和するマルチサイクルを適用できます(有効なデータが通過できるようにウィンドウを開く)。これはクロック周期の倍数であり、セットアップ関係を20 ns、40 nsなどにし、ホールド関係を0 nsに保ちます。通常、これらのタイプのマルチサイクルをパスに適用します。
- また、タイミングウィンドウをシフトして、データが読み取られるサイクルを進める場合、マルチサイクルを使用できます。これは通常、デザインがクロックで小さな位相シフトを実行するときに発生します。たとえば、デザインにPLLを出る2つの10 nsクロックがあり、2番目のクロックに0.5 nsの位相シフトがある場合、メインクロックから位相シフトクロックへのデフォルトのセットアップ関係は0.5 nsであり、ホールド関係は- 9.5 ns 0.5 nsのセットアップ関係を満たすことはほぼ不可能であり、ほとんどの場合、次のウィンドウでデータを転送するつもりです。メインクロックから位相シフトクロックにマルチサイクルを追加すると、セットアップ関係は10.5 nsになり、ホールド関係は0.5 nsになります。通常、このマルチサイクルをクロック間に適用します。
- create_generated_clockをリップルクロックに追加します。レジスターの出力が別のレジスターのclkポートを駆動するとき、それはリップルクロックです。クロックはレジスターを介して伝搬されないため、正しい解析を行うには、 create_generated_clock制約をすべてのリップルクロックに適用する必要があります。制約のないリップルクロックは、 Report Unconstrained Pathsレポートに表示されるため、簡単に認識できます。一般に、リップルクロックは避けてください。代わりにクロックイネーブルを使用してください。
- create_generated_clockをクロック・マルチプレクサー出力に追加します。このクロックがないと、すべてのクロックがマルチプレクサを介して伝播し、関連します。 Timing Analyzerは、1つのクロック入力がソースレジスターに供給され、他のクロック入力がデスティネーションに供給される、マルチプレクサから下流のパスを解析します。この動作は有効な場合がありますが、通常、これは目的の動作ではありません。 mux出力にcreate_generated_clock制約を適用し、muxに入力されるクロックに関連付けることで、これらのクロックを他のクロックと正しくグループ化できます。