高集積度 FPGA デザインの生産性 No.1
Quartus® II デザイン・ソフトウェアは、FPGA 業界初の真のインクリメンタル・コンパイル機能を備えています。 この機能はチーム・ベース・デザインをサポートし、デザインの性能を維持しつつ、デザインの変更や修正に伴うコンパイルの繰り返し作業を高速化するなど、高集積FPGA デザインに対する Quartus II ソフトウェアの生産性のリーダシップを発揮します。Quartus II を使用することで、高集積度 FPGA デザインに対し完成への最速手段を提供します。
システム統合を通じて維持されるデザイン・ブロックの性能
Quartus II のインクリメンタル・デザイン機能は、チームベースのプロジェクト管理フローを追加することによってさらに強化され、 チーム・ベース・デザイン向けの大きな生産性の利点を提供します。システム設計者は、トップダウン・アプローチを使用してプロジェクトを定義できます。新しいプロジェクト・マネージャ・インタフェース(図 1参照)では、すべてのボトムアップ・デザインのパーティション・プロジェクトを生成でき、個々のエンジニアが独立して完全なデザインに簡単に統合できるファンクションを開発、そして最適化を行うことが可能です。システム設計者は、各デザイン・ブロックの性能をシステム統合の際に維持されるため、システム設計者は、個別に最適化された各デザイン・ブロックをインクリメンタルに統合できます。
図 1. プロジェクト・マネージャ GUI
1日あたりの繰り返し回数増加による生産性の向上
FPGA デザインのコンパイル時間を短縮することにより (図 2 参照)、1日あたり 1回しか実行できなかったデザインの繰り返し作業を 4 ~ 10 回実行できるので、設計者の生産性が大幅に向上します。
図 2. 高集積 FPGA デザインのコンパイル時間を短縮し、1日あたりの繰り返し回数を増加

タイミング・クロージャの高速化
図 3 に示すように、インクリメンタル・コンパイルによって、ロジカル・パーティションへの合成やフィジカルパーティションに対しフィッティング/ロジック配置を指定することができます。
図 3. インクリメンタル・コンパイル用のデザイン・パーティション

Quartus II は、デザインを処理するときにユーザーが割り当てたパーティションに従うので、設計者は特定のパーティションを最適化しながら、他のパーティションをそのまま維持することができます。 高度な最適化技術を使用すると、コンパイル時間が長くなることがあります。 特定のデザイン・パーティションにはフィジカル・シンセシスなどの高度な最適化技術を使用し、その他のパーティションには何も行わず性能を維持することによって、この影響は限定的なものになりタイミング・クロージャの向上を図ることができます。
例えば、パーティション Top とパーティション F (図 3 参照)が既に性能要件を満たしている場合、パーティション B において変更を加えたり、フィジカル・シンセシスをオンにして再コンパイルする際に、他のパーティションに影響を与えることなくさらに性能を最適化することができます。
使いやすさ
図 4 に示すように、Quartus II のプロジェクト・ナビゲータでは階層構造の表示からパーティションを簡単に割り当てることができます。
図 4. ユーザ・インタフェースでのデザイン・パーティションの指定

設計者は、デザインのパーティションを指定した後、各パーティションにネットリスト・タイプ・プロパティを設定するだけで、デザインの処理方法に対して高度な制御が可能になります。表 1 に可能な設定を示します。
| 表 1. パーティションのネットリスト・タイプ | |
| ネットリスト・タイプ | 動作 |
|---|---|
| Source | 関連付けられたデザイン・ソース・ファイルを使用して各パーティションをコンパイルします。 |
| Post-Synthesis | 前の合成結果が使用可能で、ソース・ファイルの変更が検出された場合に、前の合成結果を使用してパーティションをコンパイルします。 |
| Post-Fit | 前の配置/フィッティング結果が使用可能で、ソース・ファイルの変更が検出されない場合に、前の配置/フィッティング結果を使用してパーティションをコンパイルします。 |
| Post-Fit [Strict] | post-fit ネットリストがある場合は、post-fit の結果を保存します。 この設定は、Post-Fit の設定と異なるため、コンパイラがパーティションと関連性のあるデザインの変更を無視する場合があります。 |
| Empty | パーティションをコンパイルせず、単に他のパーティション・ポートをそのパーティションのポートに接続します。 この機能は、一部のパーティション・デザインがまだ完成していない場合のブロック・ベース・デザインに有効です。 |
スクリプティング・サポート
以下に示すように、設計者が使い慣れたスクリプト・ベースのデザイン・フローを使用して、容易にインクリメンタル・コンパイル機能をオンする設定が可能です。
set project top_project
package require :: quartus::flow
project_open $project
# インクリメンタル・コンパイルをオンにします。
set_global_assignment –name INCREMENTAL_COMPILATION \
FULL_INCREMENTAL_COMPILATION
# パーティションを設定します。
set_instance_assignment –name PARTITION_HIERARCHY \
db/A_inst –to A –section_id “Partition_A”
set_instance_assignment –name PARTITION_HIERARCHY \
db/B_inst –to B –section_id “Partition_B”
# デザインの変更が検出されない場合に前の結果を使用するように
# 以後のコンパイルのネットリスト・タイプを
# フィッティング後に設定します。
set_global_assignment –name PARTITION_NETLIST_TYPE \
POST_FIT –section_id “Partition_A”
set_global_assignment –name PARTITION_NETLIST_TYPE \
POST_FIT –section_id “Partition_B”
# 初回コンパイルを実行します。
execute_flow –full_compile
project_close
詳しくは、 Quartus II の Tcl スクリプティング・サポートを参照してください。
サードパーティ製の合成ツールのサポート
Quartus II のインクリメンタル・コンパイル機能は、以下に示すサードパーティ製の合成ツールを使用できます。
- Synplicity® 社 Synplify®
- Mentor Graphics® 社 Precision
- Synopsys 社 DC FPGA
Quartus II のインクリメンタル・コンパイル機能でこれらのツールを使用する方法について詳しくは、 Quartus II ハンドブック を参照してください。
デバイス・サポート
Quartus II のインクリメンタル・コンパイル機能は、以下のデバイス・ファミリ用の Quartus II サブスクリプション・エディション(バージョン 6.1 以上)に含まれています。
- Stratix® IV FPGAs
- Stratix III FPGA
- Stratix II FPGA
- Stratix FPGA
- Cyclone® II FPGA
- Cyclone FPGA
- Arria GX FPGA
- HardCopy® III ASIC
- HardCopy II ASIC

