• 検索結果がありません。

Quartus II Integrated Synthesis, Quartus II 6.0 Handbook, Volume 1

N/A
N/A
Protected

Academic year: 2021

シェア "Quartus II Integrated Synthesis, Quartus II 6.0 Handbook, Volume 1"

Copied!
78
0
0

読み込み中.... (全文を見る)

全文

(1)

この資料は英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。こちらの日本語版は参考用としてご利用 ください。設計の際には、最新の英語版で内容をご確認ください。

7. Quartus II

インテグレーテッド・シンセシス

はじめに

プログラマブル・ロジック・デザインがより複雑になり、性能の向上が 要求される中で、先進的な合成がデザイン・フローで重要な部分を占め るようになりました。Quartus®II ソフトウェアには、VHDL と Verilog HDL、およびアルテラ固有のデザイン入力言語を完全にサポートする先 進的なインテグレーテッド・シンセシス機能があり、また合成プロセス を制御するオプションを提供しています。この合成機能のサポートによ り、Quartus II ソフトウェアは使いやすい完全なソリューションを提供 しています。 この章では、Quartus II ソフトウェアのデザイン・フローと言語サポー トについて説明します。インクリメンタル・シンセシスでの Quartus II の合成結果を改善し、制御する方法を説明します。さらに、Quartus II の合成オプションにより、またアーキテクチャ固有のメガファンクショ ンの推測を制御することによって合成結果を改善できます。この章では、 合成中に使用される合成されたデザインの理解に役立つようなノードの 命名規則や、HDL コードを改善するために合成中に発行されるメッセー ジの一部を説明します。説明するオプションと設定をすべて適用するた めのスクリプト手法も示します。 この章は、以下の項で構成されています。 ■ デザイン・ フロー ■ 言語サポート ■ インクリメンタル・シンセシス ■ Quartus II の合成オプション ■ HDL ソース・コードでのその他の Quartus II オプションの設定 ■ 合成結果の解析 ■ VHDL & Verilog HDL のメッセージ ■ Quartus II インテグレーテッド・シンセシスのノード命名規則 ■ スクリプトのサポート QII51008-6.0.0

(2)

デザイン・

フロー

Quartus II Analysis & Synthesis プロセスには、Verilog HDL と VHDL 言語、およびアルテラ独自の言語(詳細は7–5 ページの「言語サポート」 を参照)を完全にサポートするインテグレーテッド・シンセシスが含ま れ、SystemVerilog 言語のサブセットをサポートします。コンパイル・フ ローのこのステージでは、デザイン・ロジックを最適化するロジック合 成を実行し、ロジック・エレメント(LE)やアダプティブ・ロジック・ モジュール(ALM)などのデバイス・リソースを使用してデザイン・ロ ジックを実装するためのテクノロジ・マッピングを実行します。このス テージでは、プロジェクトのすべてのデザイン・ファイル(サードパー ティ合成ツールによるネットリストを含む)を統合する、単一プロジェ クト・データベースも生成されます。

Quartus II コンパイルの Analysis & Synthesis ステージは、以下のレベ ルの解析と合成の実行に使用できます。

Analyze Current File— 現在のデザイン・ソース・ファイルを解析し、

構文エラーをチェックします。このコマンドは、詳細なデザイン合 成を必要とするセマンティック・エラーを多くレポートしません。 Processing メニューで、Analyze Current File をクリックします。

Analysis & Elaboration— デザインの構文エラーとセマンティック・

エラーをチェックし、エラボレーションを実行します。Processing メ ニューで、Start をクリックし、Start Analysis & Elaboration をク リックします。

Analysis & Synthesis— テクノロジ・マッピングを含め、デザインで

完全な解析と合成を実行します。Processing メニューで、Start をポ イントし、Start Analysis & Synthesis をクリックします。これは最 も一般的に使用されるコマンドで、完全なコンパイル・フローの一 部として使用されます。 Quartus II インテグレーテッド・シンセシスを使用した Quartus II のデ ザインおよびコンパイル・フローは、以下のステップから成ります。 1. Quartus II ソフトウェアでプロジェクトを作成し、トップレベルのデ ザインのエンティティ名を含む一般的なプロジェクト情報を指定し ます。 2. Quartus II ソフトウェアまたはテキスト・エディタで、デザイン・ファ イルを作成します。

3. Setting ダイアログ・ボックスの Files ページを使用して、Quartus II プロジェクトにすべてのデザイン・ファイルを追加します。 4. 合成およびフィッティング中にデザインのコンパイルと最適化を制

御するコンパイラ設定を指定します。合成設定については、7–21 ペー ジの「Quartus II の合成オプション」を参照してください。

(3)

デザイン・ フロー

5. Quartus II ソフトウェアでデザインをコンパイルします。デザインを 合成するには、Processing メニューで、Start をポイントし Start

Analysis & Synthesis をクリックします。

Processing メニューで、Start Compilation をクリックし、配 置、配線、プログラミング・ファイルの作成、タイミング解 析を含む完全なコンパイル・フローを実行します。 6. ニーズを満たす合成および配置配線結果が得られた後、アルテラ・デ バイスをプログラムします。 ソフトウェアが提供するネットリストを使用すると、Quartus II のシ ミュレータまたはサードパーティ製シミュレータで機能シミュレーショ ンやゲート・レベルのタイミング・シミュレーションを実行したり、 TimeQuest やクラシック・タイミング・アナライザ以外にサードパー ティ製タイミング解析ツールでタイミング解析を実行したり、サード パーティ製フォーマル検証ツールでフォーマル検証を実行することがで きます。Quartus II ソフトウェアでは、この他にも多くの解析機能およ びデバッグ機能が使用できます。 プロジェクトの作成、コンパイル・フロー、Quartus II ソフトウェアの その他の機能について詳しくは、Quartus II ヘルプを参照してください。 Quartus IIの機能の全般的な要約については、「Introduction to Quartus II Manual」を参照してください。

(4)

図 7-1 に、Quartus II インテグレーテッド・シンセシスを使用した基本 的なデザイン・フローを示します。 図 7-1. Quartus II インテグレーテッド・シンセシスを使用した Quartus II デザイン・フロー No VHDL Verilog HDL AHDL BDF Formal Verification Using Source Code as Golden Netlist Gate-Level Functional Simulation Post Synthesis Simulation File (.vho/.vo) Functional/RTL Simulation Yes Timing & Area Requirements Satisfied? Gate-Level Timing Simulation Post Place-and-Route Simulation File (.vho/.vo) Formal Verification Using VO as Revised Netlist Post Place-and-Route Formal Verification File

(.vo) Internal Synthesis Netlist Configuration/ Programming Files (.sof/.pof) Analysis & Synthesis Constraints

& Settings

Constraints

& Settings Fitter Assembler

Timing Analyzer

(5)

言語サポート

言語サポート

この項では、HDL および回路図によるデザイン入力に対する Quartus II ソフトウェアの統合合成サポートについて説明します。サポートされる すべての言語、およびサードパーティ合成ツールにより生成されるネッ トリストを、1 つの Quartus II プロジェクトで混在させることができま す。

Verilog HDL

のサポート

Quartus IIコンパイラの解析および合成モジュールは、以下のVerilog HDL 規格をサポートします。 ■ Verilog-1995(IEEE 規格 1364-1995) ■ Verilog-2001(IEEE 規格 1364-2001)

