インテル® Quartus® Prime デザイン・スペース・エクスプローラIIとインテル® Optane™ テクノロジーを用いた、超・並列コンパイル

　FPGAの開発において、動作周波数、スループット、遅延量などのパフォーマンス向上や、低消費電力化、高い実装効率を実現するために、最適なコンパイル・オプションの設定が必要になります。要求を満たすためのコンパイル・オプション設定を確定するため、何度かコンパイルを試行することになります。
　インテルFPGA開発ツール、Quartus® Primeには、このコンパイル・オプション（最適化設定）を複数回自動的に実行できる、デザイン・スペース・エクスプローラ II（ Design Space Explorer II、以下、DSE IIと称します）を使用することで効率的に最適な設定を確定することができます。また、このDSE IIツールは、複数のコンパイル・オプション設定を並列処理する機能を有しています。
　ここでは、DSE IIの使用方法の紹介を中心に、インテル® Optane™テクノロジーを利用した効果についても記載します。
　ただし、この並列コンパイル処理は、一回のコンパイル時間の短縮化を目的とはしていません。あらかじめご承知ください。 
#FPGAデザインの大規模化による開発環境の課題
　現在、インテル® Stratix® 10 FPGA、インテル® Agilex® FPGAのような、大規模なFPGA開発では、一回のコンパイルでコンピュータ（PC）に要求するメモリが60GBを超える場合もあり、大容量なメモリを消費する可能性があります。さらに並列処理機能を使用すると、並列処理の数に応じて、さらにメモリが消費されます。コンパイルするためのPCに実装するメモリにも限界があり、複数回自動コンパイルが可能なDSE IIを使用しても、シーケンシャルにコンパイルが実行されてしまうため、ベストな最適化設定を見つけるためには、非常に長い時間を要してしまいます。例えば、一つのデザインコンパイルで、約60GBのメモリを消費するデザインを64GBのメモリを実装したPCで実行した場合、一つのデザインコンパイルに要する時間が10時間とすると、10回分の時間、約100時間、つまり、約5日かかる計算になります。これは、PCに搭載されるメモリの容量の制約で、10種類の最適化設定をしたデザインが、シーケンシャルにコンパイル実行されるためです。
　インテル® Optane™ テクノロジーを採用することで、メモリの増設コストを抑えつつ、各最適化オプション設定を並列処理するために必要なメモリ空間を確保することで、DSE IIの処理時間を5倍短縮することも可能です。つまり、上記の例では、5日かかる処理を1日で完了することになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/1029aa34-6728-7d09-6c44-1ee1d8c2edc8.png)
図1 FPGAデザイン・コンパイル評価環境
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/6cb2c919-eb35-4ff6-1d40-5ced3e55de17.png)
図2 インテル® Optane™ テクノロジーを用いたDSE IIコンパイル時間の調査結果
#インテル® Optane™ テクノロジーを用いた並列処理によるコンパイル時間改善の検証
　最適な設定を早期に確定するため、DSE IIの処理時間短縮を検討します。コンパイルで使用するPCの使用可能なメモリを増やすことで、複数のコンパイルを同時に並列処理することが可能になり、その結果、最適なコンパイル・オプション設定を見つけ出すためのコンパイル時間が短縮されます。最大並列処理数は、一つのデザイン・コンパイルで消費するメモリ容量と使用可能なメモリ容量で決まります。DSE IIでは指定パラメータ、“Maximum parallel compilations (または、*.dseファイル内のnum_concurrent) ”に必要な並列処理数を指定します。並列処理数が多いほど、多くのコンパイル・オプション設定が実行できますが、メモリ容量を増やすためにDRAMを増設することは、非常にコストがかかります。そこで、Intel® Optane™ テクノロジーを使用しました。この技術によりメモリ空間を拡大することができます。インテル® Optane™メモリを制御する、インテル® メモリ・ドライブ・テクノロジー（IMDT）は、拡張メモリとしてDRAMを増設せず、SSD内のメモリをプールして、メモリ空間を拡大する技術です。
図3では、DSE IIで複数の設定を並列処理するためにメモリ空間を1.4TB～1.5TBに拡張した場合を想定して、DRAM増設した場合とインテル® Optane™ SSDを使用した場合を比較した例を示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/fce19c96-b127-d8d1-4bde-eb1c6e3a3b77.png)
図3 開発環境におけるメモリコストの比較（例）

