インテル AN 903 タイミング クロージャの加速

AN 903: Intel® Quartus® Prime プロ・エディションでのタイミング収束の加速
組み込みシステム、IP、高速インターフェイスを組み合わせた最新の FPGA 設計の密度と複雑さにより、タイミング クロージャの課題がますます大きくなっています。アーキテクチャの変更が遅れたり、検証の課題が生じたりすると、設計の反復に時間がかかることがあります。このドキュメントでは、Intel® Quartus® Prime Pro Edition ソフトウェアの検証済みで反復可能な方法論を使用してタイミング クロージャを加速する 3 つの手順をまとめています。この方法論には、初期の RTL 分析と最適化のほか、コンパイル時間を最小限に抑え、タイミング クロージャに必要な設計の複雑さと反復を減らす自動化手法が含まれています。
タイミングクロージャ加速ステップ

タイミングクロージャ加速ステップ
| タイミングクローズステップ | タイミングクローズアクティビティ | 詳細情報 |
| ステップ1: RTLの分析と最適化 | • デザインアシスタント違反を修正する 4ページ目
• ロジックレベルを減らす 7ページ目 • 高ファンアウトネットを削減 9ページ目 |
• インテル Quartus Prime Pro エディション ユーザー ガイド: デザイン 最適化 |
| ステップ2: コンパイラ最適化を適用する | • コンパイラ最適化モードを適用する と戦略 13ページ目
• 混雑を減らして利用率を高める 16ページ目 |
• インテル Quartus Prime Pro エディション ユーザー ガイド: デザイン コンパイル |
| ステップ3: 満足のいく結果を維持する | • クロック、RAM、DSP をロックダウンする 20ページ目
• デザインパーティションの結果を保持 21ページ目 |
• インテル Quartus Prime Pro エディションユーザーガイド: ブロック ベースデザイン |
ステップ1: 設計RTLの分析と最適化
デザインのソースコードを最適化することは、通常、結果の品質を向上させるための最初で最も効果的な手法です。Intel Quartus Prime デザイン アシスタントは、基本的なデザイン ルール違反を迅速に修正するのに役立ち、デザインの最適化とタイミング クロージャを簡素化する RTL 変更を推奨します。
タイミングクロージャの問題
- ロジック レベルが多すぎると、Fitter の処理順序、期間、結果の品質に影響します。
- 高ファンアウト ネットはリソースの輻輳を引き起こし、データ パスにさらなる緊張を加え、パスの重要度を不必要に高め、タイミング クローズを複雑にします。この緊張は、パス (およびその高ファンアウト信号を共有するすべてのパス) を高ファンアウト ソースに引き寄せる引力です。
タイミングクロージャソリューション
- 4 ページの「デザイン アシスタント違反を修正」では、デザインに関連する基本的なデザイン ルール違反を迅速に特定して修正します。
- 7 ページの「ロジック レベルを削減」では、設計のすべての要素が同じフィッター最適化を受けられるようにし、コンパイル時間を短縮します。
- 9 ページの「高ファンアウト ネットを削減」 - リソースの混雑を軽減し、タイミング クロージャを簡素化します。
関連情報
- 「デザイン アシスタントによるデザイン ルール チェック」、インテル Quartus Prime プロ エディション ユーザー ガイド: デザインの推奨事項
- 「ソースコードの最適化」、インテル Quartus Prime プロ・エディション・ユーザーガイド: 設計最適化
- 「ファンアウト制御のための重複レジスタ」、インテル Quartus Prime プロ・エディション・ユーザーガイド: 設計最適化
デザインアシスタント違反を修正する
既知のタイミングクロージャの問題を排除するために初期設計解析を実行すると、生産性が大幅に向上します。デフォルト設定で初期コンパイルを実行した後、view デザインアシスタントは初期解析のためにレポートを作成します。有効にすると、デザインアシスタントはインテルFPGA推奨の設計ガイドラインの標準セットに対する違反を自動的に報告します。デザインアシスタントをコンパイルフローモードで実行して、 view コンパイルに関連する違反tag実行する es です。あるいは、タイミング アナライザとチップ プランナの解析モードでデザイン アシスタントを使用できます。
- コンパイルフローモード—1回以上のセッション中に自動的に実行されますtagコンパイルの段階です。このモードでは、Design Assistant はコンパイル中にインフロー (一時的) データを使用します。
- 分析モード—タイミングアナライザとチッププランナからデザインアシスタントを実行して、特定のコンパイル時におけるデザイン違反を分析するtage、コンパイル フローを進める前に実行されます。解析モードでは、Design Assistant は静的コンパイル スナップショット データを使用します。
Design Assistant は、各ルール違反を次のいずれかの重大度レベルで指定します。Design Assistant でデザイン内でチェックするルールを指定し、重大度レベルをカスタマイズすることで、デザインにとって重要でないルール チェックを除外できます。
設計アシスタントルールの重大度レベル
| カテゴリー | 説明 | 重大度レベルの色 |
| 致命的 | ハンドオフに関する問題に対処します。 | 赤 |
| 高い | 機能障害を引き起こす可能性があります。設計データが欠落しているか正しくないことを示している可能性があります。 | オレンジ |
| 中くらい | 結果の品質に影響を与える可能性があるマックス またはリソースの使用率。 | 茶色 |
| 低い | このルールは、RTL コーディング ガイドラインのベスト プラクティスを反映しています。 | 青 |
デザインアシスタントの設定
設計アシスタントは、個々の設計特性やレポート要件に合わせて完全にカスタマイズできます。割り当て ➤ 設定 ➤ 設計アシスタントルール設定をクリックして、さまざまな設計に適用されるルールとパラメータを制御するオプションを指定します。tag設計ルールチェックのための設計コンパイルの例。
デザインアシスタントルール設定
ランニングデザインアシスタント
有効にすると、デザインアシスタントはコンパイル中に自動的に実行され、コンパイルレポートに有効なデザインルール違反が報告されます。または、特定のコンパイルスナップショットでデザインアシスタントを解析モードで実行して、そのスナップショットのみに解析を集中させることもできます。tage. コンパイル中に自動デザインアシスタントチェックを有効にするには:
- Design Assistant ルール設定で、コンパイル中に Design Assistant の実行を有効にするをオンにします。Design Assistant を解析モードで実行して、特定のスナップショットを、そのスナップショットに適用される設計ルールに対して検証するには、次の手順を実行します。
- タイミング アナライザーまたはチップ プランナーのタスク パネルで [DRC レポート] をクリックします。
Viewデザインアシスタントの結果の修正
デザインアシスタントは、さまざまなsで有効な設計ルール違反を報告します。tag編集報告書の概要。
設計アシスタントの結果、合成、計画、配置、および最終レポート
に view 各ルールの結果を表示するには、ルール リストでルールをクリックします。ルールの説明と修正のための設計推奨事項が表示されます。
デザインアシスタント規則違反勧告