■ System Verilog-2005(IEEE 規格 1800-2005)(特定の構造のみサポート) 言語サポートについて詳しくは、以下の項を参照してください。 特定の構文機能および言語構造について詳しくは、Quartus II ヘルプを 参照してください。 すべてのファイルに Verilog HDL のデフォルト・バージョンを指定する には、以下のステップを実行してください。 1. Assignments メニューで Settings をクリックします。

2. Settings ダイアログ・ボックスの Category で、Analysis & Synthesis

Settings を展開し、Verilog HDL Input を選択してから OK をクリッ

クします。

3. Verilog HDL Input ページの Verilog version で、適切な Verilog の バージョンを選択し、OK をクリックします。 また、各デザイン・ファイルについて、合成ディレクティブを使用して Verilog HDL のバージョンを指定することもできます。詳しくは、7–26 ページの「各デザイン・ファイルの Verilog および VHDL バージョンの 指定」を参照してください。 Quartus II コンパイラはデフォルトで、Verilog-2001 規格を使用します。 本書で示す Verilog HDL コード・サンプルは、別途指定がな い場合は Verilog-2001 規格に従っています。

Quartus II ソフトウェアの Verilog HDL のサポートでは、Verilog HDL 規格に従って大文字と小文字を区別します。

(6)

Quartus II ソフトウェアは、絶対パス(セパレータに「/」または「\」 を使用)、または相対パス(プロジェクト・ルートまたは現在のファイル の場所を基準)によりファイルをインクルードする、include コンパイ ラ・デ ィレ ク テ ィ ブ をサ ポ ー ト しま す。相 対 パ ス を検 索 す る 場合、 Quartus II ソフトウェアはまずプロジェクト・ディレクトリを基準に検 索します。ソフトウェアがファイルを見つけられない場合、ファイルの ディレクトリの場所を基準に検索します。 Verilog 2001のサポート Quartus II ソフトウェアは、Verilog-2001 のライブラリとコンフィギュ レーションをサポートしません。 SystemVerilogのサポート Quartus II ソフトウェアは、以下の SystemVerilog 構造をサポートして います。 ■ ビルトイン・データ型 logic、bit、byte、shortint、longint、int ■ enumを使用する列挙データ型(enum メソッドはサポートされない) ■ structを使用する構造データ型 ■ アンパック配列とパック配列(複数次元ではパック配列はサポート されない) ■ typedef を使用するユーザ定義型(グローバルな typedefs または forward 型の宣言はサポートされない) ■ コーディング構造 always_comb、always_latch、always_ff ■ アサインメント演算子 +=、-=、*=、/=、%=、&=、|=、^=、<<=、 >>=、<<<=、>>>= ■ インクリメント ++ とデクリメント --■ アサインメント・パターン(デフォルト、メンバ名、またはタイプ を指定するパターンはサポートされない)

■ case 文のキーワード unique と priority

■ 関数 / タスク引数のデフォルト値 Verilog-2001 規格に準拠して記述されたデザインは、System Verilog規格により新しい予約キーワードがいくつか追加され るために、System Verilog 設定を使用したコンパイルは成功 しない場合があります。各言語規格の予約語のリストについ ては、Quartus II ヘルプを参照してください。

(7)

言語サポート Verilog HDLのマクロ Quartus II ソフトウェアは、Verilog HDL 規格に従ってコンパイラ・ディ レクティブ `define をサポートしています。また Quartus II ソフトウェ アには、同等の Verilog HDL マクロの機能もあり、GUI またはコマン ド・ラインからオンまたはオフにすることができます。 GUI での Verilog マクロの指定

GUI でマクロを指定するには、Assignments メニューで Settings をク リックします。Category で Analysis & Synthesis Settings を展開し、

Verilog HDL Input をクリックします。Verilog HDL macro で、Setting

ボックスにマクロ名を入力し、Add をクリックします。 コマンド・ラインでの Verilog マクロの指定

コマンド・プロンプトで、例 7–1に示すコマンドを入力し、Verilog マク ロを指定します。

例 7–1. Verilog マクロを指定するためのコマンド構文

quartus_map <Design name> --verilog_macro= "<Macro Name>=<Macro Setting>" 

例えば、例 7–2のコマンドは Verilog HDL ソース・コードで `define a=2 を指定した場合と同じ効果があります。

例 7–2. Verilog マクロ a = 2 の指定

quartus_map my_design --verilog_macro="a=2" 

複数のマクロを指定するには、例 7–3に示すようにオプションを複数回 繰り返します。

例 7–3. Verilog マクロ a = 2 & a = 3 の指定

quartus_map my_design --verilog_macro="a=2" --verilog_macro="b=3" 

VHDL

のサポート

Quartus II コンパイラの解析および合成モジュールは、以下の VHDL 規 格をサポートします。

■ VHDL 1987(IEEE 規格 1076-1987)

(8)

特定の構文機能および言語構造について詳しくは、Quartus II ヘルプを 参照してください。

すべてのファイルに VHDL のデフォルト・バージョンを指定するには、 以下のステップを実行してください。

1. Assignments メニューで Settings をクリックします。

2. Settings ダイアログ・ボックスの Category で、Analysis & Synthesis

Settingsを展開し、VHDL Inputを選択してからOKをクリックします。 3. VHDL Input ページの VHDL version で、適切なバージョンを選択 し、OK をクリックします。 4. また、各デザイン・ファイルについて、合成ディレクティブを使用 して VHDL のバージョンを指定することもできます。 詳しくは、7–26 ページの「各デザイン・ファイルの Verilog および VHDL バージョンの指定」を参照してください。Quartus II コンパイラはデフォ ルトで、VHDL 1993 規格を使用します。 本書で示す VHDL コード・サンプルは、VHDL 1993 規格に 従っています。 VHDLのライブラリ Quartus II ソフトウェアは、標準 IEEE ライブラリと、多数のベンダー固 有の VHDL ライブラリを備えています。またユーザ独自の VHDL デザ イン・ユニットを格納するための、カスタム VHDL ライブラリを作成す ることもできます。 IEEE ライブラリには、標準のVHDL パッケージ、std_logic_1164、 numeric_std、numeric_bit、math_real が含まれています。STD ライブラリは VHDL 言語規格の一部を構成し、パッケージ standard (デフォルトですべてのプロジェクトにインクルード)と textio を格 納しています。古いデザインとの互換性のために、Quartus II ソフトウェ アは以下のベンダー固有のパッケージおよびライブラリもサポートして います。

IEEE ライブラリの、std_logic_arith と std_logic_unsigned

などの Synopsys 社のパッケージ

ARITHMETIC ライブラリの std_logic_arith などの

(9)

言語サポート

ALTERA ライブラリのアルテラのプリミティブ・パッケージ

altera_primitives_components(GLOBAL と DFFE などのプ リミティブの場合)と maxplus2(MAX+PLUS®II プリミティブの レガシー・サポートの場合) ■ アルテラ・メガファンクション・パッケージ。ALTERA_MF ライブ ラリの altera_mf_components と stratixgx_mf_components (LCELL を含むアルテラ固有のメガファンクション)と、LPM(library of parameterized modules)ファンクション用 LPM ライブラリの lpm_components サポートされるライブラリとパッケージのリストについては、Quartus II ヘルプを参照してください。 Quartus II ソフトウェア・バージョン 5.1 以降、 altera_mf_componentsパッケージではなく、 altera_primitives_componentsパッケージから、 GLOBALや DFFE などのアルテラ・プリミティブのためのコ ンポート宣言をインポートする必要があります。 ソフトウェアですべての関連するプロジェクト・ファイルが読み出せる ように、現在の Quartus II プロジェクトに各 VHDL ファイルを追加しま す。プロ ジェ クト にフ ァイ ルを 追加 する には、Project メニ ュー で