##インテル® Optane™ テクノロジー
　インテル® Optane™ テクノロジーを使用することにより、SSDのメモリ空間をDRAMと等価的なメモリとして扱うことができます。つまり、SSDをコンパイルに必要なメモリとして利用することで、高額なDRAMを増設することなく、並列処理が可能なメモリ空間を得ることになり、結果的にDSE IIの処理時間が短縮されます。
　インテル® メモリ・ドライブ・テクノロジー（IMDT）は、大容量かつ低コストのメモリ・ソリューションを提供します。
　処理するデータが、システムに搭載されるメモリを超えて増大する中、大容量DRAMを低コストかつ同等の性能で置き換えが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/ca306a27-2ded-6125-fc22-520b3febbde0.png)
図4　インテル® メモリー・ドライブ・テクノロジー（IMDT）
　詳細は、下記の関連サイトをご覧ください。

パフォーマンスを加速
https://www.intel.co.jp/content/www/jp/ja/architecture-and-technology/optane-memory.html
革新的なメモリとストレージ
https://www.intel.co.jp/content/www/jp/ja/technology-provider/products-and-solutions/optane-technology/overview.html
Intel® Memory Drive Technology
https://www.intel.co.jp/content/www/jp/ja/software/intel-memory-drive-technology.html

#Intel® Design Space Explore II (DSE II）の使用方法（インテル® Quartus® Prime Pro v20.3）
##DSE IIの概要
　この章では、DSE IIの使用フローについて紹介します。DSE II GUI のキャプチャ画面を使用しながら、それぞれのページと設定について説明します。そして、DSE II を使用してコンパイルする際に役立つ例を紹介します。最後に、DSE II のコマンド・ラインの使用方法について簡単に説明します。
###DSE IIの機能、特長
　FPGAデザインの大規模と複雑化の問題に対する解決策のひとつとして挙げられるのが、Design Space Explorer II (DSE II) と呼ばれるツールです。DSE II を使用することにより、パワフルなリモート・マシン（PC)でのコンパイルが容易になったり、ローカル・マシン（PC）で複数の並列処理を実行することができます。さらに、ユーザーはタイミング、エリア、または消費電力の最適化をするかどうか指定することも可能です。コンパイルが完了すると、DSE II によってタイミングおよびリソース使用率レポートに容易にアクセスできるようになります。これは、ターゲットの最適化に最も適したエクスプロレーション・ポイントを決定する際に役立ちます。
###並列処理
　複数のコンパイルを実行したい場合、例として、シード・スウィープ（Seed Sweep）の方法があります。Seed Sweepとは複数のシード値によるデザインのコンパイルです。これにより、フィッターの始点変動を利用してデザインを最適化することができます。Seed Sweepは複数のコンパイルを実行するため、並列処理が有効です。複数のコンパイルを同時に実行することによって、エクスプロレーションの時間を削減することができます。なお、複数のコンパイルを実行している場合、デザインで使用している IP コアにはそれぞれライセンスが必要なことに留意してください。
###リモート・コンパイル
　DSE II のもう一つの重要な利点は、複数のリモート・マシン（PC）にシームレスに接続できることです。コンパイルにすべてのローカル・コンピューティングのパワーを使用してしまうと、ローカル・マシンの停止や、他のアプリケーションの実行が遅くなるなどトラブルの原因となります。
　複数のコンパイルを並行して実行したい場合、リモート・マシン（PC）を使用して並列処理を実行することができます。リモート・マシン（PC）を使用することにより、ローカル・マシン（PC）でのコンパイルより多くのコンパイルを実行することが可能です。さらに、インテル・クラウドを使用すると、スマートフォン、タブレット、ワークステーション、ノート・パソコンなど様々なデバイスからリモート・コンパイルの結果にアクセスすることが可能になります。
###制限事項
　DSE II は最良の結果を提案するツールではないことに留意してください。最良の結果は、DSE II によって提供されるレポートを確認してFPGA設計者が決定します。各エクスプロレーション・ポイントには固有の QSF ファイルがあり、DSE II が QSFファイルに追加するものはすべてコメントとともにマークされます。現時点では、これらの設定を最終的な Quartus® Prime プロジェクトに取り込むことは設計者の判断に任されます。また、リモート・マシン（PC）と通信する際、DSE II はローカル HTTP サーバを使用します。そのため、DSE IIを実行するために Windows ファイアウォールに例外を指定する必要があります。
##DSE IIの使用フロー
　FPGAデザインで DSE II ツールを使用する方法を下記の手順を追って見ていきましょう。