RTL を変更して設計ルール違反を修正します。
ロジックレベルを減らす
過剰なロジックレベルは、設計のクリティカルパスがフィッターの処理順序と期間に影響を与えるため、フィッターの結果の品質に影響を与える可能性があります。フィッターは、タイミングスラックに基づいて設計を配置および配線します。フィッターは、スラックが最も少ない長いパスを最初に配置します。フィッターは通常、ロジックレベルの低いパスよりもロジックレベルの高いパスを優先します。通常、フィッターがtage が完了すると、残っているクリティカル パスは最高ロジック レベルのパスではありません。フィッタは、上位レベルのロジックに優先的な配置、配線、およびリタイミングを提供します。ロジック レベルを下げると、デザインのすべての要素が同じフィッタ優先度を受け取ることが保証されます。タイミング アナライザで [レポート] ➤ [カスタム レポート] ➤ [タイミングのレポート] を実行して、パスのロジック レベルを示すレポートを生成します。パスがタイミングに失敗し、ロジック レベルの数が多い場合は、パフォーマンスを向上させるために、デザインのその部分にパイプラインを追加することを検討してください。
パスレポートのロジックの深さ

レポートロジックレベルの深さ
コンパイラの計画の後tag例えば、タイミングアナライザのTclコンソールでreport_logic_depthを実行して、 view クロック ドメイン内のロジック レベルの数。report_logic_depth は、クリティカル パス間のロジックの深さの分布を示し、RTL でロジック レベルを削減できる領域を特定できるようにします。
レポートロジックの深さ -パネル名-[get_clocksから] \ -to [get_clocks ]
report_logic_depth 出力
RTLを最適化するためのデータを取得するには、コンパイラのプランの後にreport_logic_depthを実行します。tage、残りのフィッターを実行する前にtagそれ以外の場合、フィッター後のレポートには物理的な最適化 (リタイミングと再合成) の結果も含まれます。
隣接パスの報告
フィッター(ファイナライズ)を実行した後tag例えば、report_neighbor_pathsを実行してクリティカルパスの根本原因を特定することができます(例:ample、高ロジックレベル、リタイミング制限、最適でない配置、I/O列の交差、ホールドフィックスなど): report_neighbor_paths -to_clock -nパス-パネル名
report_neighbor_paths は、関連するスラック、追加のパス概要情報、およびパス境界ボックスを含む、設計内で最もタイミングが重要なパスを報告します。
report_neighbor_paths 出力
report_neighbor_paths は、各クリティカル パスの最もタイミングがクリティカルな Path Before と Path After を表示します。パスに負のスラックがあり、Path Before または Path After に正のスラックがある場合、パスの再タイミングまたはロジック バランス調整によってタイミング クロージャを簡素化できます。
リタイミングを有効にするには、次のオプションがオンになっていることを確認してください。
- レジスタの場合、割り当て ➤ 設定 ➤ コンパイラ設定 ➤ レジスタ最適化 ➤ レジスタのリタイミングを許可する を有効にします。
- RAMエンドポイントの場合、割り当て ➤ 設定 ➤ コンパイラ設定 ➤ フィッター設定(詳細) ➤ RAMリタイミングを許可するを有効にします。
- DSPエンドポイントの場合、割り当て ➤ 設定 ➤ コンパイラ設定 ➤ フィッター設定(詳細) ➤ DSPリタイミングを許可するを有効にします。
注記
さらにロジックのバランス調整が必要な場合は、RTL を手動で変更して、ロジックをクリティカル パスから Path Before または Path After に移動する必要があります。
レジスタの出力がその入力に接続されている場合、隣接パスの 1 つまたは両方が現在のパスと同じになることがあります。最悪のスラックを持つ隣接パスを検索する場合、メイン パス自体の動作条件だけでなく、すべての動作条件が考慮されます。
テクノロジーマップでロジックレベルを視覚化する Viewer
テクノロジーマップ Viewまた、チッププランナーは、設計ネットリストの回路図、テクノロジマップ、表現を提供し、設計のどの領域がロジックレベル数を減らすことで利益を得られるかを確認するのに役立ちます。チッププランナーでは、パスの物理的なレイアウトを詳細に調査することもできます。 viewタイミングレポート内のパスを右クリックし、「パスの検索」をポイントして、「テクノロジマップでの検索」を選択します。 Viewえー。
高ファンアウトネットを削減
ファンアウトが大きいネットはリソースの混雑を引き起こし、タイミングクロージャを複雑にする可能性があります。一般的に、コンパイラはクロックに関連するファンアウトが大きいネットを自動的に管理します。コンパイラは、認識されたファンアウトが大きいネットをグローバルクロックネットワークに自動的に昇格します。コンパイラは、配置配線中に高度な最適化を行います。tages は、有益なレジスタの重複をもたらします。次のコーナー ケースでは、デザイン RTL に次の手動変更を加えることで、さらに混雑を軽減できます。
高ファンアウトネットコーナーケース
| デザインの特徴 | 手動RTL最適化 |
| 多くの階層や物理的に遠い宛先に到達する高ファンアウトネット | 階層間で高ファンアウト ネットワークを手動で複製するには、パイプラインの最後のレジスタに duplicate_hierarchy_depth 割り当てを指定します。配置中にレジスタを複製するには、duplicate_register 割り当てを指定します。 |
| 組み合わせロジックからDSPまたはM20Kメモリブロックへの制御信号を備えた設計 | レジスタから DSP または M20K メモリへの制御信号を駆動します。 |
階層間でのレジスタの重複
パイプラインの最後のレジスタに duplicate_hierarchy_depth 割り当てを指定して、レジスタの複製とファンアウトの作成をガイドできます。次の図は、次の duplicate_hierarchy_depth 割り当ての影響を示しています。
set_instance_assignment -name 重複した階層の深さ -to \
どこ:
- register_name: 複数の階層に広がるチェーン内の最後のレジスタ。
- level_number - 複製するチェーン内のレジスタの数。
図9. レジスタ複製前
階層間でレジスタの複製を実装するには、duplicate_hierarchy_depth割り当てを設定し、チェーンの最後のレジスタに続くレジスタのツリーを作成します。次の例で、レジスタ名とMで表される重複数を指定します。amp赤い矢印は重複レジスタの潜在的な場所を示しています。
- set_instance_assignment –name DUPLICATE_HIERARCHY_DEPTH –to regZ M