Add/Remove Files In Project をクリックします。

Quartus II ソフトウェア・バージョン 5.1 以降、VHDL デザイ ン・ファイルは任意の順序でプロジェクトに追加できます。 デフォルトでは、Quartus II ソフトウェアはすべての VHDL ファイルを 作業ライブラリにコンパイルします。VHDL ファイルが存在しないライ ブラリを参照する場合、またはライブラリに参照されたデザイン・ユニッ トが含まれていない場合は、作業ライブラリが検索されます。このデフォ ルト動作により、Quartus II ソフトウェアはほとんどの VHDL デザイン を最小限のセットアップでコンパイルできます。 VHDLデザイン・ファイルを特定のライブラリ内にコンパイルするには、 以下の方法のいずれかに従って、デザイン・ファイルごとにコンパイル 先ライブラリを指定します。 ■ Settings ダイアログ・ボックスを使用Quartus II 設定ファイル(.qsf)を使用 ■ Tcl コマンドを使用 ■ VHDL ファイルで、合成ディレクティブを使用

(10)

Quartus II コンパイラはファイルを解析すると、解析したデザイン・ユ ニットをファイルのディスティネーション・ライブラリに保存します。 同じ名前の複数のエンティティは、別々のカスタム・ライブ ラリにコンパイルされている場合でも、同じ VHDL デザイン に含めることはできません。 Setting ダイアログ・ボックスでのディスティネーション・ライブラリ 名の指定 VHDL ファイルの 1 つにライブラリ名を指定するには 1. Assignments メニューから Settings を選択します。

2. Settings ダイアログ・ボックスの Files ページで、File Name リスト のライブラリ名を指定します。

3. Properties をクリックします。

4. File Properties ダイアログ・ボックスの Type リストから、VHDL

File を選択します。 5. Library フィールドに、希望のライブラリ名を入力します。 6. OK をクリックします。 Quartus II 設定ファイルまたは Tcl を使用したディスティネーション・ ライブラリ名の指定 Quartus II 設定ファイルまたは Tcl コマンドで、VHDL_FILE アサインメ ントに -library オプションを使用して VHDL ライブラリ名を指定で きます。 例えば、以下の Quartus II 設定ファイルまたは Tcl アサインメントでは、 Quartus II ソフトウェアが my_file.vhd を解析し、その内容(デザイン・ ユニット)を VHDL ライブラリ my_lib に保存することを指定します。 例 7–4. ディスティネーション・ライブラリ名の指定

set_global_assignment VHDL_FILE my_file.vhd –library my_lib

Tcl スクリプトについて詳しくは、7–72 ページの「スクリプトのサポー ト」を参照してください。

VHDL ファイルでのディスティネーション・ライブラリ名の指定

(11)

言語サポート 成ディレクティブを使用できます。このディレクティブは、文字列引数 としてディスティネーション・ライブラリ名のみを使用します。プライ マリ・デザイン・ユニットのコンテキスト句の前の VHDL コメント(す なわち、パッケージ宣言、エンティティ宣言、または設定)に、合成ディ レクティブでサポートされるキーワードのいずれか(すなわち altera、 synthesis、pragma、synopsys、または exemplar)を使用して、 libraryディレクティブを指定します。 合成ディレクティブの指定について詳しくは、7–25 ページの「合成ディ レクティブ」を参照してください。 libraryディレクティブは、デフォルトのライブラリ・ディスティネー ション work、Settings ダイアログ・ボックスにより現在のファイルに 対して指定されたライブラリ設定、既存の Quartus II 設定ファイルの設 定、Tcl インターフェイスで行った設定、または現在のファイルの以前の libraryディレクティブよりも優先されます。このディレクティブは、 ファイルの最後まで、または次の library 合成ディレクティブまで有 効です。 例 7–5 では、library 合成ディレクティブを使用して、デザイン・ユ ニット my_entity を含む my_lib と呼ばれるライブラリを作成してい ます。 例 7–5. library 合成ディレクティブの使用

-- synthesis library my_lib library ieee;

use ieee.std_logic_1164.all; entity my_entity(...)

end entity my_entity;

Settings ダイアログ・ボックスでライブラリ名を指定する、既 存の Quartus II 設定ファイルを編集する、または Tcl インター フェイスを使用する、のいずれかの方法で、あるソース・ファ イルのすべてのデザイン・ユニットに対して 1 つのディスティ ネーション・ライブラリを指定できます。library ディレク ティブを使用して、ソース・ファイル内のディスティネーショ ン VHDL ライブラリを変更する場合、1 つのファイル内のデ ザイン・ユニットを 1 つのライブラリではなく、他のライブ ラリに編成することもできます。 デザイン・ユニット内でライブラリ・ディレクティブを使用する場合、 Quartus II ソフトウェアはエラーを出力します。

(12)

AHDL

のサポート

Quartus II コンパイラの解析 & 合成モジュールは、アルテラ・ハード ウェア記述言語(AHDL)を完全にサポートします。

AHDL デザインではテキスト・デザイン・ファイル(.tdf)が使用され ます。AHDL の include 文を使用すると、AHDL インクルード・ファ イル(.inc)をテキスト・デザイン・ファイルにインポートできます。ア ルテラでは、Quartus II ソフトウェアに付属するすべてのメガファンク ションに AHDL インクルード・ファイルを提供しています。 特定の構文機能および言語構造について詳しくは、Quartus II ヘルプを 参照してください。 AHDL 言語は、この章で説明する合成ディレクティブも属性 もサポートしていません。

回路図によるデザイン入力のサポート

Quartus II コンパイラの解析 & 合成モジュールは、回路図によるデザイ ン入力のためのブロック・デザイン・ファイル(.bdf)を完全にサポー トします。 Quartus II ソフトウェアのブロック・エディタを使用して、ブロック・ デザイン・ファイルの作成と編集を行い、MAX+PLUS II ソフトウェア からインポートしたグラフィック・デザイン・ファイル(.gdf)を開き ます。シンボル・エディタは、ブロック・シンボル・ファイル(.bsf)を 作成および編集し、MAX+PLUS II シンボル・ファイル(.sym)を開く のに使用します。これらの MAX+PLUS II のレガシー・フォーマットは、 Quartus II のブロック・エディタとシンボル・エディタを使用して読み 込みと編集できますが、Quartus II ソフトウェアはこれらのフォーマッ トを BDF ファイルまたは BSF ファイルとして保存します。 回路図のデザインの作成と編集について詳しくは、Quartus II ヘルプを 参照してください。 回路図による入力方法では、この章で説明する合成ディレク ティブや属性はサポートしていません。

(13)

インクリメンタル・シンセシス

インクリメン

タル・シンセ

シス