- DSE IIの起動
- プロジェクトを開きリビジョンを選択
- コンパイルと通知を設定
- エクスプロレーション・オプションを指定
- ステータスをモニタリングし、コンパイルオプションを確認
- コンパイルオプションを検証

　まず、DSE II ツールを起動します。コマンド・ライン・オンリー・モードを使用していない場合、DSE IIを起動すると図7に表示されているような GUI が表示されます。GUI の最初のページで、使用したいプロジェクトを開き、リビジョンを選択することができます。
　次に、コンパイル・タイプを設定します。
　リモート・サーバを使用している場合、エクスプロレーションが完了したことを通知するための設定をします。
　そして、領域、タイミング、消費電力を最適化するか、いくつのシードを実行するかなど、エクスプロレーション・オプションを設定します。
　それから、Status ページで、各コンパイルのステータスをモニタリングします。
　このステータス・ページでは、レポート・カラムのアイコンをクリックすると、特定のエクスプロレーション・ポイントのQuartus® Primeフル・コンパイル・レポートを取得することができます。
　最後に、Results ページでワースト・ケース・スラック、Fmax、およびリソース使用率などのエクスプロレーション・サマリーを確認します。
###DSE IIを起動する
　DSE IIツールは、Windows Start メニューから、Quartus® Tools メニューから、あるいは quartus_dse コマンドを使用してコマンド・プロンプトから起動することができます。
コマンド・ライン・オペレーションについては、後ほど詳しく説明します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/399a0221-c239-cc4d-afcc-fc4c209b986b.png)
図5 DSE IIの起動
下記の表示が出ましたら、Yesを選択してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/53555813-4131-e722-d698-d92a66f3a875.png)
図6 Quartus® Primeソフトウェアのクローズ
###プロジェクトを開きリビジョンを選択
　GUI を起動すると、まずプロジェクト・ページが開かれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/535612e1-5d99-501e-d619-dd1c7776f96e.png)
図7 DSE IIのGUI
　プロジェクト・ページでは、Quartus® Primeプロジェクト・ファイル .qpf あるいは Quartus® Primeアーカイブ・ファイル .qar のいずれかを開くことができます。
プロジェクトを開いた後、ドロップ・ダウン・メニューから使用したいリビジョンを選択することができます。
###コンパイルと通知を設定
　DSE II は、主に、複数のコンピュータで最適化設定をしてコンパイルを試行する際に容易で効率的な方法を提供することを目的として設計されています。
　まず、Setup ページでコンパイル・タイプを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/c1074ac6-b579-b866-e9de-57afb8cfc933.png)
図8 セットアップ画面
　リモート・コンパイルを選択する場合、リモート・コンパイルの種類とサーバの設定を選択することができます。現在、リモート・コンパイルは Windows および Linux の SSH と LSF でサポートされています。
###エクスプロレーション・オプションを指定
　エクスプロレーション・ページには、Exploration Points、Design File Setup、Limits、Results、DSE Server Setting および Advanced 設定などいくつかのセクションがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/ba3d7958-06e3-9e9b-70f4-ae4c56da328a.png)
図9 エクスプロレーション画面
　エクスプロレーション・ページでは、オプションでエクスプロレーションの名前を指定することができます。デフォルトでは、dse、数字、リビジョン、異なる数字を使用したエクスプロレーション名が指定されています。
　各エクスプロレーション・コンパイルは、エクスプロレーション名で始まり、アンダースコアと数字で終わります。Compilation Typeは、Full Compilation、Fitter and Timing Analysis、Fitter, Timing Analysis and Assemblerのいずれかを設定することができます。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/9b6d985d-951f-02eb-5b6b-0d0eacd7d3d7.png)
図10 Compilation Typeの選択
　Exploration Pointsでは、Seed Sweepや、タイミング、エリア、消費電力の最適化を選択することができます。
　シード・セクションでは、DSE IIがシードを自動的に選択することを許可することができます。また、ユーザー自身が特定の値を指定することも可能です。
図10では、DSE IIエクスプロレーション・ページに表示されるExploration PointsやExploration Optionsを示しています。Design 　Explorationを選択すると、最適化コンパイルオプション（エクスプロレーション・オプション）を選択することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/93849436-1ea6-0b99-ef22-dd650f43d759.png)
図11 デザイン・エクスプロレーション設定
　“Seed Sweep Only” モード は、Quartus® Prime プロジェクトの元の設定を使用してダイアログ・ボックスで設定した、各シードのコンパイルを実行します。All Optimization Modes は、ベース・コンパイルと各最適化モードのシードのコンパイルを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/62409ec1-38be-fa6b-550c-c8e4f3be36f6.png)
図12 Compilation Strategies
図12の例では、5つのシードを指定した場合、86回のコンパイルが実行されることになります。