レジスタ重複 = 1
次の単一レベルのレジスタ複製 (M=1) を指定すると、設計階層の XNUMX レベル下の XNUMX つのレジスタ (regZ) が複製されます。
- set_instance_assignment –name DUPLICATE_HIERARCHY_DEPTH –to regZ 1

レジスタ重複 = 3
レジスタ複製のレベルを 3 つ指定すると (M=XNUMX)、XNUMX つのレジスタ (regZ、regY、regX) がそれぞれ階層の XNUMX、XNUMX、XNUMX レベル下に複製されます。
- set_instance_assignment –name DUPLICATE_HIERARCHY_DEPTH –to regZ 3

レジスタを複製して階層にプッシュすることにより、設計ではすべての宛先に対して同じサイクル数を維持しながら、これらのパスのパフォーマンスを大幅に高速化します。
配置中のレジスタの重複
12 ページの図 11 は、チップの広範囲に渡るファンアウトの高いレジスタを示しています。このレジスタを 50 回複製することで、レジスタと宛先間の距離を短縮でき、最終的にはクロック パフォーマンスが向上します。duplicate_register を割り当てると、コンパイラは物理的な近接性を活用して、ファンアウトのサブセットを供給する新しいレジスタの配置をガイドできます。
図12. 配置中のレジスタの複製
注記: チップ全体に信号をブロードキャストするには、マルチtage パイプライン。パイプライン内の各レジスタに duplicate_register 割り当てを適用します。この手法により、チップ全体に信号をブロードキャストするツリー構造が作成されます。
View重複結果の分析
設計統合に続いて、 view 重複の結果は、コンパイル レポートの合成フォルダーにある階層ツリー重複サマリー レポートに表示されます。レポートには次の情報が表示されます。
- duplicate_hierarchy_depth 割り当てを持つレジスタに関する情報。
- チェーンの長さの理由。これは、割り当てをさらに改善するための出発点として使用できます。
- 実装された重複の構造をよりよく理解するために使用できる、チェーン内の個々のレジスタに関する情報。
Fitter レポートには、duplicate_register 設定を持つレジスタに関するセクションも含まれます。
コンパイラ最適化技術を適用する
非常に高い割合で利用するデザインtagFPGAデバイスリソースの過剰使用はリソースの混雑を引き起こし、fMAXの低下とタイミングクロージャの複雑化につながります。コンパイラの最適化モード設定により、合成中のコンパイラの取り組みの焦点を指定できます。例:ampたとえば、リソースの混雑に対処する場合、合成をエリアまたは配線可能性に対して最適化します。 Intel Quartus Prime Design Space Explorer II で、これらの同じ最適化モード設定の組み合わせを試すことができます。これらの設定とその他の手動テクニックは、使用率の高いデザインの混雑を軽減するのに役立ちます。
タイミングクロージャの問題
- デバイス リソースの使用率が非常に高い設計では、タイミング クローズが複雑になります。
タイミングクロージャソリューション
- 13 ページの「コンパイラ最適化モードと戦略の適用」では、デザイン合成の主な最適化モードの目標を指定します。
- 16 ページの「エリアとルーティング可能性のオプションを試してください」 - 追加の設定コレクションを適用して、混雑を軽減し、エリアとルーティング可能性の目標を達成します。
- 16 ページの「演算集約型設計にフラクタル合成を検討する」—高スループットの演算集約型設計の場合、フラクタル合成は乗算器の正規化、リタイミング、および連続演算パッキングを通じてデバイス リソースの使用量を削減します。
関連情報
- 「タイミング クロージャーと最適化」の章、インテル Quartus Prime プロ エディション ユーザー ガイド: 設計最適化
- Intel Quartus Prime Pro Edition ユーザーガイド: デザインのコンパイル
コンパイラ最適化モードと戦略を適用する
コンパイラ最適化モードと Design Space Explorer II (DSE II) コンパイル戦略を適用するには、次の情報を使用します。
コンパイラ最適化モード設定の実験
コンパイラ最適化モード設定を試すには、次の手順に従います。
- Intel Quartus Prime プロジェクトを作成するか開きます。
- コンパイラの高レベルの最適化戦略を指定するには、[割り当て] ➤ [設定] ➤ [コンパイラ設定] をクリックします。4 ページの表 14 で説明されているように、次のモード設定のいずれかを試してください。
- これらの設定でデザインをコンパイルするには、コンパイル ダッシュボードで [コンパイルの開始] をクリックします。
- View コンパイル結果はコンパイルレポートに出力されます。
- ツール ➤ タイミングアナライザーをクリックして view パフォーマンスに対する最適化設定の結果。
コンパイラ最適化モード設定