Quartus II ソフトウェアのインクリメンタル・シンセシス機能は、デザ インを複数のパーティションに分割可能にして、インクリメンタル・デ ザインのデザイン階層を管理します。インクリメンタル・シンセシスに より、デザインのコンパイル時に、更新されたデザインのパーティショ ンのみ再合成され、合成時間と実行時のメモリ使用を抑えることができ ます。デザイン・パーティションを、他のデザイン・パーティションに 影響を与えることなく変更および再合成できます。これは変更されてい ないパーティションのすべての登録済みノードと組み合わせノードにつ いて、合成時にノード名が変更されないことを意味します。 これまでは、ロジック・シンセシスとテクノロジ・マッピングの前に、 階層構造デザインはロジック・ゲートの単一ネットリストにフラット化 されていました。ただし、インクリメンタル・シンセシスにより、階層 構造デザインをその階層境界に沿って分割できます。個々の階層パー ティションは、Quartus II ソフトウェアで個別に合成およびマッピング さ れ ま す。階 層 パ ー テ ィ シ ョ ン は、次 に 結 合 ま た は マ ー ジ さ れ、 Quartus II コンパイル・フローのフィッティングを含む以降のステージ のためにフラット化されたネットリストを形成します。各パーティショ ンのマッピングされたネットリストは、Quartus II ソフトウェアで保存 されます。したがって、あるパーティションのソース・コードがデザイ ン・サイクルの間に変更された場合、変更されたパーティションのみが デザインの次のコンパイル時に再合成されます。 インクリメンタル・シンセシスを単独で使用するか、あるいは変更され ていないパーティションの配置情報および潜在的な配線情報も維持する フル・インクリメンタル・コンパイル・フローも使用できます。 この章ではインクリメンタル・シンセシスについてのみ説明します。フ ル・インクリメンタル・コンパイル・フローについて詳しくは、Quartus II ハンドブック Volume 1、階層ベースおよびチーム・ベースのデザイン のための Quartus II インクリメンタル・コンパイルの章を参照してくだ さい。 図 7-2のフロー・チャートに、インクリメンタル・シンセシス・フロー のステップを示します。

(14)

図 7-2. Quartus II インクリメンタル・シンセシス・フローを使用したデ ザイン・フローの概要

インクリメンタル・シンセシスのパーティション

パーティションは、デザインでインクリメンタルに合成する部分を表し ます。パーティションは、階層境界で区切る必要があるため、階層ブロッ ク内のロジックの一部になることはできません。パーティションが宣言 されると、そのパーティション内のすべての階層ブロックは、同じパー ティションに含まれるようになります。既存のパーティション内に、階 層ブロックの新しいパーティションを作成することができます。この場 合、新しいパーティションとして指定されたブロックは、高レベル・パー ティションの一部を構成できなくなります。 図 7-3では、階層構造エンティティ B と F は、エンティティ A、B、C、 D、E、F から構成される完全なデザインのパーティションを形成します。 Representation A の影付きボックスは、「ツリー」表示された階層のデザ イン・パーティションを示します。Representation B では、下位レベル のエンディティは高レベル・エンティティ内部で表され、パーティショ ンは異なる色の影で表されます。トップレベルのパーティション Top に は、デザインでトップレベルのエンティティと、別のパーティションの 一部として定義されていない任意のロジックが自動的に含まれます。 トップレベルのデザイン・ファイルは、その下にある階層構造エンティ ティの単なるラッパになることも、独自のロジックを含むこともできま す。この例では、トップレベルのエンティティ A のパーティションに は、下位レベルのエンティティの 1 つ C のロジックも含まれています。 エンティティ F は専用のパーティション内にあるため、トップレベル・ パーティションの一部として扱われません。もう一つの独立したパー ティション B には、エンティティ B、D、E のロジックが含まれます。

Perform Analysis & Elaboration

Repeat until Satisfied with Partitions

Repeat as Needed During Design & Debugging Stages

Perform Complete Compilation (All Partitions are Compiled)

Make Changes to Design

Perform Incremental Compilation (Partitions are Compiled if Required)

Create Design Partitions Turn on Integrated Synthesis

(15)

インクリメンタル・シンセシス 図 7-3. 階層構造デザインのパーティション

階層境界を維持するためのパーティション

合成プロセスを通じて階層境界を維持する必要がある場合は、パーティ ションを使用します。例えば、フォーマル検証を実行する場合、パーティ ションを使用して、特定のデザイン階層間で最適化が行われないように する必要があります。 Quartus II 合成の間、階層境界を維持するセットアップをデザインで行 う必要がある場合は、次の項7–16 ページの「インクリメンタル・シンセ シスのためのデザインの準備」で説明するステップに従ってください。 必要であれば、(インクリメンタル・シンセシスのみではなく)フル・イ ンクリメンタル・コンパイルでパーティションを使用して、全体のコン パイル・プロセスを通じて境界を維持することができます。 Quartus II ソフトウェア・バージョン 6.0 以降、アルテラでは 階層境界の維持ロジック・オプションの代わりに、デザイン・ パーティション・アサインメントの使用を推奨しています。階 層境界の維持は、Quartus II ソフトウェアの将来バージョン では削除される可能性があります。 Partition Top Representation A Representation B Partition B Partition F D D E B B C A A F C E FE

(16)

インクリメンタル・シンセシスのためのデザインの準備

インクリメンタル・シンセシス用にパーティションを使用してデザイン をセットアップするには、デザイン・パーティションを特定し、以下の ステップを使用してインクリメンタル・シンセシスをオンにします。 1. Precessing メニューで、Start をポイントし、Start Analysis &

Elaboration をクリックしてデザインをエラボレートするか、この

ステップを含むコンパイル・フローを実行します。これにより、 Quartus II ソフトウェアがデザインの階層を識別できます。 2. PARTITION_HIERARCHY アサインメントを適切なインスタンスに適

用して、デザイン内のパーティションを識別します。これは Project

Navigator の Compilation Hierarchy 内にあるインスタンスのリスト

を使用して実行できます。Project Navigator でインスタンスを右ク リックし、Set as Design Partition をクリックします。

パーティションとして設定された各インスタンスの横に、イ ンクリメンタル・コンパイルのアイコンが表示されます。 3. Assignments メニューで Settings をクリックします。Settings ダイ

アログ・ボックスが表示されます。

4. Settings ダイアログ・ボックスの Compilation Process Settings ペー ジで、Incremental compilation セクションの Incremental synthesis

only を選択します。

最初のパーティションを指定した後、インクリメンタル・コ ンパイルを有効にするかどうかを尋ねるダイアログ・ボック スが表示されます。Incremental synthesis only をクリックし て、インクリメンタル・シンセシスをオンにします。

GUIで既存のPARTITION_HIERARCHYアサインメントを削除するには、

Project Navigator でイ ンス タン スを右 ク リッ クし、Set as Design Partition を選択してオプションをオフにします。

インクリメンタル・シンセシスを使用したデザインの合成

インクリメンタル・シンセシスが有効になると、通常の状況では、すな わち Processing メニューから Start Compilation をクリックした場合、 またはツールバーで Start Compilation を選択した場合は、デフォルト のコンパイル・プロシージャになります。

(17)

インクリメンタル・シンセシス コンパイルの間、各パーティションは個別に合成され、次にパーティショ ンがマージされて、Quartus II コンパイル・フローのフィッティングを 含む以降のステージのために、フラット化されたネットリストが作成さ れます。 以降に解析と合成を繰り返す場合、Quartus II ソフトウェアは内部 チェックサム計算を使用して、ファイルを再合成する必要があるかどう かを判断します。ソース・ファイルの内容と、合成およびネットリスト 最適化設定の値がチェックされます。 フル・インクリメンタル・コンパイル・フローを使用する場合、既存の ネットリストの使用を指定していれば、設定を変更しても、デザインは 自動的に再合成されません。フル・インクリメンタル・コンパイルとイ ンクリメンタル合成の違いについて詳しくは、Quartus II ハンドブック Volume 1、階層ベースおよびチーム・ベースのデザインのためのQuartus II インクリメンタル・コンパイルの章を参照してください。 Quartus II ソフトウェアは変更されたソース・コードを含むパーティ ションのみ、または合成あるいはネットリスト最適化設定の変更のみを 再合成します。トップレベルのパーティションのファイルを変更したが、 影響が及ぶ下位レベルのパーティションが存在しない場合、Quartus II ソフトウェアはトップレベルのパーティションのみ再合成します。 変更されていないパーティションの合成結果は常に維持され、新たに合 成されたパーティションが変更されていないパーティションにマージさ れます。 合成およびマージ・コマンドを使用した合成