　Compilation Strategies (エクスプロレーション・オプション ) の設定について、下記のQuartus® PrimeのHelpをご参照ください。
https://www.intel.com/content/www/us/en/programmable/quartushelp/current/index.htm#mapIdTopics/gzx1519433954262.htm

　ここでは一部のオプションをご紹介します。High Performance Effort 設定は、パフォーマンスが向上しますが、コンパイル時間が増加します。
　High Power Effort設定は、消費電力を低減しますが、合成実行時間が増加します。
　また、Aggressive Power は、高トグル・レートの信号で配線使用率を削減します。これにより、ダイナミック消費電力を削減します。これは、タイミング性能に影響する可能性があります。なお、消費電力を最適化するにあたって DSE II を使用する前に、Quartus® Prime Power Analyzer を利用して Signal Activity ファイルを作成し、デザインのコンディション・データを動作させる必要があります。
Aggressive Area 設定は、デバイス領域やロジック・リソース使用率を削減します。
　Quartus® Prime のAssingmentsのSettingにあるCompiler Settingsには、Balanced (Normal flow)に加え、DSE II の5つのエクスプロレーション・モードに相当するOptimization mode があります。Advanced Fitter SettingsのFitter Initial Placement Seedに設定すると、Exploration OptionsのSeed Sweep Onlyを使用している場合、設定したモードは DSE IIコンパイルに適用されます。たとえば、Quartus® PrimeのCompiler Settingsで、High Performance Effortを設定すると、Exploration Optionsでは、Seed Sweep OnlyおよびHigh Performance Effortとして、結果が得られます。
　Seed Sweep のみを実行したい場合は、Quartus® PrimeのCompiler SettingsのAdvanced Fitter SettingにあるFitter Initial Placement Seedにマニュアルで設定することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/21b92a87-cd74-0c81-2cae-7f7b0f6d7a8e.png)
図13 インテル® Quartus® Prime Compiler Setting
 この方法は、1つか2つのシードを試行する場合に適しています。