最適化モード(コンパイラ設定ページ)
| 最適化モード | 説明 |
| バランス(通常の流れ) | コンパイラは、タイミング制約を考慮したバランスの取れた実装のために合成を最適化します。 |
| 高いパフォーマンス努力 | コンパイラは、配置および配線中のタイミング最適化の取り組みを強化し、タイミング関連の物理合成最適化 (レジスタ最適化設定ごと) を有効にします。最適化を追加するたびに、コンパイル時間が長くなる可能性があります。 |
| 最大限の配置努力で高いパフォーマンスを実現 | 同じコンパイラ最適化を有効にします 高いパフォーマンス努力追加の配置最適化の取り組みにより、 |
| 優れたパフォーマンス | 同じコンパイラ最適化を有効にします 高いパフォーマンス努力、解析と合成中にさらなる最適化を追加して、ロジック領域が増加する可能性はあるものの、設計パフォーマンスを最大化します。設計使用率がすでに非常に高い場合、このオプションによりフィッティングが困難になる可能性があり、全体的な最適化の品質に悪影響を与える可能性もあります。 |
| 最大限の配置努力で優れたパフォーマンスを実現 | 同じコンパイラ最適化を有効にします 優れたパフォーマンス追加の配置最適化の取り組みにより、 |
| 攻撃エリア | コンパイラは、設計のパフォーマンスを犠牲にしてでも、設計を実装するために必要なデバイス領域を削減するよう積極的に努力します。 |
| 高い配置ルーティングの労力 | コンパイラは、設計領域、パフォーマンス、およびコンパイル時間を犠牲にして、設計を配線するために多大な労力を費やします。 コンパイラは、配線使用率を削減するために追加の時間を費やします。これにより、配線可能性が向上し、動的電力も節約されます。 |
| 高いパッキングルーティングの労力 | コンパイラは、設計エリア、パフォーマンス、およびコンパイル時間を犠牲にして、設計を配線するために多大な労力を費やします。 コンパイラはレジスタのパッキングに追加の時間を費やし、配線性を向上させ、動的電力も節約します。 |
| 配線性を考慮したネットリストの最適化 | コンパイラは、パフォーマンスを犠牲にして配線可能性を高めるためにネットリストの変更を実装します。 |
| 続き… | |
| 最適化モード | 説明 |
| ハイパワーエフォート | コンパイラは、低消費電力のために合成を最適化するために多大な努力を払います。 ハイパワーエフォート 合成実行時間が長くなります。 |
| 攻撃的なパワー | 低消費電力のために合成を最適化するために積極的に取り組みます。コンパイラは、指定または推定された最高のトグル レートを持つ信号のルーティング使用をさらに削減し、追加の動的電力を節約しますが、パフォーマンスに影響を及ぼす可能性があります。 |
| 強力なコンパイル時間 | 労力とパフォーマンスの最適化を減らして、設計を実装するために必要なコンパイル時間を短縮します。このオプションでは、一部の詳細なレポート機能も無効になります。
注記: 電源を入れる 強力なコンパイル時間 Intel Quartus Prime設定を有効にする File (.qsf) 設定は他の .qsf 設定によって上書きすることはできません。 |
デザインスペースエクスプローラー II コンパイル戦略
DSE II を使用すると、リソース、パフォーマンス、または電力の最適化の目標に最適なプロジェクト設定を見つけることができます。DSE II を使用すると、特定の目標を達成するために、さまざまな設定と制約のプリセットの組み合わせを使用して設計を繰り返しコンパイルできます。その後、DSE II は、目標を満たす最適な設定の組み合わせを報告します。DSE II は、tag複数のコンピュータでシードをコンパイルするための並列化機能。DSE IIコンパイル戦略設定は、4ページの表14の最適化モード設定を反映します。
デザイン スペース エクスプローラー II
DSE II のコンパイル戦略を指定するには、次の手順に従います。
- DSE II を起動するには (Intel Quartus Prime ソフトウェアを閉じるには)、[ツール] ➤ [デザイン スペース エクスプローラー II の起動] をクリックします。Intel Quartus Prime ソフトウェアが閉じると、DSE II が開きます。
- DSE II ツールバーで、探索アイコンをクリックします。
- 探索ポイントを拡張します。
- 設計探索を選択します。コンパイル戦略のいずれかを有効にして、それらの戦略を対象とした設計探索を実行します。
混雑を減らして利用率を高める
デバイス リソースの 80% 以上を使用する設計では、通常、タイミング クロージャが最も困難になります。次の手動および自動テクニックを適用して、混雑をさらに軽減し、タイミング クロージャを簡素化できます。
- エリアと配線オプションの実験(16ページ)
- 16ページの演算集約型設計におけるフラクタル合成の検討
エリアと配線オプションの実験
デバイスの使用率によって配線の混雑が発生する場合は、エリアと配線可能性の最適化設定を試して、デザインのリソース使用率と混雑を減らすことができます。これらの設定にアクセスするには、[割り当て] ➤ [設定] ➤ [コンパイラ設定] ➤ [最適化モード] をクリックします。
エリアとルーティングオプション

