Intel Quartus Primeプロ・エディション ユーザーガイド: デザインのコンパイル
バージョン情報
更新対象: |
---|
インテル® Quartus® Prime デザインスイート 19.4 |
1. デザインのコンパイル
Compilerの Intel® Quartus® Primeプロ・エディション・バージョンでサポートする高度な機能は次のとおりです。
- インテル® Arria® 10、 インテル® Cyclone® 10 GX、 インテル® Stratix® 10、および インテル® Agilex™ デバイスのサポート。
- Incremental Fitterの最適化 - 各ステージの解析および最適化をフィッターの各ステージ後に行い、パフォーマンスを最大限に引き出し、総コンパイル時間を短縮。
- Hyper-Aware Design Flow - Hyper-RetimingおよびFast Forwardコンパイルを使用した、 インテル® Stratix® 10および インテル® Agilex™ デバイスにおける最良のパフォーマンスの実現。
- パーシャル・リコンフィグレーション - FPGAの一部分のダイナミック・リコンフィグレーションの実行。この間、残りの部分のFPGAは機能し続けます。
- ブロックベースのデザインフロ - デザインブロックの保持および再利用。
1.1. コンパイルの概要
コンパイルプロセス | 説明 |
---|---|
IP Generation | プロジェクト内のIPコンポーネントのステータスおよびバージョンを識別します。アップグレードが必要な古いIPをレポートします。 |
Analysis & Synthesis |
デザインロジックの合成、最適化、最小化、およびデバイスリソースへのマッピングを行います。「合成」スナップショットでは、このステージの結果を保持します。 Analysis & Elaborationは、Analysis & Synthesisのステージの1つです。このステージでは、デザインファイルおよびプロジェクト・エラーをチェックします。 |
Fitter (Place & Route) |
デザインの配置および配線を特定のデバイスリソースに割り当てる一方で、タイミングおよび配置制約を尊重します。Fitterには次のステージが含まれます。
|
Fast Forward Timing Closure Recommendations | 詳細レポートを生成し、特定のRTLの変更によって達成可能なパフォーマンスの向上を見積もります。 |
Timing Analysis | すべてのデザインロジックのタイミング・パフォーマンスの解析および検証をTiming Analyzerを使用して行います。 |
Power Analysis | デバイスの消費電力を見積もるオプションのモジュールです。デザインの各I/Oセルの電気規格と各I/O規格のボード・トレース・モデルを指定します。 |
Assembler | Fitterの配置配線の割り当てをFPGAデバイスのプログラミング・イメージに変換します。 |
EDA Netlist Writer | 出力ファイルを生成して、他のEDAツールで使用できるようにします。 |
1.1.1. コンパイルフロー
デザインを開発および最適化する際は、フルコンパイルを待つのではなく、必要なCompilerのステージのみを実行します。フルコンパイルを実行するのは、デザインが完了し、すべてのCompilerモジュールを実行してデバイス・プログラミング・イメージを生成する準備ができたときだけです。
Compilerのフロー | 機能 |
---|---|
早期配置フロー | すべてのコア要素を隣接した場所に配置して、デザイン・プランニングを容易にします。Early Placeを実行して、デザイン要素の初期ハイレベル配置をChip Plannerで確認したり、タイミング制約をデバッグして微調整したりします。この情報は、フロアプランの決定を導くのに役立ちます。 |
インクリメンタル最適化フロー | インクリメンタル最適化を行うと、各Fitterステージの後に処理を停止し、結果を解析し、次のコンパイルステージに進む前に設定またはRTLの調整を行うことができます。この反復フローの最適化は、フルコンパイルの結果を待たずに各ステージで行われます。 |
Hyper-Awareデザインフロー | 自動レジスター・リタイミング (Hyper-Retiming) とターゲットとするタイミング・クロージャーの推奨事項 (Fast Forward Compilation) の実装との組み合わせによって、Hyper-Registerを最大限使用し、 インテル® Stratix® 10および インテル® Agilex™ デバイスでの最良のパフォーマンスを実現します。 |
フル・コンパイル・フロー | すべてのCompilerモジュールを順次起動して、合成、フィッティング、最終タイミングの解析、およびデバイス・プログラミング・ファイルの生成を行います。デフォルトでは、Compilerによって生成、保持されるのは、フルコンパイル中の 合成および最終スナップショットのみです。オプションで、Enable Intermediate Fitter Snapshotsをイネーブルして、計画、配置、および配線スナップショットを保持することができます。 |
パーシャル・リコンフィグレーション | FPGAの一部分のダイナミック・リコンフィグレーションを行う一方で、残りの部分のFPGAデザインは機能し続けます。 |
ブロックベースのデザインフロー | デザインブロックの保持と再利用のサポートを1つ以上のプロジェクトで行います。合成または最終デザインブロックは、他のプロジェクトで再利用できます。再利用可能なデザインブロックには、デバイスコアまたはペリフェラル・リソースを含めることができます。 |
1.1.2. コンパイル階層
デザイン・パーティションをブロックベースのデザインなどで使用する場合、Compilerでは、各デザイン・パーティションの結果も分離します。Compilerでは、パーティション内の配置配置をすべて保持します。デザイン階層の他の部分を変更しても、パーティションへの影響はありません。この階層構造により、特定のデザイン要素を最適化する際に他のパーティションの配置配線が影響されることはありません。階層プロジェクト構造では、分散ワークグループや複数のマシンにわたるコンパイル処理もサポートします。
1.2. デザイン合成
合成では、デザインの論理的な完全性と一貫性を調べ、境界接続性と構文エラーをチェックします。また、デザインロジックの最小化および最適化を行います。例えば、合成では、Dフリップフロップ、ラッチ、およびステートマシンの推論を、Verilog HDL、VHDL、SystemVerilogなどの「動作」言語から行うことがあります。合成では、有利な場合、+ や – などの演算子を、 インテル® Quartus® Prime IPライブラリーのモジュールと置き換えます。合成中、Compilerでは、ユーザーロジックおよびデザインノードの変更または削除を行う場合があります。 インテル® Quartus® Prime合成では、ゲート数を最小化し、冗長ロジックを削除し、デバイスリソースの効率的な使用を保証します。
合成の最後に、Compilerでは、atomネットリストを生成します。atomは、FPGAデバイスの最も基本的なハードウェア・リソースを指します。atomには、ルックアップ・テーブルに編成されたロジックセル、Dフリップフロップ、I/Oピン、ブロック・メモリー・リソース、DSPブロック、およびatom間の接続などがあります。atomネットリストは、atom要素のデータベースです。これは、シリコンでデザインを実装するためにデザイン合成で必要とされます。
1.2.1. 合成の実行
- コンパイル用の有効なデザインファイルを含む インテル® Quartus® Primeプロジェクトを作成するか開きます。
-
合成の実行前に、合成に影響を与える設定と制約を次のとおり指定します。
- Verilog HDL入力ファイルの合成オプションを指定するには、Assignments > Settings > Verilog HDL Inputの順にクリックします。
- VHDL入力ファイルの合成オプションを指定するには、Assignments > Settings > VHDL Inputの順にクリックします。
- コンパイル処理時間に影響するオプションを指定するには、Assignments > Settings > Compilation Process Settingsの順にクリックします。
- Compilerのハイレベルの最適化方法やその他のオプションを指定するには、Assignments > Settings > Compiler Settingsの順にクリックします。最適化モード に従って最適化目標を指定します 。
- Compiler Settingsのページで、Enable Intermediate Fitter Snapshotsオプションをイネーブルまたはディスエーブルして、Plan、Place、Route、およびRetimeステージのスナップショットの保持をフルコンパイルの実行回ごとに行います。Compilerによる中間スナップショットの生成は、デフォルトでは行われません。
- 高度な合成設定を指定するには、Assignments > Settings > Compiler Settingsの順にクリックした後、Advanced Settings (Synthesis)をクリックします。
- フラクタル合成のイネーブルは、DSPリソースをすべて使い果たす算術集約型デザインに対して検討してください。これは、フラクタル合成の最適化 のガイドラインに従って行います。
- 合成を実行するには、Compilation DashboardのSynthesisをクリックします。
1.2.1.1. 合成中のレジスターの保持
Preserve Registers in Synthesisまたは Preserve Fan-Out Free Register Nodeオプションを割り当てて、保持されたレジスターをFitterによって最適化できるようにします。Preserve Registersでは、保持されたレジスターのFitter最適化を制限します。合成保持割り当てを指定するには、Assignments > Assignment Editorをクリックするか、.qsf ファイルの変更、またはRTLの合成属性の指定を行います。
Assignment | 説明 | Fitter最適化の許可 | Assignment構文 |
---|---|---|---|
Preserve Registers in Synthesis | レジスターの削除が合成中に行われないようにします。この設定は、Fitterでのリタイミングやその他の最適化には影響しません。 | 許可する |
|
Preserve Fan-Out Free Register Node | ファンアウトのないレジスターが割り当てられている場合、その削除が合成中に行われないようにします。 PRESERVE_FANOUT_FREE_NODE 割り当てでは、ファンアウトのないレジスターの保持は、レジスターを定義したVerilog HDLまたはVHDLモジュール内にファンアウトがない場合はできません。このようなファンアウトのないレジスターを保持するには、noprune プラグマをソースファイルに次のように実装します。 (*noprune*)reg r; このモジュールのインスタンスが複数あり、一部のインスタンスのみでファンアウトなしのレジスターの保持が必要な場合は、ダミープラグマをHDLのレジスター上に設定し、PRESERVE_FANOUT_FREE_NODE 割り当ても設定します。このダミープラグマにより、レジスター合成によって割り当てが実装できるようになります。例えば、次のダミープラグマをVerilog HDLのレジスター r に対して設定します。 (*dummy*)reg r; |
許可する |
|
Preserve RegistersPreserve Registers | 割り当てられているレジスターの削除や順次最適化が、合成中に行われないようにします。順次ネットリストの最適化により、冗長なレジスターおよび定数ドライバーを備えたレジスターが排除できます。 | 許可しない |
|
1.2.2. 合成レポートの表示
生成されるレポート | 説明 |
---|---|
Summary | 合成に関する概要情報 (ステータス、日付、ソフトウェア・バージョン、エンティティー名、デバイスファミリー、タイミング・モデル・ステータス、さまざまな種類のロジック使用率) を表示します。 |
Synthesis Settings | デザイン処理中のすべての合成設定の値を一覧表示します。 |
Parallel Compilation | 合成中の並列処理の使用に関する仕様を一覧表示します。 |
Resource Utilization By Entity | 全種類のロジックの使用量をデザイン合成の各エンティティーに対して一覧表示します。 |
Multiplexer Restructuring Statistics | 合成によって実行されるマルチプレクサ再構築量に関する統計を提供します。 |
IP Cores Summary | デザイン合成の各IPコア・インスタンスに関する詳細情報を一覧表示します。詳細情報には、IPコア名、ベンダー、バージョン、ライセンスタイプ、エンティティー・インスタンス、およびIPインクルード・ファイルが含まれます。 |
Synthesis Source Files Read | デザイン合成のすべてのソースファイルに関する詳細情報を一覧表示します。詳細情報には、ファイルパス、ファイルタイプ、およびライブラリー情報が含まれます。 |
Resource Usage Summary for Partition | 全種類のロジック使用量をデザイン合成の各エンティティーに対して一覧表示します。 |
RAM Summary for Partition | デザイン合成の各デザイン・パーティションのRAM使用量の詳細情報を一覧表示します。詳細情報には、名前、タイプ、モード、密度が含まれます。 |
Register Statistics | さまざまな種類のグローバル信号を使用するレジスターの数を一覧表示します。 |
Synthesis Messages |
Analysis & Synthesisのプロセス中に見られた条件をレポートする情報、警告、およびエラーメッセージをすべて一覧表示します。 |
1.3. デザインの配置配線
デフォルトでFitterでは、適切なリソース、相互接続パス、およびピン位置を選択します。ロジックを特定のデバイスリソースに割り当てると、Fitterでは、その要件への一致を試み、制約のない残りのデザインロジックの適合および最適化を行います。Fitterによって、デザインを現在のターゲットデバイスに適合させることができない場合、Fitterでは、コンパイルを終了し、エラーメッセージを発行します。
Intel® Quartus® Primeプロ・エディション Fitterで導入されたハイブリッド配置手法は、解析配置手法とアニーリング配置手法を組み合わせたものです。解析配置では、初期数学的開始配置を決定します。その後、アニーリング手法により、ロジックブロック配置の微調整が、リソース使用率が高い場合を想定して行われます。
1.3.1. Compilation Dashboardの使用
Compilation Dashboardは、プロジェクトを開くとデフォルトで表示されます。TasksウィンドウでCompilation Dashboardをクリックして再度開くこともできます。
- Pencilアイコンをクリックすると、コンパイルフローの各ステージの設定が編集できます。
- Compilerのいずれかのステージをクリックすると、Compilerステージが1つ以上実行できます。
- Report、 RTL Viewer、Technology Map Viewer、Timing Analyzer、またはSnapshot Viewerアイコンをクリックすると、ステージ結果の解析ができます。
Compilerのフローが進行するにつれて、ダッシュボードでは、各モジュールのステータスが更新され、アイコンがイネーブルされます。アイコンをクリックするとレポートや解析ができます。
1.3.2. Fitterの実行
Intel® Quartus® Primeプロ・エディション Compilerでは、Fitterの各ステージの制御や最適化ができます。これには、Plan、Early Place、Place、およびRouteステージがあります。Fitterの全ステージをフル・デザイン・コンパイルの一部として実行するか、Fitterステージをデザイン合成後に個別に実行します。Fitterの実行前に、Fitter処理に影響する設定を指定します。
Fitterステージの実行後、詳細なレポートデータを表示し、そのステージのタイミングを解析します。Compilerによる最終スナップショットのFitter結果の保持は、デフォルトで行われます。
-
Fitterの初期制約を次のように指定します。
- デバイスのI/Oピンを割り当てるには、 Assignments > Pin Plannerをクリックします。
- デバイス・ペリフェラル、クロック、およびI/Oインターフェイスを割り当てるには、Tools > Interface Planner をクリックします。
- ロジック配置領域を制約するには、Tools > Chip Plannerをクリックします。
- フィッター最適化目標を指定するには、Assignments > Settings > Compiler Settingsをクリックします。最適化モード でこの場合のオプションについて詳しく説明します。
- Fitterの詳細オプションを使用して配置配線を微調整するには、Assignments > Settings > Compiler Settings > Advanced Settings (Fitter) をクリックします。
-
Fitterのステージを1つ以上実行するには、Compilation Dashboardで次のコマンドのいずれかをクリックします。
- Fitterステージを順に実行するには、Fitterをクリックします。
- デバイス・ペリフェラルの配置配線のみを実行するには、Planをクリックします。
- 早期配置のみを実行するには、Early Placeをクリックします。
- ロジック配置のみを実行するには、Placeをクリックします。
- ロジック配線のみを実行するには、Routeをクリックします。
- ALMレジスターのHyper-Registerへのリタイミングのみを実行するには、 Retimeをクリックします。2
- Implementフロー (Plan、Place、Route、およびRetimeステージ) を実行するには、 Fitter (Implement) をクリックします。
- Finalizeフロー (Plan、Early Place、Place、Route、Retime、およびFinalizeステージ) を実行するには、 Fitter (Finalize) をクリックします。
1.3.2.1. Fitterコマンド
コマンド | 説明 |
---|---|
Start Fitter (Plan) |
合成されたペリフェラル配置データおよび制約をロードし、ペリフェラル要素をデバイスI/Oリソースに割り当てます。このコマンドによって計画スナップショットが作成されます。 |
Start Fitter (Early Place) |
すべてのコア要素を隣接した場所に配置して、デザインのプランニングを容易にします。このコマンドでは、早期配置スナップショットを作成します。Early Placeは、デフォルトでは、フル・コンパイル・フロー中は実行されませんが、デフォルトでイネーブルにするか、Compilation Dashboardから直接実行できます。 |
Start Fitter (Place) |
すべてのコア要素を適切な場所に配置します。このコマンドによって配置スナップショットが作成されます。 |
Start Fitter (Route) |
すべての配線をデザイン内の要素間に作成します。このコマンドによって配線スナップショットが作成されます。 |
Start Fitter (Retime) |
レジスターのリタイミングを実行し、既存のレジスターをHyper-Registerに移動して、パフォーマンスを向上させます。このために、リタイミング制約の削除とクリティカル・パスの排除が行われます。Compilerによる短いパスのホールド違反のレポートは、Retimeステージの後にされる場合もあります。Fitterでは、ホールド違反のある短いパスの特定と修正をFitter (Finalize) ステージ中に行います。このために、配線ワイヤーをパスに沿って追加します。このコマンドによってリタイミング・スナップショットが作成されます。 |
Start Fitter (Retime) |
配線後の最適化をデザインで実行します。このステージでは、不要なタイルをHigh SpeedからLow Powerに変換します。このコマンドによって最終スナップショットが作成されます。 インテル® Stratix® 10および インテル® Agilex™ の場合、Fitterでは、配線後の修正を実行して、リタイミングで残っている短いパスのホールド違反を修正します。 |
1.3.2.2. 物理合成最適化のイネーブル
物理合成最適化オプションをイネーブルするには、次の手順に従います。
- Assignments > Settings > Compiler Settingsをクリックします。
- リタイミング、組み合わせ最適化、およびレジスターの複製をイネーブルするには、Advanced Settings (Fitter) をクリックします。次に、Physical Synthesisをイネーブルします。
- 物理合成結果をNetlist Optimizationsレポートで表示します。
1.3.3. Fitterレポートの表示
1.3.3.1. Plan Stageレポート
インテル® Arria® 10および インテル® Cyclone® 10 GXデザインの場合、Planステージには、Global & Other Fast Signals Summaryレポートが含まれます。このレポートでは、Compilerによってどのクロックをグローバルクロックに昇格させるか確認できます。クロック・プランニングの発生は、 インテル® Stratix® 10および インテル® Agilex™ デザインのEarly Placeステージの後です。
1.3.3.2. Place Stageレポート
1.3.3.2.1. Global Signal Visualizationレポート
このレポートを使用して、個々のクロックの配線および配置を追跡することができます。このデータを使用して、グローバル信号の配線輻輳問題を解析し、グローバル信号の配置配線の障害をデバッグすることができます。
グローバル・クロック・ツリー実装の詳細を表示し、グローバル信号をデザインに追加する能力を評価します。クロックツリー合成エラーの場合、レポートには、障害のある信号のほか配線の輻輳の原因となっている競合信号のターゲット領域も表示されます。
インタラクティブなヒートマップでは、カラー・グラデーションを使用して、クロックセクターの輻輳を示します (このクロックセクターのクロック信号は、同じセクター内で終端しています)。テーブル内のクロック信号にカーソルを合わせると、クロック信号が使用するセクターと配線要素が強調表示されます。テーブル内のクロック信号を選択すると、関係のないすべてのセクターと配線要素が暗くなり、その信号によって使用されるセクターと配線要素のみが強調表示されます。異なるレイヤーのグローバル・クロック信号の配線をレポートで表示する場合は、スタック・レイヤー・ビューを使用します。
フィルター処理によってShow Routing Utilization (配線使用率) およびShow Sector Utilization (セクター使用率) を表示させます。テーブルの内容は、ヒートマップでの選択に基づいて変わります。Signal Namesを検索した後、信号名を選択して、下のペインにそのプロパティーを表示させます。任意の信号を選択して他のツールでLocate (特定) します。
1.3.3.3. Route Stageレポート
1.3.3.3.1. Global Router Wire Utilization Mapレポート
Global Router Wireテーブルをフィルター処理し、shortまたはlongのWirelengthsを表示させます。Directionsにはall (すべて) を選択します。テーブルの内容は、ヒートマップで行った選択に基づいて変わります。Signal Names (信号名) を検索し、信号名を単一選択または複数選択すると、下のペインにプロパティーが表示されます。1つ以上のノードをテーブル内で選択して、さまざまなエディターで Locate (特定) します。
1.3.3.4. Retime Stageレポート
1.3.3.5. Retime Stageのレポート
- HSLP Summary。 インテル® Arria® 10および インテル® Cyclone® 10 GXデザインの場合、Compilerでは、不要なタイルをHigh-SpeedまたはLow-Power (HSLP) タイルに変換します。
- 配線後ホールド・フィックスアップ・データ。 インテル® Stratix® 10および インテル® Agilex™ デザインの場合、Compilerレポートでは、短いパスの違反をRetimeステージ後に保持します。 Fitterでは、短いパスにホールド違反のあったパスの特定および修正をFitter (Finalize) ステージ中に行います。そのために、パスに沿って配線ワイヤーを追加します。
1.4. インクリメンタル最適化のフロー
Fitterステージ | インクリメンタル最適化 |
---|---|
Plan | このステージの後、Plan後のタイミング解析を実行して、タイミング制約を検証し、クロック間のタイミング・ウィンドウの検証ができます。ペリフェラル (I/O) の配置およびプロパティーを表示します。 |
Early Place | このステージの後、Chip Plannerでは、デザイン要素の初期ハイレベル配置を表示します。この情報を使用して、フロアプランの決定を導きます。 |
Place | このステージの後、リソースおよびロジックの使用率をCompilation Reportsで検証し、デザイン要素の配置をChip Plannerで確認します。 |
Routing | このステージの後、詳細セットアップとタイミング・クロージャーの保持をTiming Analyzerで行い、Chip Plannerを介して配線の輻輳を表示します。 |
Retime | このステージの後、Retimingの結果をFitterレポートで確認し、リタイミングのさらなる最適化を制限している制約をレポートして修正します。 |
1.4.1. 合成またはフィッティング中の同時解析
Analysis & Synthesis中に、ダッシュボードのConcurrent Analysisアイコンをクリックすると、レポート、RTL Viewer、またはTechnology Map Viewerが表示されます。Fitterの処理中のタイミング解析は、ステージで Timing Analyzer アイコンが表示されていれば可能です。また、Technology Map Viewerスナップショットの表示は、Fitterステージ中にできます。タイミング制約の変更は、同時解析中は行わないでください。変更すると、元となるコンパイルの結果に影響します。ただし、いつでもコンパイルを停止して、ソースファイルの .sdc 制約を変更した上で、 Timing Analyzer アイコンをクリックして、変更した制約を使用して解析を再開できます。
1.4.2. Compiler のスナップショットの解析
1.4.3. Early Placeフロー
Early PlaceがFitter処理中に自動的に実行されるのは、Early Placeステージをコンパイル・ダッシュボードでイネーブルした場合、またはSettings > Compiler Settings > Fitter Settings (Advanced) > Run Early Place During Compilationをイネーブルした場合です。
1.4.3.1. Early Place後のクロック・プランニング
- Compilation DashboardでEarly Placeステージをクリックします。
-
Compilation ReportのEarly Place Stageフォルダーで、Global & Other Fast Signals DetailsまたはGlobal & Other Fast Signals Summaryレポートをクリックします。
図 17. Global & Other Fast Signal Detailsのレポート
レポートには、クロック・ツリー・パスの長さと深さが表示されます。クロックソースからクロックツリーまでの最短パス長、およびクロックツリーの最小深度によって、最良のクロック・パフォーマンスが得られます。
- クロックパスの長さとクロックツリーの深さを可視化するには、Tools > Chip Plannerをクリックします。
- Chip PlannerのTasksペインで、Clock ReportsフォルダーのReport Clock Detailsをクリックします。
- Report Clock Detailsダイアログボックスで、OKをクリックします。Reportペインには、デザイン内のすべてのクロックが一覧表示されます。
-
Reportペインで、クロックを1つ以上選択すると、Chip Plannerのクロック要素が強調表示されます。
図 18. Chip Plannerでのクロックの可視化
1.4.3.2. Early Place後のlate_placeの実行
late_place をEarly Placeの後に実行する手順は次の通りです。
-
Early Placeステージを実行し、Early Placeスナップショットを生成するには、次のいずれかを実行します。
- Early PlaceをGUIで実行するには、Compilation DashboardでEarly Placeをクリックします。Compilerによって、前提条件として必要なステージが実行されます。
- Early Place (および前提条件のステージ) をコマンドラインで実行するには、次のコマンドを実行します。「-」記号は、二重ハイフンと同等です。
quartus_ipgenerate <design_name> quartus_syn <design name> quartus_fit -plan <design name> quartus_fit -early_place <design name>
注: 早期配置スナップショットの生成は、late_place の実行前に行ってください。そうしないと、Fitterによってエラーがレポートされます。 - Early Placeの結果は、Compilation ReportのEarly Placed Fitterレポート、およびChip Planner (Tools > Chip Planner) に表示されます。
-
満足なEarly Placeの結果が出たら、次のコマンドのうちの1つを入力して、late_place ステージ以降に進みます。late_place
の結果は <design name>
.fit.place.rpt ファイルに表示されます。
-
quartus_fit –late_place <design name> (runs late_place)
-
quartus_fit –late_place –route <design name> (runs late_place and route)
-
quartus_fit –late_place –route –finalize <design name> (runs late_place and finalize)
-
1.4.4. Planステージ後のペリフェラル (I/O) の検証
- Compilation DashboardでPlanステージをクリックします。
-
Compilation ReportのPlan Stageフォルダーで、Input Pins、Output Pins、
I/O Bank Usage、PLL Usage
Summary、または他のレポートをクリックします。物理ピンの位置、I/O規格、PLLの配置などのI/Oピンの属性を確認します。
図 20. Input Pinsのレポート
-
インテル®
Arria® 10および
インテル®
Cyclone® 10 GXデザインの場合、Global & Other Fast Signals Summaryをクリックして、Compilerによってどのクロックをグローバルクロックに昇格させるかを確認します。クロック・プランニングの発生は、
インテル®
Stratix® 10および
インテル®
Agilex™
デザインのEarly Placeステージの後です。
図 21. Global & Other Fast Signalsレポートによるクロック昇格の表示 ( インテル® Arria® 10および インテル® Cyclone® 10 GX FPGA)
1.5. Hyper-Awareデザインフロー
Hyper-Awareデザインフローは、自動レジスター・リタイミング (Hyper-Retiming) とターゲットとするタイミング・クロージャーの推奨事項の実装 (Fast Forwardコンパイル) との組み合わせによって、Hyper-Registerを最大限使用し、 インテル® Stratix® 10および インテル® Agilex™ デバイスでの最良のパフォーマンスを実現します。
Hyper-Retiming
インテルHyperflexアーキテクチャーの主な革新は、複数のHyper-Registerをすべての配線セグメントおよびブロック入力へ追加したことです。Hyper-Registersの使用を最大化すると、デザインのパフォーマンスが向上します。Hyper-Registerの普及により、レジスター間の時間遅延のバランスが改善され、クリティカル・パス遅延が緩和されます。 Hyper-Retimingでは、レジスターをALMから移動し、有利な場合はそれをHyper-Registerにリタイミングします。Hyper-Retimingはフィッティング中に自動的に実行されます。作業量は最小限で済み、パフォーマンスが大幅に向上します。
Fast Forwardコンパイル
Hyper-Retiming以上の最適化が必要な場合は、Fast Forwardコンパイルを実行して、タイミング・クロージャーの推奨事項を生成します。これによって主要なパフォーマンス・ボトルネックを解消します。Fast Forwardコンパイルでは、RTLの変更による影響が最も大きくなる場所を正確に示し、それぞれの変更によって期待できるパフォーマンス上の利点をレポートします。Fitterでは、RAMおよびDSPブロック全体でのレジスターの自動リタイミングはしません。ただし、Fast Forward解析では、この最適化による潜在的なパフォーマンスの利点が示されます。
Fast-Forwardコンパイルでは、パイプライン・ステージ (Hyper-Pipelining) を追加する最適な場所や、それぞれの場合に期待されるパフォーマンス上の利点を特定します。RTLを変更して、パイプライン・ステージを各クロックドメインの境界に配置すると、Hyper-Retimerでは、最適な位置にあるクロックドメイン内のレジスターを自動配置して、パフォーマンスの最大化を図ります。RTLの推奨事項を実装した場合も、同様の結果が達成されます。変更を実装した後、Hyper-Retimerを再実行して、その結果がパフォーマンスおよびタイミング要件を満たすようにします。Fast Forwardは、フルコンパイルの一部として自動的に実行されることはありません。Compilation DashboardでFast Forward compilationをイネーブルまたは実行してください。
最適化ステップ | 手法 | 説明 |
---|---|---|
ステップ1 | Hyper-Retiming | リタイマーによって既存のレジスターをHyper-Registerに移動します。 |
ステップ2 | Fast Forwardコンパイル | Compilerによってデザイン固有のタイミング・クロージャーの推奨事項を生成し、パフォーマンスの向上を予測します。 |
ステップ3 | Hyper-Pipelining | Fast Forwardコンパイルを使用して、新しいレジスターとパイプラインステージを追加するRTL内の場所を特定します。 |
ステップ4 | Hyper-Optimization | Hyper-RetimingおよびHyper-Pipelining以外のデザイン (ループの再構築、制御ロジックの制限の削除、長いパスに沿った遅延の削減など) の最適化。 |
Hyper-Awareのデザインフローには、次のハイレベルの手順が含まれます。この章で詳しく説明します。
- RetimeステージをFitter中に実行して、ALMレジスターをHyper-Registerに自動的にリタイムする。
- Retiming ResultsをCompilation Reportで確認する。
- パフォーマンスの最適化がさらに必要な場合は、Fast Forwardコンパイルを実行する。
- Fast Forwardタイミング・クロージャーの推奨事項を確認する。
- 適切なFast Forwardの推奨事項をRTLに実装する。
- Retimeステージでデザインを再コンパイルする。
1.5.1. ステップ1 : レジスターのリタイミングを実行する
Fitterでは、 インテル® Stratix® 10または インテル® Agilex™ デバイスをターゲットにした場合、配置配線に従ってRetimeステージを自動的に実行します。もしくは、個々のRetimeステージの開始または停止をCompilation Dashboardで行います。レジスターのリタイミングの実行後は、Fitterレポートを表示して、残りのクリティカル・パスを最適化してください。
レジスターのリタイミングを実行するには、次の手順に従います。
- デザインの合成およびフィッティングの準備ができた インテル® Quartus® Primeプロジェクトを作成するか開きます。
- レジスターのリタイミングを実行するには、Compilation DashboardのRetimeをクリックします。Compilerでは、前もって必要なステージを必要に応じて自動的に実行します。Compilerでは、各ステージの詳細レポートとタイミング解析データを生成します。ReportまたはTiming Analyzerアイコンをクリックして、各ステージの結果を確認します。ステージを再実行すると、設定またはデザインの変更が適用されます。
-
レジスターのリタイミングによってデザインのパフォーマンス目標がすべて達成できた場合は、コンパイルのFitter (Finalize) およびタイミング解析のステージに進みます。デザインで最適化がさらに必要な場合は、 Fast Forward Timing Closure Recommendationsを実行してください。
図 24. Compilation Dashboardのリタイミング・ステージ
1.5.2. ステップ2 : リタイミング結果を確認する
- Retiming Limit Detailsレポートを開くには、Compilation DashboardのRetimeステージでReportアイコンをクリックします。Retiming Limit Detailsには、移動したレジスターの数、そのパス、リタイミングを妨げる制限理由が一覧表示されます。
- さらに最適化するには、デザインのLimiting Reasonを解決し、Retimeステージを必要に応じて再実行します。
- レジスターのリタイミングによってデザインのパフォーマンス目標がすべての達成できた場合は、コンパイルのFitter (Finalize) およびTiming Analysisのステージに進みます。
-
デザインでさらに最適化が必要な場合は、 Fast Forward Timing Closure Recommendationsを実行してください。
表 8. Retiming Limit Detailsのレポートデータ レポートデータ 説明 Clock Transfer デザインの各クロックドメインを一覧表示します。ドメインをクリックすると、各エントリーに関するデータが表示されます。 Limiting Reason レジスターのリタイミングがさらに向上するのを妨げるデザイン条件を特定します。例えば次の条件があります。 - Insufficient Registers - チェーンの両端のレジスターの量が、リタイミングには十分ではないことを示します。レジスターを追加することでパフォーマンスが向上します。
- Short Path/Long Path - クリティカル・チェーンの依存パス特性に矛盾があることを示します。例えば、あるパスではより多くのレジスターによってパフォーマンスが向上し、別のパスでは場所がないのでハイパーレジスターを追加できません。
- Path Limit - Hyper-Registerの場所がクリティカル・パスにはもうないか、デザインが現在の配置配線のパフォーマンス制限に達したことを示します。
- Loops - 回路内のフィードバック・パスを示します。クリティカル・チェーンにフィードバック・ループが含まれている場合、リタイミングによるループ内のレジスター数の変更は、機能を変更しないとできません。Compilerでは、ループの周りでのリタイミングは、機能を変更せずにすることができます。ただし、Compilerでは、追加のレジスターをループに配置することはできません。
Critical Chain Details リタイミングの制限に関連するレジスター・タイミング・パスを一覧表示します。Locate Critical Chain in Technology Map Viewerで任意のパスを右クリックします。 図 25. Retiming Limit Details
注: Compilerでは、短いパスの保持違反のレポートをRetimeステージ後に行います。Fitterでは、短いパスのホールド違反がFitter (Finalize) ステージ中に発生した場合、そのパスを特定して修正します。これには、配線ワイヤーをパスに沿って追加します。
1.5.2.1. クリティカル・チェーンの検索
- Retiming Limit Detailsレポートを開くには、Compilation DashboardでRetimeステージの横にあるReportアイコンをクリックします。
-
Retiming Limit Detailsレポートで任意のパスを右クリックし、Locate Critical Chain in Technology Map Viewerをクリックします 。ネットリストが、スケマティックとしてTechnology Map Viewerに表示されます。
図 26. Technology Map Viewer図 27. リタイミング後のポストフィット・ビューアー
1.5.3. ステップ3 : Fast ForwardコンパイルおよびHyper-Retimingを実行する
Fast Forwardタイミング・クロージャーの推奨事項を生成するには、次の手順を実行します。
- Compilation Dashboardで、Fast Forward Timing Closure Recommendationsをクリックします。Compilerでは、事前合成またはFitterステージを必要に応じて自動的に実行し、Compilation Reportでタイミング・クロージャーの推奨事項を生成します。
- Compilation Reportでタイミング・クロージャーの推奨事項を確認して、デザイン・パフォーマンスを評価し、主要なRTLパフォーマンスの改善事項を実装します。
-
必要に応じて、次のいずれかのオプションを指定して、Fast Forward解析の自動化または調整を行ってください。
- 各フルコンパイル中にFast Forwardコンパイルを実行する場合は、 Assignments > Settings > Compiler Settings > HyperFlexをクリックして、Run Fast Forward Timing Closure Recommendations during compilationをイネーブルします。
- Fast Forwardコンパイルによる特定のI/Oおよびブロックタイプの解釈方法を変更する場合は、Assignments > Settings > Compiler Settings > HyperFlex > Advanced Settingsをクリックしてください。
図 28. Fast Forwardコンパイルの実行図 29. HyperFlex Settings
1.5.3.1. HyperFlex Settings
オプション | 説明 |
---|---|
Fast Forward Compile Asynchronous Clears | Fast Forward解析によって非同期クリアシグナルを備えたレジスターをどのように考慮するかを指定します。オプションは次のとおりです。
|
Fast Forward Compile Cut All Clock Transfers | Fast Forward Compilation解析でのすべてのクロック転送をカットします。 |
Fast Forward Compile Fully Registered DSP Blocks | パフォーマンスを制限するDSPブロックをFast Forward解析でどのように考慮するかを指定します。このオプションをイネーブルすると、すべてのDSPブロックが完全にレジスター化されているかのように結果を生成します。 |
Fast Forward Compile Fully Registered RAM Blocks | パフォーマンスを制限するRAMブロックをFast Forward解析でどのように考慮するかを指定します。このオプションをイネーブルすると、完全にレジスター化されたブロックとしてブロックを解析します。 |
Fast Forward Compile Maximum Additional Pipeline Stages | Fast Forwardコンパイルで検討するパイプライン・ステージの最大数を指定します。 |
Fast Forward Compile User Preserve Directives | ユーザー保持ディレクティブからの制約をFast-Forwardコンパイルでどのように考慮するかを指定します。 |
1.5.4. ステップ4 : Hyper-Retiming結果を確認する
1.5.4.1. Clock Fmax Summaryレポート
1.5.4.2. Fast Forward Detailsレポート
Reportフィールド | 説明 |
---|---|
Step | 事前に最適化されたBase Performance fMAX、推奨されるFast Forward最適化ステップ、およびさらなる最適化を妨げるFast Forward Limitクリティカル・パスを表示します。 |
Fast Forward Optimizations Analyzed | 最適化の各ステップの実装に必要な最適化を要約します。 |
Estimated Fmax | すべてのFast Forward最適化ステップを実装した場合の潜在的なfMAX パフォーマンスを指定します。 |
Optimizations Analyzed For Fast Forward Step | 選択したStepのデザイン推奨事項を階層的に一覧表示します。テキスト部分をクリックしてレポートを展開すると、クロックドメイン、影響を受けるモジュール、変更が必要なバスおよびビットが表示されます。 |
Optimizations Analyzed (Cumulative) | 選択したStepに到達するために必要なすべてのデザイン変更の累積一覧表。 |
Critical Chain at Fast Forward Limit | パスによるHyper-Retimingの制限が、Fast Forwardのすべてのステップを適用した後も続く場合、そのパスに関する情報を表示します。クリティカル・チェーンは、さらなるHyper-Retimingを制限するパスです。Fast Forward Limitステップをクリックすると、このフィールドが表示されます。 |
Recommendations for Critical Chain | リタイミングの制限に関連するレジスター・タイミング・パスを一覧表示します。Locate Critical Chain in Technology Map Viewerで任意のパスを右クリックします。 |
任意のパスを右クリックして、クリティカル・チェーンの位置をFast Forward Viewerで確認してください。Fast Forward Viewerに完成デザインの予測図が表示されるのは、すべてのFast Forwardの推奨事項の実装後です。
1.5.5. ステップ5 : Fast Forwardの推奨事項を実装する
- 長いフィードバック・ループやステートマシンなどのコントロール・ロジックの制限を除去する。
- ロジックを再構築し、同等の機能を持つフィードフォワード・パスまたはプリコンピュート・パスを使用する。長い組み合わせフィードバック・パスは使用しなでください。
- チェーン内の「ロングパス」の遅延を減らす。標準のタイミング・クロージャー手法を使用して遅延を低減します。過度な組み合わせロジック、準最適配置、配線輻輳は、パスの遅延の原因になります。
- さらに多くのパイプライン・ステージをチェーン内の「ロングパス」に挿入する。ロングパスで遅延が最も多く発生するのは、クリティカル・チェーンのレジスター間です。
- 遅延を増やす (または、パイプライン・ステージをチェーンの「ショートパス」に追加する)。
- パフォーマンスの検討とRTLのコード変更の実装をパフォーマンス目標に達するまで行う。
1.5.5.1. リタイミングの制限と対処方法
図 35 の赤い線は、同じクリティカル・チェーンを表します。タイミング制約により、レジスターAの前方へのリタイミングを防ぎます。タイミング制約により、レジスターBの後方へのリタイミングも防止されます。ループが発生するのは、レジスターAとレジスターBが同じレジスターである場合です。
クリティカル・チェーンに関するFast Forwardの推奨事項は次のとおりです。
- チェーン内の「ロングパス」の遅延を低減します。標準のタイミング・クロージャー手法を使用して遅延を低減してください。過度な組み合わせロジック、準最適配置、配線輻輳は、パスの遅延の原因となります。
- さらに多くのパイプライン・ステージをチェーン内の「ロングパス」に挿入します。ロングパスは、レジスター間の遅延が最も大きいクリティカル・チェーンの部分です。
- 遅延を増やします (または、パイプライン・ステージをチェーンの「ショートパス」に追加します)。
クリティカル・チェーン内の特定のレジスターによってパフォーマンスが制限されるのには、他にも多くの理由があります。Compilerでは、次のタイプの理由を分類します。この理由によってリタイミングによるさらなる最適化が制限されます。
- レジスターの不足
- ループ
- ショートパス/ロングパス
- パス制限
特定のクリティカル・チェーンがデザインのパフォーマンスを制限する理由を理解すれば、RTLを変更してボトルネックを解消し、パフォーマンスを向上させることができます。
デザイン条件 | Hyper-Registerのサポート |
---|---|
保持できない初期条件 | Hyper-Registerでは初期条件をサポートします。ただし、一部のリタイミング動作を実行しながら、すべてのレジスターの初期条件ステージを保持する (つまりHyper-Registerをマージして複製する) ことはできません。こうした条件がデザインで発生した場合、Fitterでは、レジスターのリタイミングは行いません。このリタイミング制限により、このレジスターのリタイミングがデザイン機能に影響を与えないことが保証されます。 |
レジスターに非同期クリアがある | Hyper-Registerでサポートするのは、データおよびクロック入力のみです。Hyper-Registerには、非同期クリア、プリセット、イネーブルなどのコントロール信号はありません。Fitterでは、非同期クリアを備えたレジスターをHyper-Registerにリタイムすることはできません。非同期クリアは、ステートマシンやコントロール・ロジックなど、必要な場合にのみ使用してください。多くの場合、非同期クリアは、データパスの大部分から回避または削除することができます。 |
レジスターで非同期信号を駆動する | このデザイン条件は、非同期リセットを使用するデザインに固有のものです。非同期クリアでリセットされるレジスターの数の削減に重点を置いてください。 |
レジスターにdon’t touchまたはpreserve属性がある | Compilerでは、このような属性を持つレジスターのリタイミングは行いません。preserve 属性を使用して高ファンアウト信号のレジスター複製を管理する場合は、preserve を削除してみてください。Compilerでは、高ファンアウト・レジスターのリタイミングをそれぞれのデスティネーションへの各配線パスに沿って行うことができます。もしくは、dont_merge 属性を使用します。Compilerでは、ALM、DDIO、シングルポートRAM、およびDSPブロックにレジスターをリタイムします。 |
レジスターがクロックソースである | このデザイン条件は一般的ではありません。特にデザインのパフォーマンス・クリティカルな部分については、まれです。このリタイミング制約によって必要なパフォーマンスの達成が妨げられている場合、PLLがレジスターではなくクロックを生成できるかどうかを検討してください。 |
レジスターがパーティション境界である | この条件は、デザイン・パーティションを使用するデザインに固有です。このリタイミング制約によって必要なパフォーマンスの達成が妨げられている場合、レジスターをHyper-Retimingのパーティション境界内に追加してください。 |
レジスターがECO動作によって変更されたブロックタイプである | この制約は一般的ではありません。この制約を回避するには、ECOを実行するのではなく、デザインソースの機能的な変更を行って、リコンパイルしてください。 |
レジスターの場所が不明なブロックである | この制約は一般的ではありません。この条件を回避するには、レジスターを指定ブロックタイプに隣接して追加すると効果がある場合が多いです。 |
レジスターがRTL内でラッチとして記述されている | Hyper-Registerではラッチの実装はできません。Compilerでラッチを推論するのは、不完全な割り当てなどのRTLコーディングの問題があるためです。ラッチを実装しない場合は、RTLを変更してください。 |
レジスターの場所がI/O境界である | すべてのデザインにはI/Oが含まれていますが、パイプライン・ステージをHyper-RetimingのI/O境界の隣に追加します。 |
組み合わせノードの供給が特別なソースからされる | この条件は一般的ではありません。特にパフォーマンス重視のデザイン部分では珍しいことです。 |
レジスターがローカル配線クロックによって駆動される | 専用クロック・ネットワークだけがHyper-Registerをクロックします。配線ファブリックを使用してクロック信号を分散することは一般的ではありません。特にデザインのパフォーマンス・クリティカルな部分では珍しいことです。代わりに小さいクロック領域を実装することを検討してください。 |
レジスターがタイミング例外のエンドポイントである | Compilerでは、.sdc のソースまたはデスティネーションであるレジスターのリタイミングは行いません。 |
レジスターの入力または出力が反転している | この条件は一般的ではありません。 |
レジスターがシンクロナイザー・チェーンの一部である | Fitterでは、シンクロナイザー・チェーンを最適化して、平均故障間隔 (MTBF) を長くします。また、Compiler ではシンクロナイザー・チェーンの一部として検出またはマークされたレジスターはリタイムしません。パイプライン・ステージの追加をシンクロナイザー・チェーンに隣接するクロックドメイン境界に対して行うと、リタイミングが柔軟になります。または、特定のシンクロナイザー・チェーンのSynchronization Register Chain Lengthの検出数 (デフォルトは3) を減らすことができます。場合によっては、シンクロナイザー・チェーンは不要なので、推論しません。 |
レジスターに期間要件が複数あり、その要件は、レジスター (クロスクロック境界) で開始または終了するパスに対するものである | この条件の発生場所はクロスクロック境界です。クロスクロック境界では、あるレジスターによるクロック上のデータのラッチが、1つの周波数で行われます。また、そのレジスターによって、別の周波数で実行されているレジスターをファンアウトします。Compilerでは、クロスクロック境界でのレジスターのリタイミングは行いません。パイプライン・ステージをクロックドメイン境界の一方または他方の側に追加して、リタイミングに柔軟性を持たせることを検討してください。 |
1.6. フルコンパイルのフロー
-
フルコンパイルを実行する前に、次のプロジェクト設定のうちのいずれかを指定します。
- ターゲットFPGAデバイスまたは開発キットを指定するには、Assignments > Deviceをクリックします。
- ターゲットFPGAデバイスのデバイスとピンオプションを指定するには、Assignments > Device > Device and Pin Optionsをクリックします。
- コンパイル処理時間およびネットリスト保持に影響するオプションを指定するには、Assignments > Settings > Compilation Process Settingsの順にクリックします。
- Compilerのハイレベルの最適化方法を指定するには、Assignments > Settings > Compiler Settingsをクリックします。 Balanced方法を指定するか、Performance、Area、Routability、Power、またはCompile Timeを最適化します。Compilerでは、ユーザーが指定した最適化目標をターゲットにします。最適化モード でこのオプションについて詳しく説明します。
- 合成アルゴリズムおよびその他のAdvanced Settingsを合成およびフィッティングに対して指定するには、Assignments > Settings > Compiler Settingsをクリックします。Enable Intermediate Fitter Snapshotsをオンにすると、計画、配置、配線、およびリタイミングのスナップショットがデフォルトでフルコンパイル中に保持されます。
- デザインの適切な動作に必要なタイミング条件を指定するには、Tools > Timing Analyzerをクリックします。
-
フルコンパイルを実行するには、 Processing > Start Compilationをクリックします。
注:
- 処理時間を節約するために、Compilerでは、計画、配置、配線、およびリタイミングのスナップショットをデフォルトでフルコンパイル中に保持します。これは、Enable Intermediate Fitter Snapshots (Assignments > Settings > Compiler Settings) をオンにした場合です。
- Early Placeは、デフォルトでは、フルコンパイル中は実行されません。Early Placeをフルコンパイル中にイネーブルするには、Assignments > Settings > Compiler Settings > Advanced Settings (Fitter)をクリックして、Run Early Place during compilationオプションを変更します。
1.7. コンパイル結果のエクスポート
.qdb のエクスポートは、プロジェクト全体、またはプロジェクトで定義したデザイン・パーティションに対して行います。プロジェクト全体のデータベースを移行する場合は、コンパイル・データベースをversion-compatible形式でエクスポートして、新しいバージョンのソフトウェアにインポートするための互換性を持たせます。.qdb ファイルの内容の直接の読み出しは、エクスポート後にはできませんが、データベース・ファイルの属性は、Quartus Database File Viewerで表示できます。
エクスポートするコンパイル結果の対象 | 方法 | 説明 |
---|---|---|
デザイン全体 | Project > Export Designをクリックします。 | プロジェクト全体のコンパイル結果が、バージョン互換のQuartusデータベース・ファイル (.qdb) に保存されます。このファイルは、別のプロジェクトにインポートするか、 インテル® Quartus® Prime開発ソフトウェアの新しいバージョンに移行させます。合成または最終コンパイルのスナップショットの結果をエクスポートします。 |
デザイン・パーティション | Project > Export Design Partitionをクリックします。 | デザイン・パーティションのコンパイル結果は、Partition Database File (.qdb) に保存されます。このファイルを別のプロジェクトにインポートするには、 インテル® Quartus® Prime開発ソフトウェアの同じバージョンを使用します。合成または最終コンパイルのスナップショットの結果をエクスポートします。 |
1.7.1. バージョン互換のコンパイル・データベースのエクスポート
- インテル® Quartus® Prime開発ソフトウェアで、エクスポートするプロジェクトを開きます。
-
合成または最終コンパイル結果を生成するには、次のコマンドのいずれかを実行します。
- Processing > Start > Start Analysis & Synthesisをクリックして、合成コンパイル結果を生成します。
- Processing > Start Compilationをクリックして、最終コンパイル結果を生成します。
-
Project > Export Designをクリックします。 synthesizedまたはfinal
Snapshotを選択します。
図 36. Export Designダイアログボックス
- Quartus Database Fileの名前を指定して、エクスポートした結果を含め、OKをクリックします。
- エクスポートしたデザインの設定および制約ファイルを含めるには、.qsf および .sdc ファイルをインポート・プロジェクト・ディレクトリーにコピーします。
1.7.2. バージョン互換のコンパイル・データベースのエクスポート
- デザイン全体のバージョン互換のコンパイル・データベースをエクスポートします。詳しくはバージョン互換のコンパイル・データベースのエクスポート で説明します。
- 新しいバージョンの インテル® Quartus® Prime開発ソフトウェアで元のプロジェクトを開きます。別のソフトウェア・バージョンで作成されたプロジェクトを開くかどうかを確認するメッセージが表示された場合は、Yesをクリックします。
-
Project > Import Designをクリックし、Quartus Database
Fileを指定します。以前の結果を削除するには、Overwrite existing project's databasesをオンにします。
図 37. Import Designダイアログボックス
- OK をクリックします。
- インポートしたデザインをコンパイルする場合は、ステージ .qdb の保持の後に発生したCompilerステージのみを実行します。フルコンパイルは実行しません。例えば、インポートするバージョン互換のデータベースに合成スナップショットが含まれている場合は、Fitterを使用してコンパイルを開始します(Processing > Start > Start Fitter)。インポートするバージョン互換のデータベースに最終スナップショットが含まれている場合は、Timing Analysis (Signoff) を使用してコンパイルを開始します (Processing > Start > Start Timing Analysis (Signoff))。
1.7.3. デザイン・パーティションの作成
- インテル® Quartus® Prime開発ソフトウェアで、パーティション作成するプロジェクトを開きます。
-
合成または最終コンパイル結果を生成するには、次のコマンドのいずれかを実行します。
- Processing > Start > Start Analysis & Synthesisをクリックして、合成コンパイル結果を生成します。
- Processing > Start Compilationをクリックして、最終コンパイル結果を生成します。
-
Project Navigatorで、Hierarchyタブのインスタンスを右クリックし、Design Partition > Set as Design Partitionをクリックします。
図 39. プロジェクト階層からデザイン・パーティションを作成する
-
プロジェクト内のすべてのデザイン・パーティションを表示および編集するには、Assignments > Design Partitions Window をクリックします。
図 40. Design Partitionsウィンドウ
-
デザイン・パーティションのプロパティーをDesign Partitionsウィンドウで指定します。次の設定が使用可能です。
表 13. デザイン・パーティションの設定 オプション 説明 Partition Name パーティション名を指定します。各パーティション名は一意で、その構成要素は英数字のみにしてください。 インテル® Quartus® Prime開発ソフトウェアでは、プロジェクト・リビジョンごとにトップレベル (|) 「root_partition」 を自動作成します。 Hierarchy Path エンティティー・インスタンスの階層パスを指定し、パーティションに割り当てます。この値はCreate New Partitionダイアログボックスで指定します。ルート・パーティション階層パスは | です。 Type ダブルクリックして、次のパーティションの種類のいずれかを指定します。これにより、Compilerのパーティションの処理および実装方法を制御します。 - Default - 標準パーティションを識別します。Compilerでは、パーティションを処理するために、関連デザイン・ソース・ファイルを使用します。
- Reconfigurable - リコンフィグレーション可能なパーティションをパーシャル・リコンフィグレーション・フローで識別します。ReⅩconfigurableタイプを指定すると、合成結果を保持しながら、パーティションの再調整がPRフロー内で可能になります。
- Periphery Reuse Core - ブロックベースのデザインフロー内のパーティションを識別します。このパーティションは、コンシューマーによるデバイス・ペリフェラルを再利用したコア開発のために予約されたものです。
Preservation Level 次のいずれかの保持レベルをパーティションに対して指定します。 - Not Set - 保持レベルは指定しません。パーティションのコンパイルは、ソースファイルから行われます。
- synthesized - パーティションのコンパイルには、合成されたスナップショットを使用します。
- final - パーティションのコンパイルには、最終スナップショットを使用します。
Empty 空のパーティションを指定します。Compilerでは、このパーティションをスキップします。この設定は、同じパーティションに対するPeriphery Reuse CoreおよびPartition Database File設定とは互換性がありません。Preservation LevelはNot Setにしてください。空のパーティションは子パーティションを持つことはできません。 Partition Database File Partition Database File (.qdb) を指定します。Compilerでは、これをパーティションのコンパイル時に使用します。.qdb のエクスポート先は、再利用するコンパイルのステージ (合成または最終) になります。.qdb をパーティションに割り当てて、その結果を別のコンテキストで再利用します。 Entity Re-binding - PRフロー - 各実装リビジョンでデフォルトのペルソナに置き換わるエンティティーを指定します。
- ルート・パーティションの再利用フロー - コンシューマー・プロジェクトで予約されたコアロジックに置き換わるエンティティーを指定します。
Color パーティションの色分けをChip PlannerおよびDesign Partition Plannerの画面で指定します。 Post Synthesis Export File Analysis & Synthesisを実行するたびに、パーティションの合成コンパイル後の結果を自動エクスポートします。エクスポート先は、指定した .qdb です。デザイン・パーティションの自動エクスポートができるのは、そのパーティションに保持された親パーティション (root_partitionを含む) がない場合です。 Post Final Export File Fitterの最終ステージを実行するたびに、パーティションの最終コンパイル後の結果を自動エクスポートします。エクスポート先は、指定した .qdb です。デザイン・パーティションの自動エクスポートができるのは、そのパーティションに保持された親パーティション (root_partitionを含む) がない場合です。
1.7.4. デザイン・パーティションのエクスポート
デザイン・パーティションが含まれるデザインをコンパイルすると、Compilerでは、各パーティションの結果の合成または最終スナップショットを保持します。個々のデザイン・パーティションの合成または最終コンパイル結果をエクスポートするには、Export Design Partitionダイアログボックスを使用します。
パーティション内にエンティティーにバインドされた .sdcファイルが含まれている場合、その制約を .qdb に含めることができます。また、1つ以上のパーティションのエクスポートの自動化は、Design Partitions Windowですることができます。
デザイン・パーティションの手動エクスポート
次の手順に従って、デザイン・パーティションの手動エクスポートをExport Design Partitionダイアログボックスで行います。
- プロジェクトを開き、デザイン・パーティションを1つ以上作成します。 デザイン・パーティションの作成 でこのプロセスについて詳しく説明しています。
- 合成 (Processing > Start > Start Analysis & Synthesis) または、フルコンパイル (Processing > Start Compilation) を実行します。エクスポートするコンパイル結果に応じてどちらかを選びます。
-
Project > Export Design Partitionをクリックし、Export Design Partitionダイアログボックスで1つ以上のオプションを指定します。
図 41. Export Design Partitionダイアログボックス
- エクスポートするPartition nameおよびコンパイルSnapshotを選択します。
- エンティティーにバインドされた.sdc ファイルをエクスポートした .qdb に含めるには、Include entity-bound SDC files for the selected partitionをオンにします。
- OKをクリックします。デザイン・パーティションのコンパイル結果が、指定したファイルにエクスポートされます。
デザイン・パーティションの自動エクスポート
次の手順に従って、1つ以上のデザイン・パーティションの自動エクスポート各コンパイル後に行います。
- デザイン・パーティションを1つ以上含むプロジェクトを開きます。 デザイン・パーティションの作成 でこのプロセスについて詳しく説明しています。
- Design Partitions Windowを開くには、Assignments > Design Partitions Windowをクリックします。
- 合成の実行後に毎回、パーティションに合成結果を含めて自動エクスポートするには、.qdb エクスポート・パスとファイル名を、そのパーティションのPost Synthesis Export Fileオプションに指定します。パスなしでファイル名のみを指定した場合は、ファイルのエクスポート先は、コンパイル後の output_files ディレクトリーになります。
- Fitterの実行時に毎回、パーティションに合成結果を含めて自動エクスポートするには、.qdb エクスポート・パスとファイル名を、そのパーティションのPost Synthesis Export Fileオプションに指定します。パスなしでファイル名のみを指定した場合は、ファイルのエクスポート先は、コンパイル後の output_files ディレクトリーになります。
.qsf Equivalent Assignment:
set_instance_assignment -name EXPORT_PARTITION_SNAPSHOT_<FINAL|SYNTHESIZED> \ <hpath> -to <file_name>.qdb
1.7.5. デザイン・パーティションの再利用
エクスポートしたデザイン・パーティションを別のプロジェクトで再利用するには、エクスポートしたパーティション .qdb を割り当てます。割り当て先は、適切なコンフィグレーションが行われたターゲット・プロジェクト内のデザイン・パーティションです。これには、Design Partition Windowを使用します。
- デザイン・パーティションのエクスポートには、適切なスナップショットを含めます。これについては、デザイン・パーティションのエクスポート で詳しく説明しています。
- エクスポートしたパーティションを再利用する インテル® Quartus® Primeプロジェクトを作成するか開きます。
- Processing > Start > Start Analysis & Elaborationをクリックします。
- Assignments > Design Partitions Windowをクリックし、適切なサイズのデザイン・パーティションを作成して、エクスポートした .qdb のロジックとコンパイル結果を含めます。
-
Partition Database Fileオプションをクリックし、エクスポートした .qdb ファイルを選択します。
図 43. Design Partitions WindowでのPartition Database Fileの設定
- Design Partitions Windowで、デザイン・パーティションの他のプロパティーを指定します。Compilerでは、パーティションに割り当てられた .qdb をソースとして使用します。
1.7.6. Quartusデータベース・ファイル情報の表示
インテル® Quartus® Prime開発ソフトウェアでは、Quartus Database File (.qdb) をエクスポートするときに、元のプロジェクトに関するメタデータを自動的に格納します。 インテル® Quartus® Prime開発ソフトウェアでは、Partition Database File (.qdb) をプロジェクトからエクスポートすると、元のプロジェクトとリソース使用率に関するメタデータを自動的に格納します。これでQuartus Database File Viewerを使用して、どの .qdb ファイルでもその属性の表示ができるようになります。
- インテル® Quartus® Prime開発ソフトウェアでFile > Openをクリックし、 Files of TypeにDesign Filesを選択してから .qdb ファイルを選択します。
-
Openをクリックします。Quartus Database File Viewerには、 .qdb のプロジェクトおよびリソース使用率の属性が表示されます。
または、次の同等のコマンドラインを実行します。
quartus_cdb --extract_metadata --file <archive_name.qdb> \ --type quartus --dir <extraction_directory> \ [--overwrite]
1.7.6.1. QDBファイルの属性タイプ
Quartus Database Viewerでは、.qdb ファイルの次の属性を表示することができます。
QDBの属性タイプ | 属性 | 例 |
プロジェクト情報 |
内容 | Partition |
日付 | Thu Jan 23 10:56:23 2018 | |
デバイス | 10AX016C3U19E2LG | |
エンティティー (パーティションの場合) | Counter | |
ファミリー | Arria 10 | |
パーティション名 | root_partition | |
リビジョン名 | Top | |
リビジョンタイプ | PR_BASE | |
スナップショット | synthesized | |
バージョン | 18.1.0 Pro Edition | |
バージョン互換 | Yes | |
リソース使用率 (パーティションQDBの場合のみエクスポート) |
合成スナップショットのパーティションの場合、Synthesis Resource Usage Summaryレポートからのデータを一覧表示します。 |
Average fan-out.16 Dedicated logic registers:14 Estimate of Logic utilization:1 I/O pins:35 Maximum fan-out:2 Maximum fan-out node:counter[23] Total DSP Blocks:0 Maximum fan-out:6 ... |
最終スナップショットのパーティションの場合、Fitter Partition Statisticsレポートからデータが一覧表示されます。 |
Average fan-out:.16 Combinational ALUTs: 16 I/O Registers M20Ks ... |
1.7.7. コンパイル結果の消去
- Project > Clean Projectをクリックします。
- All revisionsを選択すると、データベースの消去が、現在のプロジェクトのすべてのリビジョンに対して行われます。Revision nameを指定した場合は、消去されるのは、指定したリビジョンのデータベースのみです。
- OKをクリックします。メッセージが表示されて、データベースが空であることが分かります。
1.8. 合成言語サポート
1.8.1. VerilogおよびSystemVerilog合成のサポート
- Verilog-1995 (IEEE Standard 1364-1995)
- Verilog-2001 (IEEE Standard 1364-2001)
- SystemVerilog-2005 (IEEE Standard 1800-2005)
- SystemVerilog-2009 (IEEE Standard 1800-2009)
次の重要なガイドラインの適用対象は、Verilog HDLおよびSystemVerilogの インテル® Quartus® Prime合成です。
- Compilerでは、拡張子が .v のファイルに対しては、デフォルトでVerilog-2001規格が使用されます。また、拡張子が .sv のファイルに対しては、SystemVerilogが使用されます。
- スクリプトを使用してデザインファイルを追加する場合は、-HDL_VERSION コマンドを使用して、各デザインファイルのHDLバージョンを指定します。
- CompilerのVerilog HDLのサポートでは、Verilog HDL規格に従って大文字と小文字を区別します。
- Compilerでは、コンパイラー・ディレクティブ `define をVerilog HDL規格に従ってサポートしています。
- Compilerでは、Compilerディレクティブ include がサポートされ、絶対パス (「/」または「\」をセパレーターとして含む)、または相対パスを持つファイルを含めます。
- 相対パスを検索する場合、Compilerで行う検索では、まずプロジェクト・ディレクトリーを基準にします。ファイルが見つからない場合は、すべてのユーザー・ライブラリーを基準にします。最後は、現在のファイルのディレクトリー位置を基準にします。
- Intel® Quartus® Primeプロ・エディション合成では、モジュールまたはエンティティーの検索は、他のQuartusソフトウェア・ツールに比べて、合成プロセスのより早い段階で行われます。早期に検索することによって、未定義のエンティティーの構文エラーが発生するのが、他のQuartusソフトウェア・ツールよりも早くなります。
1.8.1.1. Verilog HDL Inputの設定 (設定ダイアログボックス)
設定 |
説明 |
---|---|
Verilog Version |
合成に指示して、Verilog HDL入力デザインファイルの処理を指定規格を使用して行います。サポート言語規格の選択は、Verilog HDLファイルまたはSystemVerilogデザインファイルと一致させてください。 |
Library Mapping File |
オプションで、用意されているLibrary Mapping File (.lmf) を指定して、そのファイルをVerilog HDLファイルの合成に使用することができます。このVerilog HDLファイルに含まれているインテルFPGA以外の機能は、IPコアにマッピングされています。LMFのフルパス名の指定は、File nameボックスで行ってください。 |
Verilog HDL Macro | Verilog HDLマクロは、プリコンパイラー・ディレクティブです。これをVerilog HDLファイルに追加して、定数、フラグ、またはその他の機能の定義をNameおよびSettingで行うことができます。追加したマクロは、Existing Verilog HDL macro settingsリストに表示されます。 |
1.8.1.2. デザイン・ライブラリー
- デザイン・インスタンスをコンパイルする際、Compilerによるエンティティーの検索は、まずインスタンスに関連するライブラリー (ライブラリーを指定しない場合はワーク・ライブラリー) 内で行われます。
- Compilerによってエンティティー定義が見つからない場合、Compilerでは、一意のエンティティー定義の検索をすべてのデザイン・ライブラリー内で行います。
- Compilerによって同じ名前のエンティティーが複数見つかった場合は、Compilerではエラーが生成されます。デザイン内で、同じ名前のエンティティーを複数使用している場合は、エンティティーを個別のライブラリーにコンパイルしてください。
1.8.1.3. Verilog HDLコンフィグレーション
- セル・インスタンスを解決するためのライブラリー検索順序の指定 (ライブラリー・マッピング・ファイルと同様)
- 指定インスタンスのロジック・ライブラリー検索順序の上書きの指定
- 指定セルのすべてのインスタンスのロジック・ライブラリー検索順序の上書きの指定
1.8.1.3.1. 階層デザインのコンフィグレーション
例えば、デザインのサブ階層が8ビット加算器であり、RTL Verilogコードによる加算器の記述が rtllib という名前のロジック・ライブラリー内でされているとします。ゲートレベル・コードによる加算器の記述は、gatelib ロジック・ライブラリーでされます。ゲートレベル・コードを加算器の0 (ゼロ) ビットに使用し、RTLレベルコードを他の7ビットに使用する場合、コンフィグレーションは次のようになります。
加算器の0 (ゼロ) ビットのゲートレベル・コード
config cfg1; design aLib.eight_adder; default liblist rtllib; instance adder.fulladd0 liblist gatelib; endconfig
この8ビット加算器を8回インスタンス化して64ビット加算器を作成する場合は、cfg1 コンフィグレーションを8ビット加算器の最初のインスタンスに対して使用します。これは、他のインスタンスに対しては使用しないでください。この機能を実行するコンフィグレーションは次のとおりです。
8ビット加算器の最初のインスタンスに対する cfg1 コンフィグレーションの使用
config cfg2; design bLib.64_adder; default liblist bLib; instance top.64add0 use work.cfg1:config; endconfig
1.8.1.4. 初期コンストラクトおよびメモリー・システム・タスク
このようなエラーを回避するには、合成不可能なコンストラクト (シミュレーション専用のコンストラクトなど) を translate_off および translate_on 合成ディレクティブ内に囲みます。初期コンストラクトの合成により、合成したデザインのパワーアップ・ステートを、元のHDLコードのパワーアップ・ステートと一致させることがシミュレーションで可能になります。
インテル® Quartus® Prime合成では、$readmemb および $readmemh システムタスクをサポートしてメモリーを初期化します。
Verilog HDLコード : readmembコマンドでのRAMの初期化
reg [7:0] ram[0:15]; initial begin $readmemb("ram.txt", ram); end
テキストファイルを作成してメモリーを初期化する場合は、アドレスを@<location > 形式で新しい行に指定し、次の行に 110101 や abcde などのメモリーワードを指定します。
次の例は、RAMのMemory Initialization File (.mif) の一部を示しています。
テキスト・ファイル・フォーマット : readmembコマンドでのRAMの初期化
@0 00000000 @1 00000001 @2 00000010 … @e 00001110 @f 00001111
1.8.1.5. Verilog HDLのマクロ
Verilog HDLマクロの設定は、コマンドラインで Intel® Quartus® Primeプロ・エディション合成 (quartus_syn) 実行可能ファイル用に行う場合、次の形式を使用します。
quartus_syn <PROJECT_NAME> --set=VERILOG_MACRO=a=2
このコマンドによって、次の新しい行がプロジェクトの .qsf ファイルに追加されます。
set_global_assignment -name VERILOG_MACRO "a=2"
この行をプロジェクトの .qsf に追加しないようにするには、次のオプションを quartus_syn コマンドに追加します。
--write_settings_files=off
1.8.2. VHDL合成のサポート
- VHDL 1987 (IEEE Standard 1076-1987)
- VHDL 1993 (IEEE Standard 1076-1993)
- VHDL 2008 (IEEE Standard 1076-2008)
インテル® Quartus® Prime Compilerでは、VHDL 1993規格をデフォルトで使用します。対象は、拡張子が .vhdl または .vhd のファイルです。
1.8.2.1. VHDL HDL入力設定 (設定ダイアログボックス)
設定 |
説明 |
---|---|
VHDL Version |
VHDL入力デザインファイルの合成時に使用するVHDL規格を指定します。VHDLファイルに対応する言語規格を選択します。 |
Library Mapping File |
オプションで、用意されているLibrary Mapping File (.lmf) を指定して、そのファイルをVHDLファイルの合成に使用します。このVHDLファイルには、IPコアが含まれています。LMFのフルパス名の指定は、File nameボックスで行ってください。 |
1.8.2.2. VHDL規格ライブラリーおよびパッケージ
STDライブラリーは、VHDL言語規格の一部です。STDライブラリーに含まれているパッケージは、standard (すべてのプロジェクトにデフォルトで含まれている) と textio です。旧デザインとの互換性のために、 インテル® Quartus® Prime開発ソフトウェアでは、次のベンダー固有のパッケージおよびライブラリーもサポートしています。
- IEEEライブラリーの std_logic_arith や std_logic_unsigned などの Synopsys* のパッケージ。
- ARITHMETICライブラリーの std_logic_arith などの Mentor Graphics* パッケージ。
- ALTERAライブラリーの altera_primitives_components (GLOBAL や DFFE などのプリミティブの場合) や maxplus2 などのプリミティブ・パッケージ。
- LCELLを含む特定のIPコアに対するALTERA_MFライブラリー内のIPコアパッケージ altera_mf_components、およびlibrary of parameterized modules (LPM) ファンクションのライブラリーに対するLPMライブラリー内の lpm_components。
1.8.2.3. VHDL waitコンストラクト
VHDL wait until コンストラクトの例
architecture dff_arch of ls_dff is begin output: process begin wait until (CLK'event and CLK='1'); Q <= D; Qbar <= not D; end process output; end dff_arch;
1.9. Compilerの最適化手法
1.9.1. 最適化モード
Optimization Mode |
説明 |
---|---|
Balanced (normal flow) |
Compilerでは、合成を最適化して、タイミング制約を考慮したバランスの良い実装ができるようにします。 |
High Performance Effort |
Compilerでは、配置配線中のタイミング最適化作業を増やし、タイミングに関連したPhysical Synthesisの最適化をイネーブルします (レジスターの最適化設定による)。最適化を追加で行うたびに、コンパイル時間が長くなる可能性があります。 |
High Performance with Maximum Placement Effort | Compilerによる最適化をHigh Performance Effortと同様にイネーブルし、配置最適化作業を追加して行います。 |
Superior Performance | Compilerによる最適化をHigh Performance Effortと同様にイネーブルし、Analysis & Synthesis中にさらに追加で最適化作業を行い、デザイン・パフォーマンスを最大化します。これには、ロジック領域の潜在的な増加が伴います。デザイン使用率がすでに非常に高い場合、このオプションを使用すると、フィッティングが困難になる可能性があります。これは、最適化の全体的な品質に悪影響を及ぼす可能性もあります。 |
Superior Performance with Maximum Placement Effort | Compilerによる最適化をHigh Performance Effortと同様にイネーブルし、配置最適化作業を追加で行います。 |
Aggressive Area |
Compilerでは、デザイン実装に必要なデバイス領域を積極的に削減します。このとき、デザイン・パフォーマンスが犠牲になることがあります。 |
High Placement Routability Effort | Compilerでは、作業量を増やしてデザインの配線を行います。このとき、デザイン領域、パフォーマンス、およびコンパイル時間が犠牲になることがあります。Compilerでは、時間をさらに費やして、配線使用率を削減します。これにより、配線性が向上し、ダイナミック消費電力も節約できます。 |
High Packing Routability Effort | Compilerでは、作業量を増やしてデザインの配線を行います。このとき、デザイン領域、パフォーマンス、およびコンパイル時間が犠牲になることがあります。Compilerでは、時間をさらに費やして、レジスターのパッキングを行います。これにより、配線性が向上し、ダイナミック消費電力も節約できます。 |
Optimize Netlist for Routability | Compilerでは、ネットリストの変更を実装して、配線性を向上させます。このとき、パフォーマンスが犠牲になることがあります。 |
High Performance Effort |
Compilerでは、作業量を増やして低消費電力のために合成を最適化します。High Power Effortでは、合成の実行時間が長くなります。 |
Aggressive Power |
低消費電力のために積極的に合成を最適化します。Compilerでは、指定または最大予測トグルレートで信号の配線使用量をさらに削減し、ダイナミック消費電力を追加で節約しますが、パフォーマンスに影響を与える可能性があります。 |
Aggressive Compile Time |
デザイン実装に必要なコンパイル時間を短縮します。この場合、作業量は減り、パフォーマンスの最適化項目は少なくなります。このオプションでは、一部の詳細レポート機能もディスエーブルします。 注:
Aggressive Compile Time をオンにすると、
インテル®
Quartus® Prime Settings File (.qsf) 設定がイネーブルされます。これは、ほかの .qsf 設定によるオーバーライドはされません。
|
1.9.2. レジスターのリタイミングの許可
エンティティーabcに対するレジスター・リタイミングのディスエーブル
set_global_assignment –name ALLOW_REGISTER_RETIMING ON set_instance_assignment –name ALLOW_REGISTER_RETIMING OFF –to “abc|” set_instance_assignment –name ALLOW_REGISTER_RETIMING ON –to “abc|def|”
エンティティーabcのレジスター以外のデザイン全体に対するレジスター・リタイミングのディスエーブル
set_global_assignment –name ALLOW_REGISTER_RETIMING ON set_instance_assignment –name ALLOW_REGISTER_RETIMING OFF –to “abc|” set_instance_assignment –name ALLOW_REGISTER_RETIMING ON –to “abc|def|”
1.9.3. 自動ゲートクロック変換
ASICゲートクロックの例 | FPGAクロックイネーブルの例 |
---|---|
module infer_enable (clk, reset, d, en, q); input d, en, clk, reset; output q; wire gated_clk; reg q; assign gated_clk = clk & en; always@(posedge gated_clk or reset) begin if (!reset) q <= 1’b0; else q <= d ; end end endmodule |
module infer_enable (clk, reset, d, en, q); input d, en, clk, reset; output q; reg q; always@(posedge clk or reset) begin if (!reset) q <= 1’b0; else if (en) q <= d; else q <= q ; end end endmodule |
RTL内のゲートクロックを手動変換せずに、Auto Gated Clock Conversion設定を指定して、デザイン内のゲート・ベース・クロックをクロックイネーブルに自動変換します。この設定は、デザイン内のすべてのゲート・ベース・クロック、または1つ以上の特定のクロック信号にグローバルに適用できます。
設定のスコープ |
説明 |
---|---|
グローバル |
Assignments > Settings > Compiler Settings > Advanced Settings (Synthesis)でAuto Gated Clock
Conversionオプションをイネーブルします。または、プロジェクト .qsf に対してグローバル割り当てを次のようにして追加します。set_global_assignment –name SYNTH_GATED_CLOCK_CONVERSION on |
インスタンス固有 | 1つ以上のインスタンスに対してAuto Gated Clock
Conversionの指定を
Assignment Editor (Assignments > Assignment Editor) で行います。または、インスタンス割り当てをプロジェクト .qsf に対して次のようにして追加します。set_instance_assignment –name SYNTH_GATED_CLOCK_CONVERSION on –to clk_in |
1.9.4. 中間のFitterステージのスナップショットのイネーブル
1.9.5. Fast Preserveオプション
インターフェイスロジックは、デザインの残りの部分と相互接続するパーティション境界のロジックです。
1.9.6. フラクタル合成の最適化
フラクタル合成は、演算集約型デザインに最適な方法でFPGAリソースを使用する複数の合成最適化の集合です。この合成最適化を構成しているのは、乗算器の正則化とリタイミング、および連続算術パッキングです。最適化の対象となるデザインでは、低精度の算術演算 (加算や乗算など) を多数備えています。フラクタル合成のイネーブルは、グローバルに、または特定の乗算器に対して行います。詳しくは、フラクタル合成のイネーブルまたはディスエーブル で説明します。
プロジェクト全体のフラクタル合成に関する考慮事項
- インテルFPGAデバイスでは、算術演算に最適なハードDSPブロックを数千個格納しています。デザインの算術関数の合計数が少ない場合は、フラクタル合成をイネーブルする必要はありません。このような場合、すべての算術関数はデフォルトでDSPに直接マップされます。グローバルフラクタル合成をイネーブルするのは、DSPブロックが十分ないために、実装できない算術コンポーネントがある場合のみです。フラクタル合成のイネーブルは、CompilerによるDSPへのマッピングを望まないモジュールに対してのみ行います。
- 現在のバージョンの Intel® Quartus® Primeプロ・エディション開発ソフトウェアの場合、フラクタル合成の最適化のターゲットは、低精度の乗算です。高精度 (各オペランドの幅が11ビットを超える) 乗算器の実装には、DSPブロックを使用します。
- フラクタル合成をプロジェクト全体でイネーブルすると、次のような情報メッセージ番号20193が、コンパイル中に生成されることがあります
Applied dense packing to "<entity>". Area: 2 LABs. Logic density: 0.775.
この情報によって分かるのは、Compilerでは、計算ロジックをパッキングして少数のLABにしようとしていることです。デザインの使用率がすでに高い場合、Compilerでは、このステージを省略できます。
- メッセージによるレポートで、Areaが100 LABを超えていないことを確認してください。もし100 LABを超えている場合は、フラクタル合成ブロックをサブブロックに分割し、フラクタル合成最適化をサブブロックに個別に割り当てます。
- メッセージによるレポートで、Logic密度が0.75より大きいことを確認してください。もし0.75未満の場合は、このエンティティーのFractal Synthesisをディスエーブルします。これは、標準的な合成では、より良好な密度が達成できるためです。
Area (LAB) | |||
---|---|---|---|
デバイス | ドット積 | フラクタル合成がONの場合 | フラクタル合成がOFFの場合 |
インテル® Arria® 10および インテル® Cyclone® 10 GX | 16 4x4smの合計 | 12 | 19 |
16 5x5smの合計 | 19 | 32 | |
16 6x6smの合計 | 25 | 36 | |
16 7x7smの合計 | 34 | 44 | |
16 8x8smの合計 | 45 | 60 | |
インテル® Stratix® 10および インテル® Agilex™ デバイス | 16 4x4smの合計 | 15 | 22 |
16 5x5smの合計 | 21 | 39 | |
16 6x6smの合計 | 29 | 47 | |
16 7x7smの合計 | 39 | 55 | |
16 8x8smの合計 | 55 | 71 |
乗算器の正則化とリタイミング
乗算器の正則化とリタイミングでは、高度に最適化されたソフト乗算器の実装を推論します。Compilerでは、必要に応じて、後方リタイミングを2つ以上のパイプライン・ステージに適用します。フラクタル合成をイネーブルすると、Compilerでは、乗算器の正規化とリタイミングを、符号ありおよび符号なし乗算器に対して適用します。
- 乗算器の正規化では、ロジックリソースのみを使用し、DSPブロックは使用しません。
- 乗算器の正規化とリタイミングは、FRACTAL_SYNTHESIS QSF 割り当てが設定されているモジュールの符号あり乗算器と符号なし乗算器の両方に適用されます。
乗算器の正則化の例
次のシンプルな符号なしドット積のデザイン例には、5ビットオペランドの乗算演算子が含まれています。この短い乗数は、乗算器の正則化に最適な候補です。
(* altera_attribute = "-name FRACTAL_SYNTHESIS ON" *) module dot_product( input clk, input [4:0] a, b, c, d, e, f, g, h, output reg [11:0] out ); reg [9:0] ab, cd, ef, gh; reg [10:0] ab_cd, ef_gh; always @(posedge clk) begin ab <= a * b; cd <= c * d; ef <= e * f; gh <= g * h; ab_cd <= ab + cd; ef_gh <= ef + gh; out <= ab_cd + ef_gh; end endmodule module top( input clk, input [4:0] a1, b1, c1, d1, e1, f1, g1, h1, input [4:0] a2, b2, c2, d2, e2, f2, g2, h2, output [11:0] out1, out2 ); dot_product core1(.clk(clk), .a(a1), .b(b1), .c(c1), .d(d1), .e(e1), .f(f1), .g(g1), .h(h1), .out(out1)); dot_product core2(.clk(clk), .a(a2), .b(b2), .c(c2), .d(d2), .e(e2), .f(f2), .g(g2), .h(h2), .out(out2)); endmodule
インテル® Quartus® Prime合成では、次のメッセージをコンソールに出力します。

Chip Plannerでは、このデザインに符号なしドット積コアが2つあることが分かります。この2つのコアは、個別に最適化され、配置されます。LABリソースは、次の図に示すように、ほぼ100%最適化されます。

符号付きドット積は、ディープラーニング・アプリケーションでは一般的です。次で示しているのは、符号付きドット積の例です。
(* altera_attribute = "-name FRACTAL_SYNTHESIS ON" *) module dot_product( input clk, input [4:0] a, b, c, d, e, f, g, h, output reg [11:0] out ); reg [9:0] ab, cd, ef, gh; reg [10:0] ab_cd, ef_gh; always @(posedge clk) begin ab <= a * b; cd <= c * d; ef <= e * f; gh <= g * h; ab_cd <= ab + cd; ef_gh <= ef + gh; out <= ab_cd + ef_gh; end endmodule module top( input clk, input [4:0] a1, b1, c1, d1, e1, f1, g1, h1, input [4:0] a2, b2, c2, d2, e2, f2, g2, h2, output [11:0] out1, out2 ); dot_product core1(.clk(clk), .a(a1), .b(b1), .c(c1), .d(d1), .e(e1), .f(f1), .g(g1), .h(h1), .out(out1)); dot_product core2(.clk(clk), .a(a2), .b(b2), .c(c2), .d(d2), .e(e2), .f(f2), .g(g2), .h(h2), .out(out2)); endmodule
インテル® Quartus® Prime合成では、次のメッセージをコンソールに出力します。

Chip Plannerでは、このデザインに符号ありドット積コアが2つあることが分かります。

連続算術パッキング
連続算術パッキングでは、算術ゲートを最適なサイズのロジックブロックに再合成して、インテルFPGA LABにフィットさせます。この最適化により、LABリソースを最大100%、算術ブロックに対して使用できるようになります。
フラクタル合成をイネーブルすると、Compilerでは、この最適化をすべてのキャリーチェーンおよび2入力ロジックゲートに適用します。この最適化では、加算器ツリー、乗算器、およびその他の算術関連ロジックのパッキングができます。
連続算術パッキングは、乗算器の正則化とは無関係に機能します。したがって、使用している乗算器が正則化されていない場合 (独自の乗算器の作成など)、連続算術パッキングは引き続き機能します。
1.9.6.1. フラクタル合成のイネーブルまたはディスエーブル
インテル® Stratix® 10および インテル® Agilex™ デバイスの場合、フラクタル合成の最適化が自動的に実行される対象は、小さな乗算器 (Verilog HDLまたはVHDLのオペランドのビット幅が7以下であるA*Bステートメント) です。このデバイスの小さな乗算器に対して自動フラクタル合成をディスエーブルするには、次のいずれかの方法を使用します。
- RTLでのDSP multstyleの設定は、「Multstyle Verilog HDL Synthesis Attribute」の説明にあるとおりに行います。例 :
(* multstyle = "dsp" *) module foo(...); module foo(..) /* synthesis multstyle = "dsp" */;
-
.qsf ファイルでは、次のようにして割り当てとして追加します。
set_instance_assignment -name DSP_BLOCK_BALANCING_IMPLEMENTATION \ DSP_BLOCKS -to r
また、 インテル® Stratix® 10、 インテル® Agilex™ 、 インテル® Arria® 10および インテル® Cyclone® 10 GXデバイスでは、フラクタル合成をグローバルに、または特定の乗算器に対してイネーブルします。これには、Fractal Synthesis GUIオプションまたは対応する FRACTAL_SYNTHESIS .qsf 割り当てを使用します。
- RTLでは、次のように altera_attribute を使用します
(* altera_attribute = "-name FRACTAL_SYNTHESIS ON" *)
-
.qsf ファイルでは、次のようにして割り当てとして追加します。
set_global_assignment -name FRACTAL_SYNTHESIS ON -entity <module name>
ユーザー・インターフェイスで、次の手順を実行します。
- Assignments > Assignment Editorをクリックします。
-
Fractal
SynthesisをAssignment
Nameに対して、Onを
Valueに対して、算術集約型エンティティー名をEntityに対して、インスタンス名をToカラムに対して選択します。ワイルドカード (*) をToに対して入力して、エンティティーのすべてのインスタンスを割り当てます。図 55. Assignment EditorのFractal Synthesis Assignment
1.10. Synthesis Settingsのリファレンス
1.10.1. Advanced Synthesis Settings
オプション |
説明 |
---|---|
Allow Any RAM Size for Recognition |
CompilerによってRAMの推論ができるようにします。RAMのサイズは任意で、RAMが現在の最小要件を満たしていない場合でも可能です。 |
Allow Any RAM Size for Recognition |
CompilerによってROMの推論ができるようにします。ROMのサイズは任意で、ROMが現在の最小サイズ要件を満たしていない場合でも可能です。 |
Allow Any RAM Size for Recognition |
Compilerによってシフトレジスターの推論ができるようにします。シフトレジスターのサイズは任意で、シフトレジスターが現在の最小サイズ要件を満たしていない場合でも可能です。 |
Allow Register Duplication |
Compilerでレジスターを複製して、デザイン・パフォーマンスを向上させるかどうかを制御します。イネーブルすると、Compilerによって最適化が実行され、レジスターの2つ目のコピーを作成し、ファンアウトの一部をこの新しいノードに移動させます。この手法により、配線性が向上し、多くのファンアウトを備えたネットを配線するために必要な総配線ワイヤーを削減します。このオプションをディスエーブルすると、レジスターのリタイミングもディスエーブルされます。 注:
インテル®
Arria® 10および
インテル®
Cyclone® 10 GXデバイスでのみ使用可能です。
|
Allow Register Merging |
同一のレジスターをCompilerによって削除 (マージ) するかどうかを制御します。イネーブルした場合、2つのレジスターで同じロジックが生成されると、Compilerでは、一方のレジスターを削除し、削除したレジスターのデスティネーションに対して、もう一方のレジスターをファンアウトすることがあります。このオプションが役立つのは、意図的に使用している重複レジスターがCompilerによって削除されるのを防止する場合です。ディスエーブルすると、リタイミングの最適化もディスエーブルされます。 注:
インテル®
Arria® 10および
インテル®
Cyclone® 10 GXデバイスでのみ使用可能です。
|
Allow Shift Register Merging Across Hierarchies |
Compilerによって、シフトレジスターをデザインの異なる階層から取得し、そのレジスターを同じRAMに配置できるようにします。 |
Allow Synchronous Control Signals |
Compilerによる同期クリアおよび同期ロード信号が、通常モードのロジックセルで使用できるようにします。このオプションをオンにすると、デザインで使用するロジックセルの総数を減らすことができますが、フィッティングに悪影響を及ぼす可能性があります。この悪影響が発生するのは、LAB内のすべてのロジックセルで同期コントロール信号を共有しているためです。 |
オプション |
説明 |
---|---|
Analysis & Synthesis Message Level |
Compilerで表示するAnalysis & Synthesisメッセージのタイプを指定します。 Lowでは、最も重要なAnalysis & Synthesisメッセージだけを表示します。Mediumでは、ほとんどのメッセージが表示されますが、詳細メッセージは非表示になります。 Highでは、すべてのメッセージを表示します。 |
Auto Clock Enable Replacement |
Compilerによって、レジスターに供給するロジックを見つけて、そのロジックをレジスターのクロック・イネーブル入力ポートに移動させることができるようにします。 |
Auto DSP Block Replacement |
Compilerによって、DSPブロックに置き換え可能な積和関数 (乗加算関数) の検索ができるようにします。 |
Auto Gated Clock Conversion |
ゲートクロックを自動変換して、クロック・イネーブル・ピンを使用します。クロック・ゲーティング・ロジックには、AND、OR、MUX、およびNOTゲートを含めることができます。このオプションをオンにすると、メモリー使用量や全体の実行時間が増える場合があります。タイミング解析にはTiming Analyzerを使用してください。また、すべてのベースクロックの定義は、Synopsys Design Constraints (.sdc) 形式で行ってください。 |
オプション |
概要 |
---|---|
Auto Open-Drain Pins |
Compilerによって、強力な低データ入力を持つトライステート・バッファーを同等のオープンドレイン・バッファーに自動変換できるようにします。 |
Auto RAM Replacement |
Compilerによって、altsyncramまたはlpm_ram_dp IPコアで置き換え可能なレジスターおよびロジックを識別できるようにします。このオプションをオンにすると、デザインの機能が変更される場合があります。 |
Auto ROM Replacement |
Compilerによって、altsyncramまたはlpm_rom IPコアで置き換え可能なロジックを識別できるようにします。このオプションをオンにすると、デザインの機能が変更される場合があります。 |
Auto Resource Sharing |
Compilerによるハードウェア・リソースの共有が、HDLソースコード内の類似的かつ相互排他的である多くの動作間でできるようにします。このオプションをイネーブルすると、Compilerでは互換性のある加算、減算、および乗算動作をマージします。演算動作をマージすると、デザインに必要な領域が少なくなる場合があります。リソースの共有により、各共有リソースに余分な多重化と制御ロジックがもたらされるため、デザインの最終fMAX に悪影響を与える可能性があります。 |
Auto Shift Register Placement |
Compilerによって、altshift_taps IPコアで置き換え可能な同じ長さのシフトレジスターのグループを検索できるようにします。シフトレジスターで使用するクロックおよびクロックイネーブル信号は、すべて同じものである必要があります。レジスターには他の二次信号を持たせないでください。レジスターには、少なくともレジスター3つ分離れた等間隔のタップが必要です。 |
Automatic Parallel Synthesis |
自動並列合成をイネーブル/ディスエーブルするオプションです。このオプションを使用して、合成のコンパイル時間を短縮します。このとき、複数のプロセッサーが使用可能な場合は、それを使用します。 |
オプション |
説明 |
---|---|
Block Design Naming |
ブロックデザインの命名スキームを指定します。Compilerでこのオプションを無視するのは、このオプションをデザイン・エンティティー以外に割り当てた場合です。 |
Clock MUX Protection |
クロック・ネットワーク内のマルチプレクサを2対1のマルチプレクサ・ツリーに分解します。Compilerでは、このツリーが他のロジックとマージされたり転送されたりするのを防ぎます。このオプションは、Timing Analyzerによるクロック動作の解析に役立ちます。 |
DSP Block Balancing |
特定のDSPブロックスライスの変換が、DSPブロックのバランシング中に制御できるようになります。 |
オプション |
説明 |
---|---|
Disable DSP Negate Inferencing |
推論されたDSPブロック上での否定ポートの使用を指定できるようにします。 |
Disable Register Merging Across Hierarchies |
レジスターが異なる階層にあり、入力が同じである場合、そのレジスターのマージをCompilerで許可するかどうかを指定します。 |
Enable Formal Verification Support | Compilerでスクリプトを作成して、それをOneSpin*フォーマル検証ツールで使用できるようにします。 |
Enable State Machines Inference | Compilerによるステートマシンの推論が、VHDLまたはVerilog HDLデザインファイルからできるようにします。Compilerでは、ステートマシンを最適化して、領域を削減し、パフォーマンスを向上させます。Offに設定すると、Compilerでは、VHDLまたはVerilog HDLデザインファイル内のステートマシンを通常のロジックとして抽出して最適化します。 |
Force Use of Synchronous Clear Signals |
Compilerに強制して、同期クリアの使用が、通常モードのロジックセルでできるようにします。このオプションをオンにすると、デザインで使用するロジックセルの総数を減らすことができますが、フィッティングに悪影響を及ぼす可能性があります。LAB内のすべてのロジックセルでは、同期コントロール信号を共有します。 |
Fractal Synthesis | このオプションをOnにすると、コンパイラーに指示して算術ブロックに密度の高いパッキングを適用させ、算術集約型デザインのデザイン領域を最小化します。 |
HDL Message Level |
表示するHDLメッセージのタイプを指定します。これには、HDLソースコードの処理エラーを表示するメッセージが含まれます。Level1は、最も重要なHDLメッセージのみを表示します。Level2は、ほとんどのHDLメッセージを表示します。これには、警告および情報ベースのメッセージが含まれます。Level3は、すべてのHDLメッセージを表示します。これには、警告および情報ベースのメッセージおよびデザインの潜在的な問題やlintエラーに関するアラートが含まれます。 |
オプション |
説明 |
---|---|
Ignore GLOBAL Buffers |
デザインの GLOBAL バッファーを無視します。Compilerでこのオプションを無視するのは、このオプションを、個々の GLOBAL バッファーや GLOBAL バッファーを含むデザイン・エンティティー以外に適用した場合です。 |
Ignore LCELL Buffers |
デザインの LCELL バッファーを無視します。Compilerでこのオプションを無視するのは、このオプションを、個々の LCELL バッファーや LCELL バッファーを含むデザイン・エンティティー以外に適用した場合です。 |
Ignore Maximum Fan-Out Assignments |
Compilerに指示して、ノード、エンティティー、またはデザイン全体の最大ファンアウト割り当てを無視させます。 |
Ignore SOFT Buffers |
デザインの SOFT バッファーを無視します。Compilerでこのオプションを無視するのは、このオプションを、個々の SOFT バッファーやSOFTバッファーを含むデザイン・エンティティー以外に適用した場合です。 |
オプション |
説明 |
---|---|
Ignore translate_off and synthesis_off Directives |
Verilog HDLおよびVHDLデザインファイル内のすべての translate_off/synthesis_off 合成ディレクティブを無視します。このオプションを使用して、これらの合成ディレクティブをディスエーブルし、以前のエラボレーション中に無視されたコードを含めます。 |
Infer RAMs from Raw Logic |
RAMをレジスターおよびマルチプレクサから推論します。Compilerでは最初に、RAMテンプレートと異なるHDLパターンをいくつかロジックに変換します。ただし、その構造は、RAMとして機能します。その結果、このオプションをイネーブルすると、Compilerでは、altsyncram IPコアインスタンスをその構造と後の段階で代用する場合があります。この割り当てをイネーブルすると、Compilerで使用する、デバイスRAMリソースは多くなり、LABは少なくなることがあります。 |
Iteration Limit for Constant Verilog Loops |
Verilogループのループ条件によって各ループ・イタレーションのコンパイル時間定数が評価される場合に、そのイタレーションの制限を定義します。この制限が存在する主な目的は、潜在的な無限ループの特定を、メモリーを使い果たすか、ソフトウェアを実際の無限ループにトラップする前に行うことです。 |
Iteration Limit for non-Constant Verilog Loops |
Verilog HDLループのループ条件によって各ループ・イタレーションのコンパイル時間定数が評価されない場合に、そのイタレーションの制限を定義します。この制限が存在する主な目的は、潜在的な無限ループの特定を、メモリーを使い果たすか、ソフトウェアを実際の無限ループにトラップする前に行うことです。 |
オプション |
説明 |
---|---|
Maximum DSP Block Usage |
DSPブロックの最大数を指定します。これは、DSPブロックバランサーによって、現在のデバイスの各パーティションに存在すると想定される数です。このオプションによって、通常の方法 (現在のデバイスでサポートするDSPブロックの最大数を使用) をオーバーライドします。 |
Maximum Number of LABs |
LABの最大数を指定します。これは、デバイスに対してAnalysis & Synthesisで利用しようとする数です。このオプションは、通常の方法 (値が負ではなく、現在のデバイスで使用可能なLABの最大数より少ない場合、現在のデバイスでサポートするLABの最大数を使用) をオーバーライドします。 |
Maximum Number of M4K/M9K/M20K/M10K Memory Blocks |
Compilerによってデバイスに使用する可能性があると考えらえるM4K、M9K、M20K、またはM10Kメモリーブロックの最大数を指定します。このオプションは、通常の方法 (値が負ではなく、現在のデバイスで使用可能なM4K、M9K、M20K、またはM10Kメモリーブロックの最大数より少ない場合、現在のデバイスでサポートするM4K、M9K、M20K、またはM10Kメモリーブロックの最大数を使用) をオーバーライドします。 |
オプション |
説明 |
---|---|
Maximum Number of Registers Created from Uninferred RAMs |
推論されていないRAMを変換する際にAnalysis & Synthesisで使用するレジスターの最大数を指定します。このオプションは、プロジェクト全体のオプションとして使用するか、パーティション・ルートのインスタンス名に割り当てを設定することで特定のパーティションで使用します。パーティションの割り当てによって、その特定のパーティションのグローバル割り当て (存在する場合) をオーバーライドします。このオプションは、推論されていないRAMに多くのレジスターが使用されている場合に、合成による長いコンパイルの発生やメモリー不足を防ぎます。 インテル® Quartus® Prime開発ソフトウェアでは、コンパイルを続行する代わりに、エラーを発行して終了します。 |
NOT Gate Push-Back |
Compilerによって、レジスターを介して反転 (つまり、NOTゲート) をプッシュバックし、その反転をレジスター上のデータ入力へ実装することができるようにします (デザインの実装が必要な場合)。このオプションがオンの場合、レジスターは、アクティブHigh状態にパワーアップし、デバイスの初期動作中に明示的なクリアを必要とする場合があります。Compilerによってこのオプションが無視されるのは、個々のレジスターまたはレジスターを含むデザイン・エンティティー以外に適用する場合です。このオプションをレジスターから直接供給される出力ピンに適用すると、割り当てはそのレジスターに自動転送されます。 |
Number of Inverted Registers Reported in Synthesis Report |
Synthesisレポートで表示する反転レジスターの最大数を指定します。 |
Number of Protected Registers Reported in Synthesis Report | Synthesisレポートで表示する保護レジスターの最大数を指定します。 |
Number of Removed Registers Reported in Synthesis Migration Checks |
Synthesis Migration Checkレポートに表示する最大行数を指定します。 |
Number of Swept Nodes Reported in Synthesis Report | Synthesisレポートに表示するスイープノードの最大数を指定します。スイープノードとは、Compilerによって不要であると判断されて、デザインから削除されたノードです。 |
Number of Rows Reported in Synthesis Report |
Synthesisレポートに表示する最大行数を指定します。 注:
インテル®
Arria® 10および
インテル®
Cyclone® 10 GXデバイスに対してのみ使用可能です。
|
Optimization Technique |
Analysis & Synthesisの全体的な最適化の目標を指定します。Balanced方法を指定するか、Performance、 Area、 Routability、 Power、またはCompile Timeを最適化します。Compilerでは、指定した最適化も目標をターゲットにします。 |
オプション |
説明 |
---|---|
Perform WYSIWYG Primitive Resynthesis |
WYSIWYGプリミティブ再合成を合成中に実行するかどうかを指定します。このオプションで使用する設定は、 Optimization Techniqueロジックオプションで指定します。 |
Power-Up Don't Care |
Power-Up Level logicオプション設定を持たないレジスターを、ドントケア・ロジック・レベル (X) でパワーアップします。Power-Up Don't Careがオンの場合、Compilerでは、レジスターのパワーアップ・レベルの変更が有益になる時期を判断して、デザインの領域を最小化します。Compilerでは、直接的な領域の利点がない限り、パワーアップ・ステートをゼロに維持します。 |
Power Optimization During Synthesis |
Analysis & Synthesisのパワー駆動コンパイル設定を制御します。このオプションでは、Analysis & Synthesisによってデザインの消費電力をいかに積極的に最適化するかを決定します。このオプションがOffの場合、Compilerでは、電力最適化は実行しません。Normal compilationでは、デザインのパフォーマンスが低下しないことが予想される場合、電力の最適化を実行します。Extra effortによって追加の電力最適化を実行するため、デザイン・パフォーマンスが低下する可能性があります。 |
オプション |
説明 |
---|---|
Remove Duplicate Registers |
他のレジスターと同一のレジスターを削除します。2つのレジスターによって同じロジックが生成される場合、Compilerでは、重複を削除します。最初のインスタンスは、複製先にファンアウトします。また、削除されたレジスターに異なるロジックオプションの割り当てが含まれている場合、Compilerではこのオプションを無視します。このオプションが役立つのは、意図的に重複させたレジスターがCompilerによって削除されないようにする場合です。Compilerでこのオプションを無視するのは、このオプションを個々のレジスターやレジスターを含むデザイン・エンティティー以外に適用した場合です。 |
Remove Redundant Logic Cells |
冗長LCELLプリミティブまたはWYSIWYGプリミティブを削除します。このオプションをオンにすると、回路の領域と速度が最適化されます。Compilerでこのオプションを無視するのは、このオプションをデザイン・エンティティー以外に適用する場合です。 |
Report Parameter Settings |
SynthesisレポートにParameter Settings by Entity Instanceフォルダー内のレポートを含めるかどうかを指定します。 |
Report PR Initial Values as Errors | 明示的に定義された初期値がPRパーティション内にある場合、そのフラグ付けは、WarningではなくErrorとしてすることができます。 |
Report Source Assignments |
SynthesisレポートにSource Assignmentsフォルダー内のレポートを含めるかどうかを指定します。 |
オプション |
説明 |
---|---|
Resource Aware Inference for Block RAM |
RAM、ROM、およびシフトレジスターの推論で、デザインとデバイスのリソースを考慮に入れるかどうかを指定します。 |
Restructure Multiplexers |
マルチプレクサをデザインに実装するために合成に必要なロジックエレメントの数を削減します。このオプションが役に立つのは、断片化されたマルチプレクサのバスがデザインに含まれている場合です。このオプションでは、マルチプレクサの再パックが領域に対してより効率的になり、デザインによるマルチプレクサの実装が、少ないロジックエレメント数でできるようになります。
|
SDC Constraint Protection |
レジスターマージの .sdc 制約を検証します。このオプションは、.sdc 制約の有効性をコンパイルによって維持するに役立ちます。 |
Safe State Machine |
Safe State Machineオプションでは、無効な状態から回復できるステートマシンを実装します。次の設定が使用可能です。
|
Shift Register Replacement – Allow Asynchronous Clear Signal |
Compilerによって、長さが同じシフトレジスターのグループの検索ができるようにします。このシフトレジスターのグループは、altshift_taps IPコアで置き換え可能です。シフトレジスターでは、すべて同じ aclr 信号を使用してください。シフトレジスターには他の二次信号を持たせないでください。また、シフトレジスターには、等間隔のタップが必要です。この間隔は、少なくともレジスター3つ分以上にしてください。このオプションを使用するには、Auto Shift Register Replacementロジックオプションをオンにしてください。 |
Size of the Latch Report | Synthesisレポートに表示させる最大ラッチ数が指定できるようにします。 |
Size of the PR Initial Conditions Report | PR Initial Conditionsレポートに表示させる最大レジスター数が指定できるようにします。 |
オプション |
説明 |
---|---|
State Machine Processing |
ステートマシンのを処理するためにCompilerで使用する処理スタイルを指定します。ユーザー独自のUser-Encodedスタイルを使用するか、One-Hot、Minimal Bits、Gray、 Johnson、 Sequential、またはAuto (Compiler選択) エンコードを選択します。 |
Strict RAM Replacement |
このオプションがOnの場合、CompilerでRAMを置き換えるのは、ハードウェアがデザインと正確に一致する場合のみです。 |
Synchronization Register Chain Length |
Compilerで同期チェーンと見なす1つの行内のレジスターの最大数を指定します。同期チェーンは、レジスターのシーケンスです。そのクロックは同じですが、ファンアウトはありません。そのため、最初のレジスターの供給は、ピンまたは別のクロックドメインのロジックによってされます。Compilerでは、このようなレジスターをメタスタビリティー分析向けに考慮します。Compilerでは、このようなのレジスターの最適化 (リタイミングなど) が行われないようにします。ゲートレベルのリタイミングがイネーブルになっている場合、Compilerでは、このようなレジスターは削除しません。デフォルトの長さの設定は2です。 |
Synthesis Effort |
コンパイル速度、パフォーマンス、領域の間の合成トレードオフを制御します。デフォルトはAutoです。Fastを選択すると、コンパイル速度がより高速になりますが、パフォーマンスと領域の増加が犠牲になります。 |
Synthesis Migration Check for Stratix 10 | インテル® Arria® 10から インテル® Stratix® 10へのデザイン移行での合成のチェックをイネーブルします。 |
Timing-Driven Synthesis |
インテル® Arria® 10および インテル® Cyclone® 10 GXデザインの場合、合成によって、タイミング情報の使用とデザインのさらなる最適化ができるようになります。Timing-Driven Synthesisロジックオプションによって影響を受けるのは、次のOptimization Techniqueオプションです。
|
1.11. Fitter Settingsのリファレンス
オプション |
説明 |
---|---|
ALM Register Packing Effort |
ALMをレジスターの配置中にパッキングする際のFitterの積極性をガイドします。このオプションを使用して、セカンダリー・レジスターの場所を増やします。ALMのパッキング密度を上げると、デザインに適合させるために必要なALMの数が減る可能性がありますが、配線の柔軟性とタイミング・パフォーマンスも低下する可能性があります。
|
Advanced Physical Synthesis |
Physical Synthesisエンジンをイネーブルします。 Physical Synthesisには、フィッティング中の組み合わせ最適化およびシーケンシャル最適化が含まれます。これにより、回路のパフォーマンスを向上させます。 |
Allow Delay Chains |
Fitterでは、最適な遅延チェーンを選択して、tSU およびtCO タイミング要件をすべてのI/Oエレメントに対して満たします。このオプションをイネーブルすると、tSU 違反の数が減り、同時に、 tH 違反が最小限になります。このオプションをイネーブルしても、個々のノードの遅延チェーン設定は上書きされません。 |
Allow DSP Retiming |
DSPブロックを介したリタイミングが可能になります。 |
|
Compilerによるグローバル・リタイミングの実行が、Fitterの早い段階で可能になります。 |
Allow Hyper-Aware Register Chain Area Optimizations in the FitterAllow Early Global Retiming in the Fitter |
一部のバックツーバック・レジスターをHyper Registerに自動的に強制することにより、ALMの使用を削減します。この領域削減方法をオンにすると、パフォーマンスが低下し、コンパイル時間が長くなる可能性があります。 |
Allow RAM Retiming |
RAMブロックを介したリタイミングが可能になります。 |
Allow Register Duplication |
Compilerで、レジスターの複製によるデザイン・パフォーマンスの向上が可能になります。このオプションをイネーブルにすると、Compilerでは、レジスターをコピーし、ファンアウトをこの新しいノードに移動します。この最適化により、配線性が向上し、ファンアウトの多いネット内の総配線ワイヤーの削減ができます。このオプションをディスエーブルすると、レジスターをリタイムする最適化がディスエーブルになります。 注:
インテル®
Arria® 10
および
インテル®
Cyclone® 10 GX
デバイスに対してのみ使用可能です。
Allow Early Global
|
Allow Register Merging |
レジスターがデザイン内の他のレジスターと同じ場合、Compilerでそのレジスターを削除できるようになります。このオプションをイネーブルすると、 2 つのレジスターで同じロジックを生成した場合、Compiler では、一方のレジスターを削除し、もう一方のレジスターは、削除した方のレジスターのデスティネーションにファンアウトします。このオプションが役立つのは、意図的に使用した重複レジスターがCompilerによって削除されるのを防止する場合です。 レジスターのマージをディスエーブルすると、Compilerでは、レジスターをリタイムする最適化をディスエーブルします。 注:
インテル®
Arria® 10
および
インテル®
Cyclone® 10 GX
デバイスに対してのみ使用可能です。
|
Auto Delay Chains for High Fanout Input Pins |
Fitterで、高ファンアウト入力ピンの遅延チェーンの最適化方法が選択できるようになります。このオプションをイネーブルするには、Auto Delay Chains をイネーブルしてください。このオプションをイネーブルすると、tSU 違反の数が減少する場合がありますが、コンパイル時間が大幅に増加します。これは、Fitterでは、すべてのファンアウトの設定を最適化しようとするためです。 |
Auto Fit Effort Desired Slack Margin |
Fitterで維持するデフォルトのワーストケースのスラックマージンを指定します。デザインのすべてのパスで少なくともこれだけのスラックがある可能性がある場合、Fitterでは、コンパイル時間を短縮するために最適化の作業量を減らします。 注:
インテル®
Arria® 10
および
インテル®
Cyclone® 10 GX
デバイスに対してのみ使用可能です。
|
オプション |
説明 |
---|---|
Auto Global Clock |
Compilerによるグローバルクロック信号の選択ができるようにします。Compilerで選択した信号から、ほとんどのクロック入力をフリップフロップに供給します。この信号は、グローバル配線パス上のデバイス全体で使用可能です。Compilerによって特定の信号がグローバルクロックとして自動的に選択されないようにするには、Global Signal オプションをその特定の信号でOff にします。 |
Auto Global Register Control Signals |
Compilerによるグローバルレジスター制御信号の選択ができるようにします。Compilerで選択した信号から、ほとんどの制御信号入力をフリップフロップ (クロック信号を除く) にグローバル信号として供給します。このグローバル信号は、グローバル配線パス上のデバイス全体で使用可能です。ターゲットのデバイスファミリーに応じて、この制御信号には、非同期クリアおよびロード、同期クリアおよびロード、クロックイネーブル、プリセット信号などがあります。Compilerによって特定の信号がグローバルレジスター制御信号として自動的に選択されないようにするには、Global Signal オプションをその特定の信号でOff にします。 |
Auto Packed Registers |
Compilerによって、レジスターを組み合わせ関数と組み合わせたり、レジスターを実装するために、I/Oセル、RAMブロック、またはDSPブロックをロジックセルの代わりに使用したりできるようにします。このオプションでは、Fitterで、どの程度積極的にレジスターを他の機能ブロックと組み合わせてデザインの領域を削減するかを制御します。通常はAuto またはSparse Auto 設定が適切です。 他の設定では、Fitterの柔軟性によるレジスターと他の機能ブロックとの組み合わせを制限します。結果として、フィットしなくなる場合があります。
このオプションがOff 以外の値に設定されている場合、レジスターでは、I/Oセルと結合してI/Oタイミングを改善します。これが当てはまるのは、Optimize IOC Register Placement For Timing オプションがイネーブルになっている場合です。 |
Auto RAM to MLAB Conversion |
FitterによってAuto ブロックタイプのRAMを変換してLABの場所を使用するかどうかを指定します。このオプションの設定がOff の場合、ブロックタイプの設定がMLAB になっているMLABセルまたはRAMセルのみで、LABロケーションを使用してメモリーを実装します。 |
Auto Register Duplication |
Fitterによるレジスターの自動複製が、空のロジックセルを含むLAB内で可能になります。このオプションでは、デザインの機能は変更されません。Compilerで、Auto Register Duplication オプションを無視するのは、Logic Cell Insertion -- Logic Duplication ロジックオプションの設定としてOFFを選択した場合です。このオプションをオンにすると、Logic Cell Insertion -- Logic Duplication ロジックオプションを使用してデザインの配線性を改善することができます。ただし、デザインの正式な検証が難しくなる可能性があります。 注:
インテル®
Arria® 10
および
インテル®
Cyclone® 10 GX
デバイスに対してのみ使用可能です。
|
オプション |
説明 |
---|---|
Enable Auto-Pipelining | 自動パイプライン化および遅延の影響を受けないフォールスパス機能をオンにします。この設定を、Assignment
EditorのMaximum
Additional
Pipelining
、およびオプションのAdditional Pipelining
Group
割り当てと併用して、パイプライン・レジスターを指定した場所に自動的に追加します。 注:
インテル®
Stratix® 10
および
インテル®
Agilex™
デバイスに対してのみ使用可能です。
|
Enable Bus-Hold Circuitry |
デバイス動作中のバスホールド回路をイネーブルします。このオプションがOn の場合、ピンでは、駆動中以外でも、最後のロジックレベルを保持し、高インピーダンスのロジックレベルにはなりません。このオプションは、Weak Pull-Up Resistor デザインと同時には使用しないでください。Fast オプションからCritical Chain Viewerへの配置が可能になります。Compilerでこのオプションを無視するのは、このオプションをピン以外に適用した場合です。 |
Enable Critical Chain Viewer |
クリティカル・チェーンの可視化が、 インテル® Stratix® 10 および インテル® Agilex™ デバイスのFast Forward Timing Closure Recommendationsレポートでイネーブルされます。 |
Equivalent RAM and MLAB Paused Read Capabilities |
MLABセルに実装されたRAMに、ブロックRAMに実装されたRAMと同等の一時停止読み出し機能が必要かどうかを指定します。読み出しの一時停止とは、読み出しがディスエーブルになっているときに、最後の読み出し値を維持する機能です。一時停止読み出し機能の違いを許容することにより、Fitterでは、より柔軟にMLABセルを使用してRAMを実装することができます。 Fitterによって、MLABセルを使用して実装するRAMをより柔軟に決定できるようにするには、このオプションをDon't Care に設定します。次のオプションが使用可能です。
|
Equivalent RAM and MLAB Power Up |
MLABセルに実装されたRAMに、ブロックRAMに実装されたRAMと同等のパワーアップ条件が必要かどうかを指定します。パワーアップ条件が発生するのは、デバイスのパワーアップ時またはグローバルリセット時です。非同等パワーアップ条件を許可すると、Fitterでは、より柔軟にMLABセルを使用してRAMを実装することできます。 Fitterで、MLABセルを使用した実装RAMの決定が最も柔軟にできるようにするには、このオプションの設定をAuto またはDon't Care にします。次のオプションが使用可能です。
|
Final Placement Optimizations |
Fitterで最終配置の最適化を実行するかどうかを指定します。最終配置の最適化を実行すると、タイミングと配線性が向上する場合がありますが、コンパイル時間が長くなる可能性があります。 |
Fitter Aggressive Routability Optimizations |
Fitterによって積極的に配線性の最適化を行うかどうかを指定します。積極的な配線性の最適化を実行すると、デザイン速度が低下する可能性がありますが、配線ワイヤーの使用率と配線時間も低減される可能性があります。Automatically 設定の場合、Fitterでは、積極的な配線性が有益かどうかを決定できます。 |
オプション |
説明 |
---|---|
Fitter Effort |
フィッティング中の物理合成最適化のレベルを次のとおり指定します。
注:
インテル®
Arria® 10
および
インテル®
Cyclone® 10 GX
デバイスに対してのみ使用可能です。
|
Fitter Initial Placement Seed |
現在のデザインのシードを指定します。値には、負でない整数値を指定できます。デフォルトでは、Fitterはシード1を使用します。 Fitterでは、初期配置コンフィグレーションとしてシードを使用してデザイン配置を最適化し、タイミング要件fMAX を満たします。シード値が異なると、フィッティング結果も異なるので、異なるシードをいくつか試して、より良いフィット結果が得られるよう試してみてください。 デザインに最適なフィッティング結果をもたらすシードが変更されることがあるのは、そのデザインが変更された場合です。また、シードを変更した場合、フィッティングの結果が良くなる場合とならない場合があります。したがって、シードの指定は、Fitterがタイミング要件を少しだけ満たしていない場合にのみ行います。 注: Design
Space Explorer II (DSEII)
を使用して、シードを含む複雑なフロー・パラメーターを
インテル®
Quartus® Prime
開発ソフトウェアでスイープして、デザイン・パフォーマンスを最適化することもできます。
|
Logic Cell Insertion |
Fitterによって2つのノード間へのバッファー・ロジック・セルの自動挿入が、デザインの機能を変更せずにできるようにします。Compilerでは、バッファー・ロジック・セルをデバイス内にある未使用のロジックセルから作成します。また、このオプションにより、Fitterでは、LAB内のロジックセルの複製ができます。これは、使用可能な未使用のロジックセルがLAB内にある場合です。このオプションを使用すると、コンパイル時間が長くなる可能性があります。デフォルト設定のAuto
では、この動作は、デザインからの要求で、この動作がデザインに適合する必要があるときに許可されます。
注:
インテル®
Arria® 10
および
インテル®
Cyclone® 10 GX
デバイスに対してのみ使用可能です。
|
MLAB Add Timing Constraints for Mixed-Port Feed-Through Mode Setting Don't Care |
Timing Analyzerによって、タイミング制約の評価を、MLABメモリーブロックの書き込み動作と読み出し動作との間で行うかどうかを指定します。書き込み動作と読み出し動作を同じアドレスで同時実行すると、メタスタビリティーの問題が発生する場合があります。これは、デフォルトではこの2つの動作間にはタイミング制約が存在しないためです。このオプションをオンにすると、MLABメモリーブロックの書き込み動作と読み出し動作との間にタイミング制約が生じて、メタスタビリティーの問題は回避されます。ただし、このオプションをオンにすると、MLABメモリーブロックのパフォーマンスが低下します。デザインによる書き込みと読み出し動作が同じアドレスで同時実行されない場合、このオプションを設定する必要はありません。 |
Number of Example Nodes Reported in Fitter Messages |
Fitterレポートに表示させる最大ノードサンプル数が指定できます。 |
オプション |
説明 |
---|---|
Optimize Design for Metastability |
この設定により、Mean Time Between Failures (MTBF) が増加し、デザインの信頼性が向上します。この設定をイネーブルすると、Fitterでは、デザイン内のシンクロナイザー・レジスターの出力セットアップ・スラックを増やします。このスラックは、デザインのMTBFを指数関数的に増加させる可能性があります。このオプションが適用できるのは、Timing Analyzerを使用してタイミング駆動のコンパイルを行う場合のみです。Timing Analyzerの report_metastability コマンドを使用して、デザインで検出されたシンクロナイザーを確認し、MTBFの見積もりを作成します。 |
Optimize Hold Timing |
Fitterに指示して、デバイス内のホールドタイムを最適化し、タイミング要件と割り当てに合うようにします。次の設定が使用可能です。
Optimize Timing ロジックオプションをディスエーブルした場合は、Optimize Hold Timing オプションは使用できません。 |
Optimize IOC Register Placement for Timing |
I/Oピンのタイミングを最適化するために、FitterによってレジスターをI/Oに自動的にパックし、遅延を最小限に抑えるかどうかを指定します。
|
Optimize Multi-Corner Timing |
Fitterへの指示によって、最適化中のすべてのタイミングコーナーを考慮して、タイミング要件を満たします。このタイミング遅延コーナーには、高速コーナータイミングと低速コーナータイミングの両方が含まれます。このオプションはデフォルトでOn です。Fitterでデザインを最適化する際に考慮するのは、低速コーナー遅延のほか、マルチコーナー遅延です。このオプションがOff の場合、Fitterでデザインを最適化する際に考慮するのは、低速コーナー・タイミング・モデル (特定のスピードグレードで最も低速の製造デバイス、低電圧条件で動作) からの低速コーナー遅延のみです。このオプションをOn にすると、通常、プロセス、温度、電圧の変動に対してより堅牢なデザイン実装が作成されます。 Optimize Timing オプションをOffにした場合は、Optimize Multi-Corner Timing オプションは使用できません。 |
Optimize Timing |
Fitterによる最適化によって最大遅延タイミング要件 (クロックサイクル時間など) を満たすかどうかを指定します。このオプションのデフォルト設定は、Normal compilation です。このオプションをOff にすると、相互接続要件が非常に高いデザインをフィットできます。このオプションをOff にすると、コンパイル時間が短縮されますが、タイミング・パフォーマンスが犠牲になります (Fitterによってデザインのタイミング要件が無視されるため)。このオプションがOff の場合、他のFitterタイミング最適化オプションは効果がありません (Optimize Hold Timing など) 。 |
オプション |
説明 |
---|---|
Periphery to Core Placement and Routing Optimization |
Fitterによって、ターゲットの配置配線をFPGAコア内のペリフェラル・ロジックとレジスターとの間の直接接続で最適化するかどうかを指定します。次のオプションが使用可能です。
注:
インテル®
Arria® 10
および
インテル®
Cyclone® 10 GX
デバイスに対してのみ使用可能です。
|
Physical Placement Effort |
高度な物理配置最適化中にFitterによって費やされる作業量を制御します。 High およびMaximum の作業量の設定では、配置ソリューションをさらに最適化するため、追加のコンパイル時間が必要になります。 |
Placement Effort Multiplier |
Fitterで配置に費やす相対時間を指定します。デフォルト値は1.0で、有効な値は0より大きくしてください。浮動小数点数を指定すると、配置作業の制御ができます。値を大きくするとCPU時間は増加しますが、配置の品質が向上する可能性があります。例えば、値が「4」の場合は、フィッティング時間が約2倍から4倍長くなりますが、品質は向上します。 |
Power Optimization During Fitting |
Fitterへの指示によってデバイスの総消費電力の削減を目的とした最適化を実行します。電力最適化フィッティングで使用可能な設定は次のとおりです。
|
オプション |
説明 |
---|---|
Programmable Power Maximum High-Speed Fraction of Used LAB Tiles |
高速LABタイルの端数の上限を設定します。有効な値は0.0から1.0の間にしてください。デフォルト値は1.0です。値が1.0の場合は、高速タイルの数に制限がないことを意味します。Fitterでは、デザインのタイミング要件を満たすために必要な最小数を使用します。指定値を1.0未満にすると、タイミングの品質が低下する場合があります。これは、タイミング・クリティカルなリソースが低電力モードに強制されるためです。 |
Programmable Power Technology Optimization |
Fitterによるコンフィグレーション方法を制御して、タイルを高速モードまたは低電力モードで動作させます。次のオプションが使用可能です。
障害が発生したデザインでは、パスに負のスラックがある場合、そのパスは高速モードになります。このモードでは、デザイン速度が向上する可能性は低いです。またく、スタティック消費電力が増加する場合があります。このモードは、タイミング・クロージャーのためにデザインし直す必要があるロジックパスを判断するのに役立つ場合があります。 注:
インテル®
Arria® 10
および
インテル®
Cyclone® 10 GX
デバイスに対してのみ使用可能です。
|
Router Timing Optimization Level |
ルーターでタイミング要件をどの程度積極的に満たそうとするかを制御します。このオプションをMaximum に設定すると、デザイン速度がわずかに向上しますが、コンパイル時間が長くなります。このオプションをMinimum 設定すると、コンパイル時間が短縮されますが、デザイン速度がわずかに遅くなります。デフォルト値はNormal です。 |
Run Early Place during compilation |
フルコンパイル時にEarly |
オプション |
説明 |
---|---|
Synchronizer Identification |
Compilerによって、メタスタビリティー分析に対する同期レジスター・チェーン・レジスターを識別する方法を指定します。同じクロック間にあり、ファンアウトがないレジスターのシーケンスです。同期レジスターチェーンは、別のクロックドメインのピンまたはロジックによって駆動されます。 次のオプションが使用可能です。
Fitterでは、シンクロナイザーとして識別したレジスターを最適化して、Mean Time Between Failure (MTBF) を向上させます。ただしこれは、Optimize Design for Metastabilityをイネーブルした場合です。 同期レジスターチェーンの識別にForced またはForced if Asynchronous オプションを使用すると、Timing Analyzerでは、デザインタイミング要件を満たした場合、チェーンのメタスタビリティーMTBFをレポートします。 |
Treat Bidirectional Pin as Output Pin |
Fitterによって双方向ピンを出力ピンとして扱うことを指定します。つまり、入力パスが出力パスからフィードバックされます。 |
Use Checkered Pattern as uninitialized RAM Content |
チェッカーパターンを初期RAMコンテンツとして、すべてのRAMブロックにロードします。このとき、コンテンツの初期化をサポートするRAMコンテンツは指定しません。このオプションをオンにしても、シミュレーションには影響しません。このため、オンチップ動作がシミュレーション結果と異なる場合があります。 |
Weak Pull-Up Resistor |
デバイスがユーザーモードで動作しているとき、弱いプルアップ抵抗をイネーブルします。このオプションでは、高インピーダンス・バス信号をVCCにプルします。このオプションのイネーブルは、Enable Bus-Hold Circuitry オプションと同時にはしないでください。Fitterでこのオプションを無視するのは、ピン以外に適用した場合です。 |
1.12. デザインのコンパイルの改訂履歴
ドキュメント・バージョン | インテル® Quartus® Prime バージョン | 変更内容 |
---|---|---|
2019.10.20 | 19.3.0 |
|
2019.09.30 | 19.3.0 |
|
2019.07.02 | 19.1 |
|
2019.04.01 | 19.1 |
|
2019.01.03 | 18.1.0 |
|
2018.10.19 | 18.1.0 |
|
2018.09.24 | 18.1.0 |
|
2018.05.07 | 18.0.0 |
|
日付 |
バージョン |
変更内容 |
---|---|---|
2017.11.06 | 17.1.0 |
|
2017.05.08 | 17.0.0 |
|
2016.10.31 | 16.1.0 |
|
2016.05.03 | 16.0.0 |
|
2015.11.02 | 15.1.0 |
|
2. コンパイル時間の短縮
2.1. コンパイル結果に影響を与える要因
- プロジェクト・ファイル - プロジェクト設定 (.qsf、quartus2.ini)、デザインファイル、およびタイミング制約 (.sdc) への変更によって結果が変更されることがあります。
- 設定によってコンパイル中のプロセッサーの数が変更される場合、コンパイル結果に影響を与えることがあります。
- ハードウェア - CPUアーキテクチャー。ハードディスクまたはメモリーサイズの違いは含まれません。Windows XP x32の結果は、Windows XP x64の結果と同一ではありません。Linux x86の結果は、Linux x86_64と同一ではありません。
- インテル® Quartus® Prime開発ソフトウェアのバージョン - ビルド番号とインストール済みの暫定アップデートが含まれます。この情報を得るには、Help > Aboutをクリックします。
- オペレーティング・システム - WindowsまたはLinuxオペレーティング・システム (バージョン・アップデートを除く)。たとえば、Windows XP、Windows Vista、およびWindows 7の結果は同一です。同様に、Linux RHEL、CentOS 4、およびCentOS 5の結果は同一です。
2.2. Compilation Time Advisor
2.3. 合計コンパイル時間の短縮方法
- 並列コンパイル (システムに複数のプロセッサー・コアがある場合)
- Rapid RecompileとSmart Compilationでは、以前のコンパイルの結果を再利用して、合計コンパイル時間を短縮します。
2.3.1. Rapid Recompileの実行
Rapid Recompileを実行するには、次の手順に従います。
- 初期コンパイルの前に、Assignments > Settings > Compiler Settingsをクリックし、Enable Intermediate Fitter Snapshotsをオンにします。このオプションをイネーブルして、後でRapid Recompile機能を使用します。
-
Rapid Recompileを初期コンパイルの後 (またはFitterのRouteステージの実行後)、Processing > Start > Start Rapid Recompileをクリックします。Rapid Recompileによる次の種類のデザイン変更の実装には、フル・リコンパイルは行いません。
- Signal Tap Logic Analyzerによってタップされたノードの変更
- 組み合わせロジック関数の変更
- ステートマシン・ロジックの変更 (例 : 新しいステート、ステート遷移の変更)
- 信号またはバスのレイテンシーの変更、またはパイプライン・レジスターの追加
- 加算器または乗算器の係数の変更
- DSP、RAM、またはI/Oのレジスターパッキング動作の変更
- 不要なロジックの削除
- 合成ディレクティブの変更
-
Rapid Recompile Preservation Summaryレポートをクリックすると、保持されたコンパイル結果の割合に関する詳細情報が表示されます。
図 57. Rapid Recompile Preservation Summary
2.3.2. マルチプロセッサー・コンパイルのイネーブル
この方法で短縮できるコンパイル時間は、処理コアが2個あるシステムでは最大10%、コアが4個あるシステムでは最大20%です。タイミング解析を単独で実行する場合、2個のプロセッサーによってタイミング解析時間が平均10%短縮されます。プロセッサーを4個使用する場合は、タイミング解析時間の削減は平均15%に達します。
インテル® Quartus® Prime開発ソフトウェアでは、ユーザーが指定したプロセッサーのすべてが、必ずしも特定のコンパイル中に使用されるわけではありません。また、使用するプロセッサーの数が、指定より多くなることはありません。このため、他のタスクを行う際に、コンピューターの速度が遅くなることはありません。複数のプロセッサーを使用しても、フィッティング品質への影響はありません。指定したFitterシードの場合、特定のデザインでMaximum processors allowed設定にすると、フィッティングはまったく同じで確定的です。これは、ターゲットマシンや使用可能なプロセッサーの数に関係なく成立します。異なるMaximum processors allowed仕様によって生成される結果は異なりますが、品質は同じです。その影響は、Fitterシード設定の変更に類似しています。
デザインのコンパイル後にマルチプロセッサーのコンパイルをイネーブルするには、次の手順を実行します。
- インテル® Quartus® Primeプロジェクトを開くか作成します。
- Assignments > Settings > Compiler Settingsをクリックします。
- Parallel compilationで、Compilerで使用するプロセッサー数のオプションを指定します。
-
コンパイル後のParallel Compilationレポートのプロセッサー使用に関する詳細情報が表示されます。
コンパイルするプロセッサーの数をコマンドラインで指定するには、次のTclコマンドをスクリプトで使用します。
set_global_assignment -name NUM_PARALLEL_PROCESSORS <value>
この場合、<value> は1 から 16 の整数です。
インテル® Quartus® Prime開発ソフトウェアを使用してプロセッサー数を検出し、すべてのプロセッサーをコンパイルに使用するには、次のTclコマンドをスクリプトに含めます。
set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL
注: Compilerでは、 Intel® Hyper-Threading® Technology (Intel® HT Technology) を1個のプロセッサーとして検出します。お使いのシステムにIntel HT Technology搭載のプロセッサーが1個含まれている場合は、プロセッサー数を1に設定します。 Intel® HT Technologyは、 インテル® Quartus® Primeコンパイルには使用しないでください。
2.3.3. ブロックベースのコンパイルの使用
ブロックベースのコンパイルを使用する場合、Fast Preserveオプションをイネーブルすると、保持されたパーティションのロジックを減らして、コンパイル中にインターフェイス・ロジックだけにすることができます。これにより、Compilerによって必要とされるパーティションの合成、配置、配線の時間が短縮されます。インターフェイス・ロジックは、パーティション境界にあるロジックです。インターフェイス・ロジックは、デザインの残りの部分と相互接続します。
-
Design Partition Plannerで、パーティション化に適したサイズのブロックを特定します。
一般に、パーティションは、デザイン全体のサイズの約15% から20% です。各エンティティーの上部にあるバーの下の情報領域を使用します。図 58. Design Partition Plannerでのエンティティーの表示
- エンティティーを必要に応じて抽出したり、折りたたんだりして、スタンドアロン・ブロックになるようにします。
-
希望サイズのエンティティーにはそれぞれ、関連するロジックのブロックが含まれます。エンティティーを右クリックし、Create
Design Partitionをクリックして、そのエンティティーをそれ自体のパーティションに配置します。
目的は、関連するロジックのブロックをパーティションに含めることです。
- Fast Preserveオプションをイネーブルし、保持されたパーティションのロジックを単純化して、コンパイル中にインターフェイス・ロジックのみにするには、Assignments > Settings > Compiler Settings > Incremental Compile > Fast Preserveをクリックします。
2.3.4. レジスターのパワーアップ初期化のディスエーブル
- このオプションが使用可能なのは インテル® Stratix® 10および インテル® Agilex™ デバイスの場合のみです。
- パワーアップ・ステートに依存する最適化はディスエーブルされます。
- ビットストリーム・アセンブラーによるビットストリームの作成時には、レジスターのパワーアップ初期化は行われません。
初期化をディスエーブルするには、Device and Pin Optionsダイアログで Disable Register Power-up Initializationオプションをイネーブルします。

Disable Register Power-up Initializationオプションをイネーブルすると、Synthesisでは、次の図に示すように、レジスターに対する警告をパワーアップに注意して出力します。

レジスターが定義済みのパワーアップ・ステートにあって、Compilerによる保持ができない場合、そのレジスターを表示するには、Registers with Explicit Power-up Settingsレポートを参照してください。

レジスターのパワーアップ・ステートに依存したデザインのリセットができなくなった場合に必要なリセット方法に関する詳しい情報は、 Intel® Quartus® Primeプロ・エディションユーザーガイド:パーシャル・リコンフィグレーション内のパーシャル・リコンフィグレーションのデザインフローを参照してください。
2.4. 合成時間および合成ネットリスト最適化時間の短縮
2.4.1. 合成時間および合成ネットリスト最適化時間の短縮の設定
合成ネットリストまたは物理合成の最適化を行わなくても、デザインがすでにパフォーマンス要件を満たしている場合は、このオプションをオフにしてコンパイル時間を短縮します。パフォーマンスを満たすために合成ネットリストの最適化が必要な場合は、デザイン階層のパーティションを個別に最適化して、解析と合成に費やされる合計時間を削減します。
2.4.2. 適切なコーディング・スタイルを使用した合成時間の短縮
大きなメモリーブロックを推論する場合、ソフトウェアではFPGA内のリソースをより多く消費します。これによって配線の輻輳が発生し、コンパイル時間が大幅に増加する可能性があります。特定のブロックでの配線使用率が高い場合は、そのブロックのコードを確認することをお勧めします。
2.5. 配置時間の短縮
配置時間を短縮するために、配置アルゴリズムの設定を変更します。
場合によっては、配置時間と配線時間との間にトレードオフがあります。適切な配置を見つけるために配置プログラムを十分長い時間実行しないと、配線時間が長くなる可能性があります。配置時間を短縮した場合は、それによって配線時間が増加して合計時間の短縮が無効にならないようにします。
2.5.1. Placement Effort Multiplierの設定
Assignments > Settings > Compiler Settings > Advanced Settings (Fitter) をクリックして、Placement Effort Multiplierの値を指定します。デフォルトでは 1.0 です。有効値は0より大きくしてください。整数以外の値も指定可能です。0から1までの数を使用すると、フィッティング時間が短縮されます。ただし、配置品質とデザイン・パフォーマンスが低下する可能性があります。
2.6. 配線時間の短縮
デザインの配線に長い時間がかかる場合は、次の操作を1つ以上実行します。
- 配線の輻輳がないか確認する。
- Fitter Aggressive Routability Optimizationをオフにする。
2.6.1. Chip Plannerによる配線の輻輳の特定
- Tools > Chip Plannerをクリックします。
- 配線の輻輳をChip Plannerで表示するには、TasksリストのReport Routing Utilizationコマンドをダブルクリックします。
- Report Routing UtilizationダイアログボックスでPreviewをクリックして、デフォルトの輻輳表示をプレビューします。
- Routing utilization typeを変更して、特定のリソースの輻輳を表示します。デフォルト表示では、輻輳が0%の場合は濃い青色、100%の場合には赤色が使用されます。
- Threshold percentageのスライダーを調整して、輻輳しきい値レベルを変更します。
2.6.1.1. 配線の輻輳がある領域
- デザインの接続を変更して、配線の輻輳を削減することができます。
- 配線の輻輳が発生しているエリアが、Logic Lock (Standard) 領域内またはLogic Lock (Standard) 領域間にある場合は、Logic Lock (Standard) 領域を変更または削除して、デザインを再コンパイルします。
- 配線時間が変わらない場合は、その配線時間はデザインおよび配置の特性です。
- 配線時間が短くなった場合は、Logic Lock (Standard) 領域のサイズ、位置、または内容を変更して、配線の輻輳の削減と配置時間の短縮を検討してください。
2.6.1.2. HDLコーディング・スタイルが原因の輻輳
2.7. スタティック・タイミング解析時間の短縮
インテル® Quartus® Prime Fitterではまた、Timing Analyzerを配置配線中に実行します。不正確な制約が Synopsys* Design Constraints File (.sdc) にある場合、 インテル® Quartus® Prime開発ソフトウェアでは、不必要な時間を費やして何度も制約を処理する場合があります。
- デザインにフォールスパスやマルチサイクル・パスを指定しない場合、Timing Analyzerで解析するパスは、デザインに関連のないものである可能性があります。
- .sdc ファイルの制約を再定義した場合、Timing Analyzerではさらに時間をかけて処理することがあります。このような状況を回避するには、Synopsisデザイン制約が再定義されていることをコンパイルメッセージで確認し、.sdc ファイルを更新します。
- デザインには必ず正しいタイミング制約を指定してください。これは、どのパスをフォールスパスやマルチサイクル・パスと見なすなどのデザインの意図は、ソフトウェアでは想定できないためです。このようなアサインメントを正しく指定すれば、Timing Analyzerによってそのパスの解析はスキップし、Fitterによって余分な時間を費やしてそのパスの最適化を行うことはありません。
2.8. プロセスの優先順位の設定
2.9. コンパイル時間の短縮の改訂履歴
ドキュメント・バージョン | インテル® Quartus® Prime バージョン | 変更内容 |
---|---|---|
2019.11.11 | 19.3.0 |
|
2019.09.30 | 19.3.0 |
|
2019.07.02 | 19.1 | レジスターなしの初期化フローの使用の項を追加しました。 |
2018.10.19 | 18.1.0 |
|
2017.11.06 | 17.1.0 |
|
日付 | バージョン | 変更内容 |
---|---|---|
2017.05.08 | 17.0.0 |
|
2016.10.31 | 16.1.0 |
|
2016.05.02 | 16.0.0 |
|
2015.11.02 | 15.1.0 | Quartus IIのインスタンスを インテル® Quartus® Prime に変更しました。 |
2014.12.15 | 14.1.0 |
|
2014.08.18 |
14.0a10.0 |
Arria 10デバイスのスマートコンパイルに関する制約を追加しました。 |
2014年6月 | 14.0.0 | フォーマットを更新しました。 |
2013年5月 | 13.0.0 | 「Limit to
One Fitting Attempt」、「Using Early Timing Estimation」、「Final Placement
Optimizations」、および「Using Rapid Recompile」の項を削除しました。 「Placement Effort Multiplier Settings」の項を更新しました。 「Identifying Routing Congestion in the Chip Planner」の項を更新しました。 章全体で一般的な編集上の変更を行いました。 |
2012年6月 | 12.0.0 | サーベイリンクを削除しました。 |
2011年11月 | 11.0.1 | テンプレートを更新しました。 |
2011年5月 | 11.0.0 |
|
2010年12月 | 10.1.0 |
|
2010年7月 | 10.0.0 | 初版 |
3. Intel Quartus Primeプロ・エディション ユーザーガイド: デザインのコンパイル
インテル® Quartus® Primeバージョン | ユーザーガイド |
---|---|
19.3 | Intel Quartus Prime Pro Edition User Guide: Design Compilation |
19.1 | Intel Quartus Prime Pro Edition User Guide: Design Compilation |
18.1 | Intel Quartus Prime Pro Edition User Guide: Design Compilation |
18.0 | Compiler User Guide Intel Quartus Prime Pro Edition |
A. Intel Quartus Primeプロ・エディション ユーザーガイド
Intel® Quartus® Primeプロ・エディション FPGAデザインフローのすべてのフェーズの包括的情報については、次のユーザーガイドを参照してください。