　DSE IIの大きな利点の1つは、ユーザーの介入なしに多くのシード数を自動的に実行することができる点です。たとえば、使用したいシードを5つと設定すると、DSE IIはシードを自動的に選択します。または、3、5、7、9、および11のシード、など、使用したいシードを具体的に指定することも可能です。なお、シードはいくつでも実行することができますが、コンパイル時間が長くなります。10個以上のシードを実行する場合は、十分なメモリ容量を確保することを推奨します（インテル® Optane メモリテクノロジー適用など）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/67e1afa4-2b02-7182-558f-5a8bd30f5c71.png)
図14 エクスプロレーション Select Results
　Design File Setup セクションでは、Quartus® Prime プロジェクトから新しいアーカイブを作成するか、既存のアーカイブフ・ファイルを使用するかを選択することができます。
　Limits セクションでは、エクスプロレーション・ポイントの1つがタイミングを満たした場合停止するよう DSE IIを設定することができます。または、各コンパイルに時間単位または分単位でタイム・リミットを設定することも可能です。
　Results セクションでは、各エクスプロレーション・ポイントからDSE IIが保存するファイルを選択することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/c55e3a1d-7d71-27d6-691b-5b68a21526f9.png)
図15 エクスプロレーション Advanced設定
　エクスプロレーション・ページの Advanced セクションでは、コンパイルの並列処理最大数の設定、処理するためのCPUスレッドの最大数を設定することができます。
　そして、“Quality of Fit” Formula も設定することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/86f523fb-b8aa-0fa4-3d5f-759107fa9d58.png)
図16 Additional Agreements
　それでは、“Quality of Fit” 計算とは一体何なのでしょうか。
　“Quality of Fit” は、より適したエクスプロレーション・ポイントを判断する際に役立つクオリティの指標です。これは、あるコンパイルにおけるすべてのスラックの加重合計（各スラックに重みづけして加算）です。
　Quality of Fit Formula はカスタマイズすることができます。Quality of Fit Formula は Python (パイソン) プログラミング言語に基づいています。
　Quality of Fit をカスタマイズするにはまず、Customize Quality of Fit の次にあるSelect ボタンをクリックします。
コンテンツをコピーし、新しい .py ファイルに保存します。
　Custom Radio ボタンをクリックします。
　新しい .py ファイルにブラウズし、.py ファイルを編集して重量を変更します。
　ここで示されているものは、Qualify of Fit 計算のデフォルトの重量です。
　Additional Arguments テキスト・ボックスで引数を追加することも可能です。追加した引数は、表示されるコマンド・ラインに自動的に追加されます。
　最後に、Start ボタンをクリックしてデザインのエクスプロレーションを開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/36b84f8e-b5b2-33f8-68d6-1dfcc2b9e6a2.png)
図17 Quality of Fit
　DSE II再接続機能について触れます。
　以前は、DSE IIを実行中のコンピュータをシャットダウンするか、あるいはリモート・サーバへの接続がなくなると、すべての作業情報が失われてしまいました。DSE IIの 最新のバージョンにはReconnect DSE 機能があり、一部のサーバでデータの損失を防ぐことができます。接続がなくなった後でも、実行中の LSF、SunGrid、PBSProまたはTorque サーバに再度接続し、サブミットした作業を復元することができます。
###ステータスをモニタリングし、コンパイルオプションを確認
　DSE IIエクスプロレーションの実行中、DSE IIは各エクスプロレーション・ポイントのコンパイル・ステータスをトラッキングおよびモニタリングします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/d98544fc-f5c5-bf79-cdd2-907ac3741a39.png)
図18 Status
　各エクスプロレーション・ポイントのステータス、進捗状況、時間経過は、Statusページで確認することができます。エクスプロレーション・ポイントに関するより詳細な情報が必要な場合、Report カラムのアイコンをクリックすると各エクスプロレーション・ポイントの Quartus® Prime フル・コンパイル・レポートを確認することができます。
###コンパイルオプションを検証
　エクスプロレーションが完了すると、Result ページで、すべてのエクスプロレーション・ポイントのサマリーをスプレッド・シート形式で確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/fdeb54b4-8c04-831e-7911-614d3d38ef22.png)
図19 Results
　Exploration Summary の表には Quality of Fit、fmax、ワーストケース・スラック、およびコンパイル時間といった情報が表示されます。また、マルチコーナー・タイミング解析やリソース使用率など、他のレポートを確認することも可能です。
###並列コンパイル処理設定
　DSE IIで設定した複数の最適化コンパイル設定（Exploration Strategies）を並列に処理することでDSE IIの処理時間が短縮できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/6e22cbb1-922b-aac4-5b16-390e78c0d934.png)
図20 Maximum Parallel Compilations（並列処理パラメータ）
　Maximum parallel compilationsでは、並列に実行するコンパイルの最大数を指定します。この設定値と一つのコンパイル時の使用メモリとの掛け算でメモリが消費されます。例えば、あるFPGAデザインのコンパイルした時、ピークで60GBメモリが消費される場合、この設定を4とすると、240GBのメモリ（DRAM）が必要になります。
　Maximum number of CPUsはDSE IIが使用することができるCPUの数を指定します。これは、使用されるコンパイル・マシンのCPU内のコア数に依存します。
##DSEの使用例
　DSE II ツールを実行するにあたっての基礎を学んだところで、次は、DSE II の使用例を見ていきましょう。
###プロジェクト例を開く
　まず、プロジェクト例を開きます。ここでは、タイミングを満たすことが難しいと既に分かっている、非常に小規模なデザインを使用します。
　それでは、このデザインで DSE II を使用すると何ができるのか、実際に見ていきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/ec7d028e-1902-920c-0e86-a9b3929c1b39.png)
図21 プロジェクト（例）
###コンパイルタイプを設定する
　次に、コンパイル・タイプを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/be24ec9f-3f1a-c22d-d6bf-6ce9f6136b9a.png)
図22 Setup （Local）
　説明を簡潔にするために、ここではコンパイル・タイプをローカルに設定します。
###Exploration Options : Seed Sweep Only
　エクスプロレーション・モードは、いくつかの中から選択することができますが、まずは、Seed Sweep Only モードを試してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/87aef628-9967-8d4f-3bf5-695e5384d164.png)
図23 Exploration Seeds設定
　設定はQuartus® Primeで開始時に設定されていたものと同じで、デザインに他の変更を加えることはありません。今回は、Balancedに設定されています。ここでは、ベースラインに加えて5つのシードを実行し、DSE IIツールがシードを選択できるようにします。図25に示されているレポートから、このデザインのタイミングを満たすシード値はないことが分かります。
また、今回は、Maximum number of parallel compilationsの設定を3にしていますので、3つのシード設定を並列に処理しております。図24のように３つのシード設定したエクスプロレーション・モードが処理されていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/224b5656-86c8-921f-b1f3-9f44de647ec7.png)
図24 Status表示例
###Balanced設定
　Quartus® PrimeのCompiler SettingをBalancedに設定した時のDSE II結果を示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/d3749856-734b-7beb-91ed-3991266d6f0d.png)
図25 Results表示例（Balanced)
　Fmax を800MHzに制約した時のセットアップタイミングは、すべてのエクスプロレーション・ポイントにおいてタイミングが満足しておりません。
###Exploration Options : High Performance Effort設定
　High Performance Effort エクスプロレーション・モードを使用してSeed Sweepを実行する場合、最終的に6つのデザインがタイミングを満たし、エクスプロレーション・ポイント dse1_2 は、ポジティブ・スラック 59 ps で最良のタイミングを有しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/47ad4014-d507-4045-de4d-079565256875.png)
図26 Results表示例（High Performance Effort）
###Exploration Options : Aggressive Area設定
　次に、デザインの領域、あるいはロジック使用率を削減してみましょう。エクスプロレーション・モードは Aggressive Area を選択します。このモードを選択すると、DSE II はデザインの領域を削減するオプションを検索します。ただし、これはタイミング性能に影響します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/40b9f81a-0379-1b48-20b4-c31be9c5195b.png)
図27 Results表示例（Aggressive Area）
　Exploration Summary の表から、タイミングを完全に満たすエクスプロレーション・ポイントは、ありません。タイミングが満たさない、ワースト・セットアップスラックが小さいのは、dse1_1でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/17494cd3-2c65-a18e-4191-76246053dc08.png)
図28 Results Exploration Summary表示例（Aggressive Area）
　Resource Utilization レポートでは、dse1_4 エクスプロレーション・ポイントのALMsが 最小の領域を有していることが分かりますが、ワースト・ケース・スラックが-38 ps であり、タイミングを満たしていません。
###Exploration Options : Power (Aggressive Power)設定
　DSE II エクスプロレーション・ページで、Exploration OptionsのAggressive Power モードでは、コンパイラが最高のトグル・レートで信号の配線使用率をさらに削減します。このモードは消費電力をより節約することができますが、タイミング性能に影響します。このケースでは、エクスプロレーション・モードがdse1_baseの時にのみタイミングが満足されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/24125d67-ea8b-8fa3-08ac-b2632ecb214b.png)
図29 Results表示例（Aggressive Power）
　消費電力推定値を取得するには、Quartus® PrimeのAssignments、Settingsにある、Power Analyzer SettingsでRun Power Analyzer during compilationとwrite out signal activities used during power analysisが有効になっている必要があります。
 DSE II消費電力推定値の詳細を確認したい場合は、ステータス・ページで各Exploration Pointsのレポート・カラムのアイコンをクリックし、Quartus® Primeコンパイル・レポートを開きます。コンパイル・レポートを開く際、Power Analyzer カテゴリでレポートを選択することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/5d5cb21a-efc8-db0c-c46e-8c91757f08a9.png)