演算集約型設計にはフラクタル合成を検討する
高スループットで演算集約的な設計では、自動フラクタル合成最適化を有効にして、デバイス リソースの使用率を向上させることができます。フラクタル合成最適化には、乗算器の正規化とリタイミング、および連続演算パッキングが含まれます。最適化は、低精度の演算 (加算や乗算など) を多数含む設計を対象としています。フラクタル合成は、グローバルに有効にすることも、特定の乗算器に対してのみ有効にすることもできます。理想的な条件下では、フラクタル合成最適化により 20 ~ 45% の面積削減を実現できます。
乗数の正規化とリタイミング
乗算器の正規化とリタイミングは、高度に最適化されたソフト乗算器の実装の推論を実行します。コンパイラは、2つ以上のパイプラインに逆方向リタイミングを適用する場合があります。tag必要に応じて、フラクタル合成を有効にします。 フラクタル合成を有効にすると、コンパイラーは符号付きおよび符号なしの乗算器に乗算器の正規化とリタイミングを適用します。
図16. 乗算器のリタイミング
注記
- 乗算器の正規化ではロジック リソースのみが使用され、DSP ブロックは使用されません。
- 乗算器の正規化と再タイミングは、FRACTAL_SYNTHESIS QSF 割り当てが設定されているモジュール内の符号付き乗算器と符号なし乗算器の両方に適用されます。
連続算術パッキング
連続演算パッキングは、演算ゲートを Intel FPGA LAB に収まる最適なサイズのロジック ブロックに再合成します。この最適化により、演算ブロックの LAB リソースを最大 100% 使用できます。フラクタル合成を有効にすると、コンパイラーはこの最適化をすべてのキャリー チェーンと XNUMX 入力ロジック ゲートに適用します。この最適化により、加算器ツリー、乗算器、およびその他の演算関連ロジックをパッキングできます。
連続算術パッキング