Processing メニューの Start サブメニューから利用できる、または Tools メニューから Compilation Tool を選択して利用できる個々のコンパイ ル・ステップを使用してデザインをコンパイルする場合は、合成コマン ドとマージ・コマンドを別々に使用します。

インクリメンタル・シンセシスが有効に設定されている場合、Processing メニューで Start をポイントし、Start Analysis & Synthesis をクリック して各パーティションを個別に合成します。この後、パーティションを マージして、Quartus II コンパイル・フローのフィッティングを含む以 降のステージのためにフラット化されたネットリストを作成する必要が あります。Processing メニューで、Start をポイントし、Start Partition

Merge をクリックします。解析と合成をインクリメンタルに繰り返した

後、新たに合成されたパーティションを変更されていないパーティショ ンにマージします。

(18)

完全な再合成の強制

インクリメンタル・シンセシス・フローではソース・コードとアサイン メントへの変更が識別され、変更されたパーティションのみ再合成され るため、通常はすべてのソース・ファイルを完全に再合成する必要はあ りません。 完全な再合成を強制的に実行する場合は、Settings ダイアログ・ボック スの Compilation Process ページの Incremental compilation セクショ ンから、Off を選択します。次にデザイン全体を再合成し、(必要に応じ て)Incremental synthesis only を再びオンにします。あるいは、追加 の合成実行の内容を保存する場合、小さな変更を行って各デザイン・パー ティションで 1 つ以上のファイルを保存すれば、次の解析および合成で Quartus II ソフトウェアが変更と再合成を検出できます。

インクリメンタル・シンセシスを使用する場合の検討事項

と制限事項

インクメンタル・シンセシスを効果的に使用するには、デザインの構造 を計画する際に考慮すべきいくつかの事項があります。また、他の Quartus II 機能と一緒にインクリメンタル・シンセシスを使用する際の 制限もあります。この項では、以下の検討事項と制限事項について説明 します。 ■ 階層の検討事項 ■ メガファンクション・パーティションの制限 ■ リソース・バランシング ■ Altera LogicLock™ デザイン手法を使用したノード・ロケーションの バックアノテーション ■ SignalTap®II ロジック・アナライザ 階層の検討事項 デザインを計画する場合は、各パーティションのサイズとスコープを考 慮し、またデザインの進展に従って、デザインの異なる部分が変化する 可能性を検討してください。 デザイン階層の分割についてのガイドラインは、「Quartus II ハンドブッ ク Volume 1」の「Design Recommendations for Altera Devices」の章階 層構造デザインの分割の項を参照してください。

以下の重要な階層構造デザインの検討事項に従ってください。

■ 各ブロックのすべての入力と出力を登録します。これによって、パー ティション境界を通過する信号の遅延ペナルティを回避できます。

(19)

インクリメンタル・シンセシス 実際には、このような登録は困難な場合がありますが、この 原則に厳密に従うことで、インクリメンタル・フロー使用時 のタイミングの劣化が軽減され、面積が増加します。登録に より、分割で防止されるパーティション間最適化の必要性が 少なくなります。 ■ 階層境界が直接トップレベルのピンに接続している場合を除き、こ れらの境界でトライ・ステート信号や双方向ポートを使用しないで ください。下位レベルのブロックで境界のトライ・ステートを使用 する場合は、合成によってトライ・ステートが階層のトップレベル に押し上げられ、デバイスの出力ピンのトライ・ステート・ドライ バが利用されます。これには階層全体の最適化が必要になるため、 ブロック・レベルまたはインクリメンタル・デザイン手法では、下 位レベル境界のトライ・ステート信号は制限されます。 インクリメンタル・シンセシスを使用する場合、すべてのディスティ ネーション・ロジックが同じパーティションに含まれている場合に のみ、内部トライ・ステートがサポートされます。この場合、解析 と合成はマルチプレキシング・ロジックを使用して、内部トライ・ス テート信号を実装します。トップ・レベルで双方向ピンをドライブ する双方向ポートの場合、双方向 I/Oセルを形成するすべてのロジッ クが同じパーティションに存在しなければなりません。 ■ ロジックはパーティション境界をまたがって合成または最適化され ないことに注意してください。すなわち、パーティション間では一 定の値(GND に設定された信号など)は伝播されません。 メガファンクション・パーティションの制約 Quartus II ソフトウェアは、パーティションのメガファンクション・イ ンスタンス化はサポートしません。MegaWizard® Plug-In Manager を使

用してメガファンクション・バリエーションをカスタマイズする場合、 MegaWizard で生成されたラッパ・ファイルは、メガファンクションを インスタンス化します。MegaWizard で生成されたメガファンクション・ カスタム・バリエーションのラッパ・ファイルに対して、パーティショ ンを作成できます。 Quartus II ソフトウェアは、推測されたメガファンクションに対する パーティションの作成をサポートしていません(すなわち、ここではソ フトウェアはメガファンクションを使用してデザインにロジックを実装 します)。ロジックに対するモジュールまたはエンティティが推測される 場合、デザインのその階層レベルにパーティションを作成できます。 Quartus II ソフトウェアは、コンパイル中にダイナミックに生成される Quartus II 内部階層に対しては、メガファンクションの内容を実装する ためのパーティションの作成はサポートしていません。

(20)

リソース・バランシング パーティション間でリソース・バランシングを手動で実行する必要が生 じる場合があります。インクリメンタル・シンセシスを使用する場合、 各パーティションは別々に合成され、他のパーティションで使用される リソースに関するデータは含まれません。これは合成の間に、個々のパー ティションでデバイス・リソースが過剰に使用される可能性があること を意味し、パーティションがマージされたときにデザインがターゲット・ デバイスに適合しなくなる場合があります。 例えば、通常の合成フローでは、DSP ブロックまたは RAM ブロックが 過剰に使用された場合、Quartus II コンパイラはリソース・バランシン グを実行し、一部のロジックを LE やアダプティブ・ロジック・モジュー ル(ALM)などの通常のロジック・セルに変換することができます。他 のパーティションで使用されるリソースに関するデータがない場合、各 パーティションのロジックが特定のデバイス・リソースを最大限に活用 して、すべてのパーティションがマージされたときにデザインが適合し なくなる可能性があります。この場合、Quartus II 合成オプションを使 用して、DSP ブロックまたは RAM ブロックを使用するメガファンク ションの推測を制御することにより、手動でリソースのバランスをとる ことができる場合があります。 リソース・バランシングについて詳しくは、7–42 ページの「メガファン クション推測制御」を参照してください。また、MegaWizard Plug-In Manager を使用して、専用ハードウェア・ブロックの代わりに、通常の ロジックを使用するように RAM または DSP メガファンクションをカス タマイズすることも可能です。 リソース・バランシングおよび使用リソースの低減に関するヒントは、 「Quartus II ハンドブック Volume 2」の「エリアおよびタイミングの最 適化」の章の該当する項を参照してください。 コンパイル結果の維持 アルテラでは、配置配線情報、およびデザインの変更されていない部分 の性能を維持する必要があるトップダウンおよびボトムアップ・コンパ イル・フローでは、フル・インクリメンタル・コンパイルを使用するこ とを推奨しています。フル・インクリメンタル・コンパイル機能では、 下位レベルのデザイン・ファイルをエクスポートおよびインポートして、 チーム・ベースのデザイン・フローまたは異なるブロックを個別に最適 化する必要があるデザイン・フローを有効にすることができます。 結果の維持と、フル・インクリメンタル・コンパイルを使用したデザイ ン・ブロッ クのエクス ポートまた はインポ ートについ て詳しくは、 「Quartus II ハンドブック Volume 1」の「階層ベースおよびチーム・ベー スのデザインのための Quartus II インクリメンタル・コンパイル」の章 を参照してください。