図30 Power Analyzerレポート例(Aggressive Power)
　各Exploration PointsのPower Analyzerレポート結果（Total Thermal Power Dissipation）の例として、表1にまとめました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/58b50184-233a-1327-c0b2-80935f7dfe2b.png)
表1 エクスプロレーション・モードによるパフォーマンス最適化と消費電力最適化の結果比較（例）

　この結果、このデザインでは、High Performance EffortよりもAggressive Powerのエクスプロレーション・モードのdse1_3 の消費電力推定値が最も小さい結果となりましたが、Aggressive Powerでは図26の結果より、タイミング解析結果が満足していないことがわかります。正のワーストケース・スラックを有しているExploration Pointsは、dse1_baseであることが分かります。
##コマンドラインの使用方法
　最後に、コマンド・ラインの使用方法について説明します。
###コマンドラインからDSE IIを実行する
　コマンドラインからquartus_dsewと入力すると、DSE IIをGUI上で実行することができます。GUI を実行しない場合、コマンド・プロンプトに quartus_dse と入力することでDSE IIを実行することができます。コマンドはプロジェクト名や多数のオプションに用いられます。最も一般的なオプションの一つは、リビジョンです。デザインに複数のリビジョンがある場合、エクスプロレーションするリビジョンを指定する必要があります。そしてもちろん、Seed Sweepやタイミング、消費電力、領域、といったエクスプロレーション・モードについても設定する必要があります。オプションの完全なリストを取得するには、quartus_dse – help と入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/43e45e4d-f43f-f5ca-e23f-82188446ebab.png)
図31 quartus_dse ヘルプ表示
###DSE IIコマンドライン使用例
　コマンド・ラインの使用例として、ここでは、同時実行のコンパイルが2つあるローカル・コンパイルの例を紹介します。Exploration Optionsは all optimization modes に設定され、プロジェクト名は one_reg です。
ローカル・コンパイル例