注記
連続算術パッキングは、乗算器の正規化とは独立して動作することに注意してください。したがって、正規化されていない乗算器を使用している場合 (独自の乗算器を作成するなど) でも、連続算術パッキングは動作します。フラクタル合成の最適化は、ディープラーニング アクセラレータや、すべての DSP リソースを超える高スループットの算術集約型機能を備えた設計に最適です。プロジェクト全体でフラクタル合成を有効にすると、フラクタル最適化に適さないモジュールが不必要に肥大化する可能性があります。
フラクタル合成の有効化または無効化
Intel Stratix® 10 および Intel Agilex™ デバイスの場合、小さな乗算器 (オペランドのビット幅が 7 以下の Verilog HDL または VHDL の A*B ステートメント) に対してフラクタル合成の最適化が自動的に実行されます。次のいずれかの方法を使用して、これらのデバイスの小さな乗算器の自動フラクタル合成を無効にすることもできます。
- RTLでは、「Multstyle Verilog HDL合成属性」で説明されているように、DSPマルチスタイルを設定します。例:ample: (* multstyle = “dsp” *) module foo(…); module foo(..) /* 合成 multstyle = “dsp” */;
- .qsfファイル内 file次のように割り当てとして追加します: set_instance_assignment -name DSP_BLOCK_BALANCING_IMPLEMENTATION \DSP_BLOCKS -to r
さらに、Intel Stratix 10、Intel Agilex、Intel Arria® 10、および Intel Cyclone® 10 GX デバイスでは、Fractal Synthesis GUI オプションまたは対応する FRACTAL_SYNTHESIS .qsf 割り当てを使用して、フラクタル合成をグローバルに有効にしたり、特定の乗数に対して有効にしたりできます。
- RTLでは、altera_attributeを次のように使用します: (* altera_attribute = “-name FRACTAL_SYNTHESIS ON” *)
- .qsfファイル内 file次のように割り当てとして追加します: set_global_assignment -name FRACTAL_SYNTHESIS ON -entity
ユーザー インターフェイスで、次の手順に従います。
- [割り当て] ➤ [割り当てエディター] をクリックします。
- 割り当て名にフラクタル合成を選択し、値にオンを選択し、エンティティに算術集約型エンティティ名を選択し、宛先列にインスタンス名を選択します。エンティティのすべてのインスタンスを割り当てるには、宛先にワイルドカード (*) を入力できます。
図 18. 割り当てエディタでのフラクタル合成の割り当て