(21)

Quartus IIの合成オプション

OpenCore Plus MegaCoreファンクション

OpenCore® Plus MegaCore®ファンクション供給に関連する回路は、現

在インクリメンタル・シンセシスおよびフル・インクリメンタル・コン パイルに対応していません。

Quartus II

の合

成オプション

Quartus II ソフトウェアは、合成プロセスの制御と、デザインの最適な 結果の達成に役立つ多数のオプションを提供しています。7–22 ページの 「合成オプションの設定」の項では、最も一般的なグローバル設定および オプションを設定できる合成設定ダイアログ・ボックスについて説明し、 Quartus II ロジック・オプション、合成属性、および合成ディレクティ ブの 3 種類の合成オプションを定義しています。他の項では、Quartus II ソフトウェアの以下の一般的な合成オプションを説明し、適用可能な箇 所での各オプションの使用方法を示す HDL 例を提供します。 ■ 各デザイン・ファイルの Verilog および VHDL バージョンの指定 ■ Optimization Technique

■ Speed Optimization Technique for Clock Domains

■ PowerPlay Power Optimization

■ State Machine Processing

■ syn_encoding 属性を使用したステート・アサインメントの手動によ る指定

■ enum_encoding 属性を使用した列挙型の手動による指定

■ Preserve Hierarchical Boundary

■ Restructure Multiplexers

■ Power-Up Level

■ Power-Up Don’t Care

■ Remove Duplicate Logic

■ Remove Duplicate Registers

■ Remove Redundant Logic Cells

■ Preserve Registers

■ Noprune Synthesis Attribute/Preserve Fanout Free Node

■ Keep Combinational Node/Implement as Output of Logic Cell

■ Maximum Fan-Out

■ メガファンクション推測制御

■ RAM Style & ROM Style—for Inferred Memory

■ RAM Initialization File—for Inferred Memory

■ Multiplier Style—for Inferred Multipliers

■ Full Case

■ Parallel Case

■ Translate Off & On

■ Ignore Translate Off

(22)

その他の Quartus II の合成属性を使用した、Verilog HDL または VHDL コードでのピン関連のアサインメントの作成とその他のエンティティ・ オプション(ロジック・オプションとしてのみ使用可能)の設定につい て詳しくは、7–54 ページの「HDL ソース・コードでのその他の Quartus II オプションの設定」を参照してください。

合成オプションの設定

合成オプションは Settings ダイアログ・ボックス、または Quartus II ソ フトウェアのロジック・オプションを使用して設定できます。あるいは、 合成属性と合成ディレクティブを HDL ソース・コード内で使用できま す。

Settingsダイアログ・ボックスの Analysis & Synthesis ページ

Assignments メニューで、Settings をクリックして Settings ダイアロ グ・ボックスを開きます。Analysis & Synthesis Settings ページでは、 プロジェクト全体に適用されるグローバル合成オプションを設定できま す。これらのオプションは後の項で説明します。 Quartus IIロジック・オプション Quartus II ロジック・オプションは、合成の多くの側面と、配置配線プ ロセスを制御します。Quartus II グラフィカル・ユーザ・インタフェー スでロジック・オプションを設定するには、ToolsメニューでAssignment Editor をクリックします。また対応する Tcl コマンドも使用できます。 Quartus II ロジック・オプションでは、ソース HDL コードを編集する ことなく、インスタンスまたはノード固有のアサインメントを設定でき ます。ロジック・オプションは、Quartus II ソフトウェアでサポートさ れるすべてのデザイン入力言語で使用できます。 合成属性 Quartus II ソフトウェアは、一般にプラグマとも呼ばれる Verilog HDL と VHDL の合成属性をサポートします。これらの属性は、標準 Verilog HDL コマンドでも VHDL コマンドでもありません。これらは、合成プ ロセスを特定の方法で制御する合成ツールでのみ使用されます。属性は 常に特定のデザイン・エレメントに適用され、HDL ソース・コードで適 用されます。一部の合成属性は、Quartus II ユーザ・インタフェースま たは Tcl から Quartus II ロジック・オプションとして利用することもで きます。この章の各属性の説明では、ユーザ・インタフェースで設定で きる対応する設定またはロジック・オプションが存在するかどうかがわ かります。HDL 合成属性でのみ指定できる属性もあります。HDL コー ドで指定する属性は、ユーザ・インタフェースにも、Quartus II 設定ファ

(23)

Quartus IIの合成オプション イル 内に も表 示さ れま せん。Quartus II ユ ーザ・イ ンタ フェ ース、 Quartus II 設定ファイル、または Tcl インタフェースから行ったアサイ ンメントまたは設定は、HDL コードを使用して合成属性で行ったアサイ ンメントまたは設定よりも優先されます。 Verilog-2001、SystemVerilog、VHDL の言語定義では、属性を指定す るための特定の構文が提供されます。ただし、Verilog-1995 HDL で は、コメントに属性アサインメントを埋め込む必要があります。属性 は、例7–6、7–7、7–8の構文を使用して任意のコードで入力できます。 <attribute>、<attribute type>、<value>、<object>、<object type> は変 数、カッコ内のエントリはオプションです。この章の例は、各構文の 形式を示しています。

Verilog HDL は大文字と小文字を区別するため、合成属性も 大文字と小文字を区別します。

例 7–6. Verilog-1995 HDL の合成属性

// synthesis <attribute> [ = <value> ]

または

/* synthesis <attribute> [ = <value> ] */

例 7–6 に示す Verilog-1995 コメント埋め込み属性は、項目の宣言のサ フィックス(すなわち後置)として使用する必要があります。また、セ ミコロンが必要な場合は属性の後に付けます。 行の最後でセミコロンが必要なときには、Verilog HDL では 開かれた 1 行コメントを使用できません。これは属性が適用 される HDL エレメントを明確にできないためです。例えば、 reg r; // synthesis <attribute>のような属性アサインメ

ントは、属性が次の行の一部として読み込まれる可能性があ るため作成できません。

同じインスタンスに複数の属性を適用するには、以下のように属性をス ペースで区切ります。

//synthesis <attribute1> [ = <value> ] <attribute2> [ = <value> ] 例えば、maxfan 属性を 16 に設定し(詳しくは7–40 ページの「Maximum Fan-Out」を参照)、my_reg と呼ばれるレジスタで preserve 属性(詳 しくは7–37 ページの「Preserve Registers」を参照)を設定する場合、以 下の構文を使用します。

(24)

上記に示す synthesis キーワード以外に、他の合成ツールとの互換の ためにキーワード pragma、synopsys、exemplar もサポートされま す。キーワード altera もサポートされます。このキーワードを使用す ると、Quartus II 統合合成でのみ認識され、同じ合成属性を認識する他 のツールでは認識されない合成属性を追加できます。 フォーマル検証ツールは、exemplar、pragma、altera キー ワードを認識しないため、フォーマル検証を使用する場合、こ れらの属性キーワードの使用は避けてください。

例 7–7. Verilog-2001 & System Verilog の合成属性