```
quartus_dse –launcher local --num-concurrent 2 --explore all_optimization_modes one_reg
```
また、DSE IIのExplorationのcommand line実行されるコマンドも表示されますので、参考にしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908879/7eec6053-6f77-27ee-4666-b129a85e758c.png)
図32 DSE II Exploration実行 （Command Line）
#まとめ
　まず、大規模なFPGAデザインによる開発環境の課題について触れ、並列コンパイルを実施する際のメモリ消費に関する解決策として、インテル® Optane™ テクノロジーを紹介させていただきました。
　次に、Design Space Explorare II（DSE II）について紹介し、リモートおよび並列コンパイル機能を有するこのツールが役立つことを説明しました。
　そして、DSE IIの GUI を各ページごとに確認しながら使用フローのデモンストレーションを行い、DSE IIの各エクスプロレーション・モードから得られる結果をいくつか、例を挙げて説明しました。
　そして最後に、コマンド・ラインから DSE IIを実行する方法について説明しました。
　このDSE IIとインテル® Optane™ テクノロジーを利用することによって、皆様の要求スペックを満たす最適化設定を早期に確定させ、FPGAデザイン工数削減にお役に立つことを願っております。
以上

Notices & Disclaimers
Intel technologies may require enabled hardware, software or service activation.
No product or component can be absolutely secure. 
Your costs and results may vary. 
© Intel Corporation.  Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries.  Other names and brands may be claimed as the property of others. 
 
© Intel Corporation.  Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries.  Other names and brands may be claimed as the property of others.
The products described may contain design defects or errors known as errata which may cause the product to deviate from published specifications.  Current characterized errata are available on request.
Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.