関連情報
- マルチスタイル Verilog HDL 合成属性
- Intel Quartus Prime ヘルプ。
満足のいく結果を維持する
満足できるコンパイル結果をバックアノテーションして、クロック、RAM、DSP に関連する大きなブロックの配置を固定することで、タイミング クロージャを簡素化できます。同様に、デザイン ブロックの再利用テクニックを使用すると、特定の FPGA 周辺またはコア ロジック デザイン ブロック (階層デザイン インスタンスを構成するロジック) の満足できるコンパイル結果を保存し、その後のコンパイルでそれらのブロックを再利用できます。デザイン ブロックの再利用では、階層インスタンスをデザイン パーティションとして割り当て、コンパイルが成功したらパーティションを保存してエクスポートします。満足できる結果を保存して再利用すると、タイミングがクロージャしていないデザインの部分のみにコンパイラの労力と時間を集中させることができます。
タイミングクロージャの問題
- ロックダウンされない限り、コンパイラはさまざまな要因に応じて、コンパイルごとに設計ブロック、クロック、RAM、および DSP を異なる方法で実装する場合があります。
タイミングクロージャソリューション
- 20 ページの「クロック、RAM、DSP をロックダウン」 - 満足のいくコンパイル結果をバックアノテーションして、クロック、RAM、DSP に関連する大きなブロックの配置をロックダウンします。
- 21 ページの「デザイン パーティションの結果を保持」 - タイミングを満たすブロックのパーティションを保持し、他のデザイン ブロックの最適化に重点を置きます。
関連情報
- 割り当てのバックアノテーション ダイアログ ボックスのヘルプ
- AN-899: 高速保存によるコンパイル時間の短縮
- Intel Quartus Prime Pro Edition ユーザーガイド: ブロックベース設計
クロック、RAM、DSP をロックダウンする
満足のいくコンパイル結果をバックアノテーションして、クロック、RAM、および DSP に関連する大きなブロックの配置をロックダウンすることで、タイミング クロージャを簡素化できます。大きなブロックの配置をロックダウンすると、ノイズを抑えながら fMAX を高くすることができます。RAM や DSP などの大きなブロックは、通常の LAB よりも接続性が高く、配置中の動きが複雑になるため、ロックダウンが効果的です。シードが適切な RAM および DSP 配置から良好な結果を生成する場合、バックアノテーションでその配置をキャプチャできます。その後のコンパイルでは、良好なシードからの高品質の RAM および DSP 配置のメリットを享受できます。この手法は、RAM または DSP が非常に少ないデザインには大きなメリットをもたらしません。[割り当て] ➤ [割り当てのバックアノテーション] をクリックして、前回のコンパイルからデバイス リソース割り当てを .qsf にコピーし、次のコンパイルで使用します。[バックアノテーション タイプ] リストでバックアノテーション タイプを選択します。
割り当てのバックアノテーションダイアログボックス

あるいは、次の quartus_cdb 実行可能ファイルを使用してバックアノテーションを実行することもできます。quartus_cdb –back_annotate [–dsp] [–ram] [–clock]
注記
- 実行可能ファイルは、バックアノテーション割り当てダイアログ ボックスでまだサポートされていない追加の [–dsp]、[–ram]、[–clock] 変数をサポートします。
デザインパーティションの結果を保持
注記
- デザインをパーティション分割した後、タイミングを満たすブロックのパーティションを保持し、他のデザイン ブロックの最適化に集中できます。さらに、Fast Preserve オプションは、保持されたパーティションのロジックをコンパイル中のインターフェイス ロジックのみに簡素化し、パーティションのコンパイル時間を短縮します。Fast Preserve は、ルート パーティションの再利用と部分的な再構成デザインのみをサポートします。タイミング クロージャが難しいサブモジュールを含むデザインの場合、モジュールのパーティションのスタンドアロンの最適化とコンパイルを実行し、タイミング クロージャ モジュールをエクスポートして、後続のコンパイルで実装を保持できます。
デザインパーティションの結果の保存

ブロックベースの設計には、設計のパーティション分割が必要です。設計のパーティション分割により、設計内の個々のロジック ブロックを保持できますが、パーティションの交差やフロアプランの影響により、パフォーマンスが低下する可能性もあります。ブロックベースの設計手法を使用する場合は、これらの要素のバランスを取る必要があります。次の高レベルの手順は、ルート パーティション再利用設計のパーティション保持フローを説明しています。
- [処理] ➤ [開始] ➤ [分析と詳細化の開始] をクリックします。
- プロジェクト ナビゲータで、タイミング クローズ デザイン インスタンスを右クリックし、[デザイン パーティション] をポイントして、23 ページの「デザイン パーティション設定」の説明に従ってパーティション タイプを選択します。
デザインパーティションを作成する

- パーティションの Logic Lock フロアプランニング制約を定義します。[Design Partitions] ウィンドウで、パーティションを右クリックし、[Logic Lock Region] ➤ [Create New Logic Lock Region] をクリックします。領域がパーティション内のすべてのロジックを囲むのに十分な大きさであることを確認します。
- コンパイル後にパーティション結果をエクスポートするには、デザインパーティションウィンドウで、パーティション.qdbを最終エクスポート後に指定します。 File.
最終エクスポート後 File