(* <attribute> [ = <mvalue> ] *) 例 7–7に示す Verilog-2001 属性は、宣言、モジュール項目、文、ポート 接続のプレフィックス(すなわち前置)として使用する必要があり、式 では演算子または Verilog HDL ファンクション名のサフィックス(すな わち後置)として使用する必要があります。 フォーマル検証ツールは構文を認識しないため、フォーマル 検証を使用するときには、Verilog-2001 属性構文はサポート されません。 同じインスタンスに複数の属性を適用するには、以下の例に示すように 属性をコンマで区切ります。

(* <attribute1> [ = <value1>], <attribute2> [ = <value2> ] *)

例えば、maxfan 属性を 16 に設定し(詳しくは7–40 ページの「Maximum Fan-Out」を参照)、my_reg と呼ばれるレジスタで preserve 属性(詳 しくは7–37 ページの「Preserve Registers」を参照)を設定する場合、以 下の構文を使用します。

(* preserve, maxfan = 16 *) reg my_reg;

例 7–8. VHDL の合成属性

attribute <attribute> : <attribute type> ;

attribute <attribute> of <object> : <object type> is <value>;

例 7–8に示すように、VHDL 属性は属性の型を宣言し、これを特定のオ ブジェクトに適用します。VHDL のデザインでは、サポートされるすべ ての合成属性は Altera ライブラリの altera_syn_attributes パッ ケージで宣言されます。このライブラリを VHDL コードから呼び出し、 以下のように合成属性を宣言できます。

(25)

Quartus IIの合成オプション LIBRARY altera; USE altera.altera_syn_attributes.all; 合成ディレクティブ QuartusII ソフトウェアは、一般にコンパイラ・ディレクティブまたは プラグマとも呼ばれる合成ディレクティブをサポートします。合成ディ レクティブは、Verilog HDL または VHDL コードにコメントとしてイン クルードできます。これらのディレクティブは、標準 Verilog HDL でも VHDL コマンドでもありませんが、合成ツールはこれらのディレクティ ブを使用して、特定の方法で合成プロセスを制御します。シミュレータ など他のツールは、これらのディレクティブを無視しコメントとして扱 います。 合成ディレクティブは、例7–9と7–10に示す以下の構文を使用して任意 のコードで入力できます。<directive> と <value> は変数、カッコ内のエ ントリはオプションです。この章の例は、各構文の形式を示しています。 Verilog HDL は大文字と小文字を区別するため、すべての合 成ディレクティブも大文字と小文字を区別します。 例 7–9. Verilog HDL の合成ディレクティブ

// synthesis <directive> [ =<value> ]

または

/* synthesis <directive> [ =<value> ] */

例 7–10. VHDL の合成ディレクティブ

-- synthesis <directive> [ =<value> ]

上記に示す synthesis キーワード以外に、Verilog HDL と VHDL の両 方で他の合成ツールとの互換用に pragma、synopsys、exemplar キー ワードがサポートされます。キーワード altera もサポートされます。 このキーワードを使用すると、Quartus II インテグレーテッド・シンセ シスでのみ認識され、同じ合成ディレクティブを認識する他のツールで は認識されない合成ディレクティブを追加できます。 フォーマル検証ツールはキーワード exemplar、pragma、 alteraを無視するため、Quartus II の結果とのミスマッチを 防ぐためにフォーマル検証を使用する場合は、これらのディ レクティブ・キーワードの使用は避けてください。

(26)

各デザイン・ファイルの Verilog および VHDL バージョン

の指定

一部のデザイン・ファイルの Verilog HDL または VHDL のデフォルト 入力バージョン(Settings ダイアログ・ボックスで指定)を上書きする ようにデザインで要求される場合があります。このような状況は、新し い標準で機能を利用する場合に生じます。Quartus II プロジェクトに、 これらの新しいキーワードでオブジェクトを宣言する古いデザイン・ ファイルが含まれている場合は、VERILOG_INPUT_VERSION または VHDL_INPUT_VERSION合成ディレクティブをこれらのファイルで使用 して、デフォルトの言語バージョンを上書きする必要があります。 特定のファイルの処理に使用される言語バージョンを制御するには、以 下の合成ディレクティブを使用します。 例 7–11. Verilog HDL デザイン・ファイル

// synthesis VERILOG_INPUT_VERSION <language version>

変数 <language version> は、以下の値のいずれかをとります。

■ VERILOG_1995

■ VERILOG_2001

■ SYSTEMVERILOG_2005

例 7–12. VHDL デザイン・ファイル

--synthesis VHDL_INPUT_VERSION <language version>

変数 <language version> は、以下の値のいずれかをとります。 ■ VHDL87 ■ VHDL93 VERILOG_INPUT_VERSIONまたは VHDL_INPUT_VERSION の合成ディ レ ク テ ィ ブ が 読 み 込 ま れ る と、フ ァ イ ル の 最 後 ま で、ま た は 次 の VERILOG_INPUT_VERSION または VHDL_INPUT_VERSION ディレク ティブに到達するまで、指定された現在の言語バージョンが変更されま す。 言語バージョンは、Verilog モジュールまたは VHDL デザイ ン・ユニットの中間で変更することはできません。

(27)

Quartus IIの合成オプション

Optimization Technique

Optimization Technique ロジック・オプションは、コンパイル中のロ ジック最適化の目標、すなわち最大速度性能または最小エリア使用の達 成、あるいは両者のバランスを試みるかどうかを指定します。表 7–1に、 デザイン・エンティティにのみ適用できる、このロジック・オプション の設定をリストします。このロジック・オプションは、Settings ダイア ログ・ボックスの Analysis & Synthesis Settings ページで、プロジェク ト全体に対して設定することもできます。

デフォルトの設定はデバイス・ファミリごとに異なり、一般に最適な面 積 / 速度のトレードオフに最適化されます。結果はデザインに依存し、 使用するデバイス・ファミリに応じて変化します。

Speed Optimization Technique for Clock Domains

Speed Optimization Technique for Clock Domains ロジック・オプショ

ンは、指定されたクロック・ドメイン内、またはクロック・ドメイン間 のすべての組み合わせロジックに対する速度の最適化を指定します。 特定のクロック信号にこのオプションが設定された場合、このクロック・ ドメインのすべてのロジックは合成時に速度が最適化されます。他のク ロック・ドメインの残りのデザインは、Analysis & Synthesis Settings で設定されるプロジェクト全体の Optimization Technique により合成 されます。このオプションはクロック信号間で設定することも可能です。 この場合は、最初のクロック・ドメインのレジスタから次のクロック・ ドメインのレジスタまでのパス内のロジックは、速度が合成されます。 速度の最適化で、このオプションがプロジェクト全体の設定よりも有利 な点は、デザインの面積への影響が少ないことです。これは速度が最適 化されるのが回路の小さな部分であるためです。これはクロック速度に 対しても効果があります。また、このオプションは階層ブロックの個別 の合成を強制するため、デザイン・エンティティでは Optimization Technique の設定よりも有利です。上記の強制により、面積が増加し、 表 7–1. Optimization Technique の設定 設定 説明 Area コンパイラはデザインをできるだけ小さくし、リソース利用を最小限に抑えます。 Speed コンパイラは、fMAXが最速のデザイン実装を選択します。 Balanced (1) コンパイラはエリアに対して、および速度に対してデザインを部分的にマップし、最適な速 度よりも fMAXをわずかに遅くして速度の最適化よりもエリア利用を優先します。 表 7–1の注: (1) バランスド最適化技法は、すべてのデバイス・ファミリでサポートされているわけではありません。

(28)

階 層 間 で 最 適 化 が 行 わ れ な い た め に 性 能 が 低 下 し ま す。Speed