- デザインをコンパイルしてパーティションをエクスポートするには、コンパイル ダッシュボードで [デザインのコンパイル] をクリックします。
- Intel Quartus Prime ソフトウェアでトップレベル プロジェクトを開きます。
- [割り当て] ➤ [設定] ➤ [コンパイラ設定] ➤ [増分コンパイル] をクリックします。[高速保存] オプションをオンにします。
高速保存オプション

- [OK]をクリックします。
- デザインパーティションウィンドウで、エクスポートした.qdbをパーティションデータベースとして指定します。 File 問題のパーティションの。この .qdb は、プロジェクト内のこのパーティションのソースになります。Fast Preserve オプションを有効にすると、コンパイラはインポートされたパーティションのロジックをインターフェイス ロジックのみに削減し、パーティションに必要なコンパイル時間を短縮します。
デザインパーティション設定
デザインパーティション設定
| オプション | 説明 |
| パーティション名 | パーティション名を指定します。各パーティション名は一意で、英数字のみで構成されている必要があります。Intel Quartus Prime ソフトウェアは、プロジェクト リビジョンごとに最上位 (|) の「root_partition」を自動的に作成します。 |
| 階層パス | パーティションに割り当てるエンティティインスタンスの階層パスを指定します。この値は、 新しいパーティションを作成 ダイアログ ボックス。ルート パーティション階層パスは | です。 |
| タイプ | ダブルクリックして、コンパイラがパーティションを処理および実装する方法を制御する次のパーティション タイプのいずれかを指定します。 |
| 続き… | |
| オプション | 説明 |
| • デフォルト—標準パーティションを識別します。コンパイラは、関連するデザインソースを使用してパーティションを処理します。 files.
• 再構成可能—部分再構成フローで再構成可能なパーティションを識別します。 再構成可能 PR フローでパーティションの再調整を可能にしながら、合成結果を保持するタイプ。 • 予約コア—デバイス周辺機器を再利用するコンシューマーによるコア開発用に予約されているブロックベースの設計フロー内のパーティションを識別します。 |
|
| 保存レベル | パーティションの保存レベルを次のいずれかに指定します。
• 未設定—保存レベルを指定しません。パーティションはソースからコンパイルされます files. • 合成された—パーティションは合成されたスナップショットを使用してコンパイルされます。 • ファイナル—パーティションは最終スナップショットを使用してコンパイルされます。 と 保存レベル of 合成された or ファイナルソース コードへの変更は合成には反映されません。 |
| 空の | コンパイラがスキップする空のパーティションを指定します。この設定は、 予約コア そして パーティションデータベース File 同じパーティションの設定。 保存レベル でなければなりません 未設定空のパーティションには子パーティションを作成できません。 |
| パーティションデータベース File | パーティションデータベースを指定します File (.qdb)は、コンパイラがパーティションのコンパイル時に使用します。sの.qdbをエクスポートします。tag再利用したいコンパイル結果(合成済みまたは最終)を .qdb に割り当てます。その結果を別のコンテキストで再利用するには、.qdb をパーティションに割り当てます。 |
| エンティティの再バインド | • PR フロー - 各実装リビジョンでデフォルトのペルソナを置き換えるエンティティを指定します。
• ルート パーティション再利用フロー - コンシューマー プロジェクト内の予約済みコア ロジックを置き換えるエンティティを指定します。 |
| 色 | チップ プランナーおよびデザイン パーティション プランナーの表示におけるパーティションの色分けを指定します。 |
| 合成後のエクスポート File | 分析と合成が実行されるたびに、パーティションの合成後のコンパイル結果を、指定した .qdb に自動的にエクスポートします。root_partition を含む、保存された親パーティションを持たないデザイン パーティションを自動的にエクスポートできます。 |
| 最終エクスポート後 File | 最終コンパイルが完了するたびに、パーティションの最終コンパイル後の結果を指定した.qdbに自動的にエクスポートします。tagフィッター実行の e。root_partition を含む、保存された親パーティションを持たないデザイン パーティションを自動的にエクスポートできます。 |
AN 903 文書改訂履歴
このドキュメントには次の改訂履歴があります。
| ドキュメントバージョン | インテル Quartus Prime バージョン | 変更点 |
| 2021.02.25 | 19.3 | 「引っ張る」を「張力」に置き換えた 設計RTLの分析と最適化 トピック。 |
| 2020.03.23 | 19.3 | コード内の構文エラーを修正しましたamp「クロック、RAM、DSP のロックダウン」トピックを参照してください。 |
| 2019.12.03 | 19.3 | • 初めての一般公開。 |
ドキュメント / リソース
![]() |
インテル AN 903 タイミング クロージャの加速 [pdf] ユーザーガイド AN 903 加速タイミングクロージャ、AN 903、加速タイミングクロージャ、タイミングクロージャ |