Optimization Technique for Clock Domains オプションは、階層エン

ティティを個別に処理しないで、同じクロック・ドメイン内のロジック に対して階層境界を越えて最適化を実行できます。 このオプションは、タイミング要件を満たさないクロック・ドメインが 1 つ以上存在する場合に有効です。クロック・ドメイン内に障害が発生 したパスがある場合、そのクロック・ドメインのクロックにこのオプショ ンを設定できます。クロック・ドメイン間に障害が発生したパスがある 場合、クロック・ドメイン間でこのオプションを設定できます。 このオプションは以下のデバイス・ファミリで使用できます。 ■ Stratix®II ■ Stratix II GX ■ Stratix ■ Stratix GX ■ Cyclone™ II ■ Cyclone ■ HardCopy®II ■ HardCopy Stratix ■ MAX®II

PowerPlay Power Optimization

このロジック・オプションは、Analysis & Synthesis の電力中心のコン パイル設定を制御し、Analysis & Synthesis でデザインの消費電力の最 適化を行うプロセスを決定します。Assingments メニューで Settings を クリックし、Category 内で Analysis & Synthesis Settings をクリック する と、Analysis & Synthesis Settings ペー ジが 表示 され ます。 PowerPlay 電力最適化オプションでは、以下の 3 つの設定を使用できま す。

Off—Analysis & Synthesis は消費電力の最適化を実行しません。

Normal Compilation—Analysis & Synthesis はデザインの性能を下げ ずに、消費電力の最適化を実行します。

Extra Effort—Analysis & Synthesisは追加の消費電力の最適化を実行 しますが、デザインの性能が低下することがあります。

(29)

Quartus IIの合成オプション

State Machine Processing

このロジック・オプションは、ステート・マシンのコンパイルに使用さ れる処理スタイルを指定します。表 7–2に、ステート・マシン名または ステート・マシンを含むデザイン・エンティティに適用できる、このロ ジック・オプションの設定をリストしています。このオプションは、

Settings ダイアログ・ボックスの Analysis & Synthesis Settings ページ

で、プロジェクト全体に対して設定することもできます。

デフォルトのステート・マシンのエンコーディングはAutoですが、FPGA デバイスに one hit エンコーディング、CPLD に minimal bits エンコー ディングを使用します。これらの設定により平均的に最適な結果が得ら れますが、デザインによっては他のエンコーディング・スタイルの方が 適切な場合があるため、このオプションによりステート・マシンのエン コーディングを制御できます。 ステート・マシンの推測と正しいエンコーディングのための ガ イド ライ ンに つい ては、「Quartus II ハ ンド ブッ ク」の 「Recommended HDL Coding Styles」の章を参照してくださ

い。

Verilog HDL デザインで State Machine Processing ロジック・オプショ ンを User-Encoded に設定した場合、ステート定数にオリジナルのデザ イン値が使用されます。例えば、Verilog HDL デザインには以下のよう な宣言を含めることができます。 parameter S0 = 4'b1010, S1 = 4'b0101, ... ステート S0、S1、... が推測される場合、エンコーディング 4'b1010、 4'b0101、... が使用されます。

表 7–2. State Machine Processing の設定

設定 説明

Auto(デフォルト) コンパイラは、ステート・マシンに最適なエンコーディン

グと判断したものを選択できます。

Minimal Bits 最小ビット数を使用してステート・マシンをエンコードし

ます。

One-Hot One Hotスタイルでステート・マシンをエンコードします。

User-Encoded ユーザが指定する方法でステート・マシンをエンコードし

(30)

VHDL デザインで User-Encoded State Machine Processing オプション を使って独自のステート・エンコーディングを割り当てるには、VHDL では列挙リテラルが数値をとらないため、列挙型のエレメントに特定の バ イ ナ リ・エ ン コ ー デ ィ ン グ を 適 用 す る 必 要 が あ り ま す。 syn_encoding 合成属性を使用して、エンコーディング値を適用しま す。7–30 ページの「syn_encoding 属性を使用したステート・アサイン メントの手動による指定」を参照してください。

syn_encoding

属性を使用したステート・アサインメント

の手動による指定

Quartus II ソフトウェアは、列挙型からステート・マシンを推測し、7–29 ページの「State Machine Processing」に基づいて自動的にステート・エ ンコーディングを割り当てます。ただし、VHDL では列挙リテラルは数 値をとらないため、標準 VHDL コードで、ステート・マシンの説明に ユーザのエンコーディングを指定することはできません。

User-Encoded State Machine Processing 設定に独自のステート・エン

コーディングを割り当てるには、syn_encoding 合成属性を使用して、 列挙型のエレメントに特定のバイナリ・エンコーディングを適用する必 要があります。 例 7–13では、syn_encoding 属性はバイナリ・エンコーディングを列 挙型 count_state の状態に関連付けています。この例では、状態は値、 0 = 「11」、1 = 「01」、2 = 「10」、3 = 「00」によりエンコーディングされます。 例 7–13. syn_encoding VHDL 属性の例 ARCHITECTURE rtl OF my_fsm IS

TYPE count_state is (zero,one,two,three); ATTRIBUTE syn_encoding : STRING;

ATTRIBUTE syn_encoding OF count_state : TYPE IS"11 01 10 00"; SIGNAL present_state、next_state : count_state;

BEGIN

enum_encoding

属性を使用した列挙型の手動による指定

デフォルトでは、Quartus II ソフトウェアはユーザ定義のすべての列挙 型を one-hot でエンコーディングします。enum_encoding 属性を使用 すると、列挙型にロジック・エンコーディングを指定でき、デフォルト の one-hot エンコーディングを上書きしてロジック効率を高めること ができます。

図 7-1 に、Quartus II インテグレーテッド・シンセシスを使用した基本 的なデザイン・フローを示します。 図 7-1.  Quartus II インテグレーテッド・シンセシスを使用した Quartus II デザイン・フロー No VHDLVerilog HDL AHDL BDF Formal Verification Using Source Codeas Golden NetlistGate-LevelFunctionalSimulationPost SynthesisSimulation
図 7-2. Quartus II インクリメンタル・シンセシス・フローを使用したデ ザイン・フローの概要 インクリメンタル・シンセシスのパーティション パーティションは、デザインでインクリメンタルに合成する部分を表し ます。パーティションは、階層境界で区切る必要があるため、階層ブロッ ク内のロジックの一部になることはできません。パーティションが宣言 されると、そのパーティション内のすべての階層ブロックは、同じパー ティションに含まれるようになります。既存のパーティション内に、階 層ブロックの新しいパーティ

参照

関連したドキュメント

の多くの場合に腺腫を認め組織学的にはエオヂ ン嗜好性細胞よりなることが多い.叉性機能減

近年、めざましい技術革新とサービス向上により、深刻なコモディティ化が起きている。例え

欧州委員会は再生可能エネルギーの促進により 2030

Key words: Explicit bounds, retarded integral inequalities, two independent vari- ables, non-self-adjoint, Hyperbolic partial differential equations, partial

In this paper, using Steffensen’s inequality we prove several inequalities (The- orems 1.1 and 1.2) involving Taylor’s remainder.. In Sections 3 and 4 we give several applications

Moreover, he was able to establish in [5] an optimal general inequality for sub- manifolds in real space forms which involves his δ-invariants and the main ex- trinsic

Weighted analytic centers are used to improve the location of standing points for the Stand and Hit method of identi- fying necessary LMI constraints in semidefinite programming..

このように雪形の名称には特徴がありますが、その形や大きさは同じ名前で