この資料は英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。こちらの日本語版は参考用としてご利用 ください。設計の際には、最新の英語版で内容をご確認ください。
の最適化
はじめに
Quartus®II ソフトウェアは、標準の Quartus II コンパイル・フローの過 程で実行される最適化に加えて、フィジカル・シンセシスを含む高度な ネットリスト最適化オプションを提供します。これらのオプションの効 果はデザインの構造によって異なりますが、ネットリスト最適化は、使 用される合成ツールに関係なく、デザインの性能を改善するのに役立ち ます。これらの最適化に対するデバイス・サポートはさまざまです。詳 しくは、該当する項を参照してください。 ネットリスト最適化オプションは、アルテラ固有のプリミティブでデザ インを記述するネットリスト(atom ネットリスト)を使って適用され ます。atom ネットリスト・ファイルが取り得る形式は、サードパーティ 合成ツールで生成される Electronic Design Interchange Format ファイル (.edf) またはVerilog Quartus マッピング・ファイル (.vqm)、あるいは Quartus II ソフトウェアが内部で使用するネットリストです。ネットリ スト最適化は、合成時またはフィッティング時に、Quartus II コンパイ ル・フローの異なるステージで適用されます。 合成ネットリスト最適化は、Quartus II コンパイル・フローの合成ステー ジで行われます。合成ネットリスト最適化では、サードパーティ合成ツー ルからの合成ネットリスト出力の変更、または Quartus II 合成機能の中 間ステップ(最適化のうちの 1 つはサードパーティ合成ネットリストに のみ適用されます)としての変更が行われます。これらのネットリスト の変更は、選択した最適化手法に応じて、面積または速度の点でメリッ トが得られます。 フィジカル・シンセシスの最適化は、Quartus II コンパイル・フローの フィッタ・ステージで行われます。これらの最適化により、ネットリス トに対して配置固有の変更が行われ、特定のアルテラ・デバイスの性能 結果が改善されます。 この章では、Quartus II ソフトウェアでのネットリスト最適化によって、 デザインをどのように変更でき、また結果の質を向上させるのにどのよ うに役立てることができるかについて説明します。11–3 ページの「合成 ネットリスト最適化」および11–12 ページの「フィジカル・シンセシス 最適化」の項では、適用可能な最適化がどのように機能するかについて 説明しています。この章では、さらに、バック・アノテーションによる コンパイル結果の維持、および新しいネットリストの書き出しについて の情報を提供し、またさまざまなオプションを適用するためのガイドラ インを示します。 QII52007-7.1.0合成ネットリスト最適化オプションまたはフィジカル・シンセシ ス・オプションをオンにすると、デザイン内のプリミティブの ノ ー ド 名 を 変 更 す る こ と が で き ま す。LogicLock™ ま た は SignalTap®II ロジック・アナライザやフォーマル検証など、固定 ノード名が必要な検証フローを使用する場合は、ノード名が変更 されている可能性があることを考慮しなければなりません。デザ イン・フローで固定ノード名が要求される場合、合成ネットリス ト最適化オプションとフィジカル・シンセシス・オプションをオ フにする必要があることもあります。 プリミティブ・ノード名は合成時に指定されます。ネットリスト 最適化が適用される場合、プリミティブの作成時および削除時に ノード名を変更できます。サード・パーティ合成ツールのロジッ クを維持するために適用されるハードウェア記述言語(HDL)の 属性は、Quartus II ソフトウェアが読み出す atom ネットリスト には書き込まれないので適用できません。Quartus II ソフトウェ アで合成を行う場合、Preserve Register(preserve)および Keep Combinational Logic(keep)属性を使用して、デザイン内の特 定のノードを維持することができます。
Quartus II ソフトウェアで合成時にこれらの属性を使用する方法につい て詳しくは、「Quartus II ハンドブック Volume 1」の「Quartus II の合 成機能」の章を参照してください。
合成
ネットリスト
最適化
合 成 ネ ッ ト リ ス ト 最 適 化 オ プ シ ョ ン を 表 示 お よ び 変 更 す る に は、 Assignments メニューの Settings をクリックします。図 11-1に示すよう に、Category リストで Analysis & Synthesis Settings を選択し、 Synthesis Netlist Optimizations を選択して、合成時にネットリスト最 適化を実行するためのオプションを指定します。
図 11-1. Synthesis Netlist Optimizations ページ
「WYSIWYG プリミティブ再合成」および11–6 ページの「ゲート・レベ ル・レジスタのリタイミング」の項では、これらの合成ネットリスト最 適化オプションと、デザインに対する結果の質を向上させるのに、どの ように役立てることができるかについて説明します。
WYSIWYG
プリミティブ再合成
デザインをアルテラ固有のプリミティブとして規定する atom ネットリ スト・ファイルがある場合、Perform WYSIWYG primitive resynthesis (using optimization technique specified in Analysis & Synthesis settings) 合成オプションを使用することができます。atom ネットリス ト・ファイルは、Electronic Design Interchange Format ファイルまたは サードパーティ合成ツールで生成された Verilog Quartus マッピング・ ファイルのいずれの形式でも構いません。このオプションを選択するに は、Assignments メニューの Settings をクリックします。Category リ ストで Analysis & Synthesis Settings を選択し、Synthesis Netlist Optimizations を選択して、さらに Perform WYSIWYG primitive resynthesis (using optimization technique specified in Analysis & Synthesis settings) をオンにします。デ ザインの一部についてのみ WYSIWYG 再合成を実行する場合は、アサインメント・エディタを使用 して Perform WYSIWYG primitive resynthesis ロジック・オプション をデザインの低レベル・エンティティに割り当てることができます。こ のオプションは、HardCopy®シリーズ、Stratix®シリーズ、Cyclone®シ リーズ、MAX®II、または APEX™ シリーズのデバイス・ファミリで使 用できます。
Perform WYSIWYG primitive resynthesis オプションは、Quartus II ソフ トウェアに、atom ネットリストにあるロジック・エレメント(LE)の ロジック・ゲートへのマッピングを解除し、次にアルテラ固有のプリミ ティブにゲートをマッピングし直すよう指示します。この機能によって、 Quartus II ソフトウェアは、リマッピング・プロセス中のデバイス・アー キテクチャに固有の異なる手法を使用することができます。この機能は、 プロジェクトに指定された Optimization Technique を使用してデザイン をリマップします。 このオプションをオンにするには、Assignments メニューの Settings を クリックします。Category リストで、Analysis & Synthesis Settings を 選択します。Analysis & Synthesis Settings ページの Optimization Technique の下で、Speed、Area、または Balanced を選択して、Quartus II テクノロジ・マッパがデザインを最適化する方法を指定します。アルテ ラの多くのデバイス・ファミリでは、Balanced の設定がデフォルトに なっています。この設定はデザインのタイミング・クリティカルな部分 を速度について最適化し、残りのを面積について最適化します。 Optimization Technique オプションについて詳しくは、「Quartus II ハン ドブック Volume 1」の「Quartus II の合成機能」の章を参照してください。
図 11-2に、この機能に対する Quartus II ソフトウェアのフローを示しま す。
図 11-2. WYSIWYG プリミティブ再合成
Quartus II 合成機能を使用している場合、Perform WYSIWYG primitive resynthesis オプションは適用できません。Quartus II の合成では、アル テラ・プリミティブのマッピングを解除する必要はありません。それら のプリミティブはWYSIWYGプリミティブ再合成オプションを指定して 使用する手法を用いた合成ステップで、既にマッピングされています。 PerformWYSIWYG primitive resynthesis オプションでは、LCELL プリ ミティブまたは LE プリミティブとも呼ばれるロジック・セルと、通常 の I/O プリミティブ(レジスタを含むことがあります)に対してのみ、 マッピングの解除とリマップが行われます。DDR(Double Data Rate) I/O プリミティブ、メモリ・プリミティブ、デジタル信号処理(DSP) プリミティブ、およびキャリー / カスケード・チェイン内のロジック・ セルには影響を与えません。サードパーティ IP(Intellectual Property) などの暗号化された Verilog Quartus マッピング・ファイルまたは Electronic Design Interchange Format ファイルにも影響しません。 このオプションをオンにすると、atom ネットリストのプリミティブが 分割され、Quartus II ソフトウェア内でリマップされるので、サードパー ティ合成ツールからの Verilog Quartus マッピング・ファイルまたは Electronic Design Interchange Format ファイルのノード名が大幅に変更 されることがあります。レジスタの数を最小限に抑え、重複を削除する こともできますが、削除されないレジスタはリマップ後も同じ名前を有 します。 Un-Map Re-Map Atom Netlist Place & Route LE LE LE LE LE
Netlist Optimizations ロジック・オプションが Never Allow に設定さ れたノードまたはエンティティは、WYSIWYG プリミティブ再合成の際 に影 響 を受 け ませ ん。こ のロ ジ ック・オ プシ ョ ンを 適用 す るに は、 Assignments メニューの Assignment Editor をクリックします。このオ プションは、デザインの部分に対するWYSIWYG再合成を無効にします。
ゲート・レベル・レジスタのリタイミング
Perform gate-level register retiming オプションでは、タイミングのバ ランスを図るためのレジスタの移動が可能になるために、Quartus II ソ フトウェアはタイミング・クリティカル・パスと非クリティカル・パス 間の遅延をトレードオフできます。11–7 ページの図 11-3の例を参照して ください。このオプションは、Arria GX、HardCopy シリーズ、Stratix シリーズ、Cyclone シリーズ、MAX II、および APEX シリーズのデバイ ス・フ ァ ミ リ で 使 用 で き ま す。こ の オ プ シ ョ ン を 設 定 す る に は、 Assignments メニューの Settings をクリックします。Category リスト で、Analysis & Synthesis Settings を選択 し、Synthesis Netlist Optimizations を選択します。Synthesis Netlist Optimizations ページ で、Perform gate-level register retiming をオンにします。
Perform gate-level register retiming オプションがオンに設定されてい る場合、デザインの機能性は変化しません。ただし、デザインのいずれ かのレジスタに Power-Up Don’t Care ロジック・オプションが割り当て られている場合、このレジスタとロジックの移動により、パワーアップ 時のレジスタ値が変化することがあります。Power-Up Don’t Care ロ ジック・オプションは、デフォルトでグローバルにオフに設定されてい ます。このオプションのデフォルト設定を変更するには、Assignments メニューの Settings をクリックします。Category リストで、Analysis & Synthesis Settings を選択します。Analysis & Synthesis Settings ペー ジで、More Settings をクリックします。
アサインメント・エディタを使用して、個々のレジスタまたはエンティ ティに対して Power-Up Don't Care ロジック・オプションを設定できま す。Power-Up Level ロジック・オプションを用いて、個々のレジスタ またはエンティティにパワーアップ値を指定することもできます。パ ワーアップ値が明示的に割り当てられたレジスタは、他の値が明示的に 割り当てられているレジスタとは結合されません。 図 11-3にゲート・レベルでのレジスタのリタイミング例を示します。こ こで、レジスタを組み合わせロジックと相対的に移動させることによっ て、10 ns のクリティカルな遅延が低減されます。
図 11-3. ゲート・レベル・レジスタのリタイミング図
レジスタのリタイミングによって、ゲート・レベルでの変更が行われま す。サードパーティ合成ツールからの atom ネットリストを使用してい る場合、Perform WYSIWYG primitive resynthesis オプションも使用し て、素子レベル・プリミティブのゲートへのマッピングを解除し(これ によってレジスタのリタイミングの実行が可能になります)、ゲートをア ルテラ・プリミティブにマッピングし直さなければなりません。デザイ ンで Quartus II の合成機能が使用されている場合、リタイミングは合成 中にデザインがアルテラ・プリミティブにマップされる前に行われます。 デ ザ イ ン 内 で イ ン ス タ ン ス 化 さ れ た メ ガ フ ァ ン ク シ ョ ン は、常 に Quartus II ソフトウェアを使用して合成されます。 図 11-4に、Quartus II の合成機能、およびサードパーティ atom ネット リストの場合のデザイン・フローを示します。 図 11-4. ゲート・レベル・シミュレーション ゲート・レベル・レジスタのリタイミング・オプションでは、レジスタ を組み合わせゲート外でのみ移動させることができます。レジスタの移 動は、ユーザがインスタンス化した LCELL プリミティブ、メモリ・ブ ロック、DSP ブロック、またはユーザがインスタンス化したキャリー / カスケード・チェインを越えて行われることはありません。レジスタの リタイミングを実行する場合、キャリー / カスケード・チェインは常に そのままの状態に保たれます。
レジスタのリタイミングの 1 つの利点は、レジスタを組み合わせロジッ ク・ブロックの入力から出力に移動でき、潜在的にレジスタを組み合わ せる能力があることです。この場合、図 11-5に示すように、いくつかの レジスタが削除され、1 つが出力に作成されます。 図 11-5. レジスタのリタイミングによるレジスタの結合 レジスタのリタイミング・オプションでは、以下の条件が満たされてい る場合にこのような状況で、レジスタの移動と組み合わせのみ行うこと ができます。 ■ すべてのレジスタに同じクロック信号がある。 ■ すべてのレジスタに同じクロック・イネーブル信号がある。 ■ すべてのレジスタに、同じ条件下でアクティブになる非同期コント ロール信号がある。 ■ 1 つのレジスタにのみ VCC または GND 以外の非同期ロードがある。 リタイミングによって常に、組み合わせブロックの出力にあるレジスタ から、組み合わせブロックの入力に複数のレジスタを作成できます。こ の場合、新しいレジスタは同じクロックとクロック・イネーブルを持ち ます。同等な機能を提供するために、非同期コントロール信号とパワー アップ・レベルが前のレジスタから作られています。 ゲート・レベル・リタイミング・レポートは、レジスタのリタイミング 時に作成および削除されたレジスタのリストを提供します。このレポー トにアクセスするには、Processing メニューの Compilation Report を クリックします。Analysis & Synthesis リストで、Optimization Results を選択し、Netlist Optimizations を選択して、Gate-level Retiming を クリックします(図 11-6)。
リタイミング・プロセスでは、これらのレジスタのノード名が変 更されます。
図 11-6. ゲート・レベル・リタイミング・レポート
Netlist Optimizations オプションを Never Allow に設定して、レジス タのリタイミング時のレジスタ移動を防止することができます。このオ プションは、アサインメント・エディタを使用して、デザインの個々の レジスタまたはエンティティのいずれかに適用できます。 以下のレジスタは、ゲート・レベル・レジスタのリタイミング時には移 動されません。 ■ グローバル fMAX、tSU、または tCO以外の任意のタイミング制約を有す るレジスタ例えば、マルチサイクル・アサインメントまたはタイミ ング短縮アサインメントの影響を受けるノードは移動されません。 ■ 別のレジスタに非同期コントロール信号を供給するレジスタ ■ 別のレジスタのクロックを供給するレジスタ ■ 別のクロック・ドメイン内のレジスタに供給するレジスタ ■ 別のクロック・ドメイン内のレジスタから供給されるレジスタ ■ シリアライザ / デシリアライザ(SERDES)に接続されているレジスタ ■ Netlist Optimizations ロジック・オプションが Never Allow に設定さ
れているレジスタ ■ 出力ピンに供給するレジスタ(レジスタとピンの間にロジックがな い場合) ■ 入力ピンから供給されるレジスタ(レジスタとピンの間にロジック がない場合) ■ 入力ピンからレジスタ、レジスタからレジスタに直接接続されてい る 2 つのレジスタがあり、両方のレジスタが同じクロックを持ち、か つ最初のレジスタがその他のどこにも接続されていない場合。これ らのレジスタは同期式レジスタとみなされます。 ■ レジスタからレジスタに直接接続される 2 つのレジスタがあり、両方 のレジスタが同じクロックを持ち、最初のレジスタがその他のどこ にも接続されず、かつ最初のレジスタが異なるクロック・ドメイン 内の別のレジスタから供給される場合。これらのレジスタは同期式 レジスタとみなされます。
Retiming Meta-Stability Register Sequence Length ロジック・オプショ ンの値を変更することによって、同期式レジスタまたはメタスタビリ ティ・レジスタのシーケンスに対するリタイミング動作を変更できます。 このオプションの値は、ゲート・レベルのレジスタのリタイミング時に 移動されない同期式レジスタの数を示します。デフォルト値は 2 です。 値を 0 よりも大きい数に設定するには、Assignments メニューの Settings をクリックします。Settings ダイアログ・ボックスで Analysis & Synthesis Settings を選択し、More Settings をクリックします。1 の値 は、レジスタ−レジスタ接続で最初のレジスタに接続されている任意の レジスタを、リタイミング時に移動できることを意味します。n > 1 の値 は、以下がすべて真である限り、長さ 1、2、… n のシーケンスのどのレ ジスタも、ゲート・レベルのレジスタのリタイミング時に移動されない ことを意味します。 ■ 最初のレジスタには、ピンから直接または別のクロック・ドメイン 内のレジスタから(直接または組み合わせロジックを介して)供給 される。 ■ シーケンス内のすべてのレジスタに同じクロック信号がある。 ■ 最後のレジスタを除くすべてのレジスタがシーケンス内の次のレジ スタに直接供給し、その他のどこにもファンアウトしない。 レジスタのリタイミングに関するこれらの条件のいずれかと併せてレジ スタを検討する場合、所定のレジスタ・セットに対して Netlist
Optimizations ロジック・オプションを Always Allow に設定すると、 これらのルールを無効にすることができます。
レジスタのリタイミングによる tSU/tCOと fMAXとのトレードオフ Quartus II コンパイラが tSUまたは tCO時間を犠牲にして、fMAXを増や すのを試みるべきか否かを判断するには、Assignments メニューの Settings をクリックします。Category リストで、Analysis & Synthesis Settings を選択し、Synthesis Netlist Optimizations を選択します。 Synthesis Netlist Optimizations ページの Allow register retiming to trade off Tsu/Tco with Fmax をオンにします。このオプションは、ゲー ト・レベルのレジスタ・リタイミング・オプションのために実行される 最適化に影響を与えます。
Perform gate-level register retiming および Allow register retiming to trade off Tsu/Tco with Fmax の両方のオプションがオンに設定されてい る場合、I/O ピンで供給するレジスタと I/O ピンから供給されるレジス タがリタイミングの影響を受ける可能性があります。後者のオプション がオンになっていない場合、リタイミング・オプションは、1 つまたは 複数レベルの組み合わせロジックを介して I/O ピンに接続されるどのレ ジスタにも影響を及ぼしません。
合成ネットリスト最適化の結果の維持
Quartus II ソフトウェアは、あるシステムにおいてソース・コードと設 定が同じ場合はコンパイルのたびに同じ結果を生成します。したがって、 通常は、コンパイルごとに結果を維持するための方策を講じる必要はあ りません。ソース・コードまたは設定が変更された場合、通常はソフト ウェアに、以前のコンパイル結果やロケーション・アサインメントを使 用しないでコンパイルさせることによって、最良の結果を得ることがで きます。Analysis & Synthesis または quartus_map を実行しないで代 わりにフィッタまたは別の適切な Quartus II 実行コマンドを実行すれ ば、場合によっては、コンパイルの合成ステージをスキップすることが できます。 インクリメンタル・コンパイル機能を使用して、Post-Synthesis のネッ トリスト・タイプを選択してデザインの特定のパーティションの合成結 果を維持することができます。 コンパイル結果を維持するには、ここで述べる LogicLock バッ ク・アノテーション・フローの代わりに、インクリメンタル・コ ンパイル・フローを使用する必要があります。 イ ンク リメ ン タル・コ ン パイ ル・デ ザイ ン手 法 につ い て詳 しく は、 「Quartus II ハンドブック Volume 1」の「Quartus II インクリメンタル・コンパイル」の章を参照してください。 希望する場合は、ネットリスト最適化の結果として得られたノードを維 持することができます。LogicLock フローを使用して配置をバック・ア ノテートし、かつ / または 1 つのデザインを別のデザインにインポート する場合は、ノードの維持が必要なこともあります。(インクリメンタ ル・コンパイル・デザイン・フローを LogicLock 機能と併せて使用する 場合は、これは不要ですので注意してください。) 何らかの Quartus II 合成ネットリスト最適化オプションを使用している 場 合 は、最 適 化 さ れ た 結 果 を 保 存 で き ま す。こ れ を 行 う に は、 Assignments メニューの Settings をクリックします。Category リスト で、Compilation Process Settings を選択します。Compilation Process Settings ページで、Save a node-level netlist of the entire design into a persistent source file をオンにします。このオプションは、最終的な結 果を素子ベースのネットリストとして、Verilog Quartus マッピング・ ファイル・フォーマットで保存します。デフォルトでは、Quartus II ソ フ ト ウ ェ ア は、現 在 の プ ロ ジ ェ ク ト・デ ィ レ ク ト リ の 下 に あ る atom_netlists ディレクトリに、Verilog Quartus マッピング・ファイル を配置します。異なる Quartus II 設定を使用して異なる Verilog Quartus マッピング・ファイルを作成する場合は、Assignments メニューの
Settings をクリックします。Category リストで、Compilation Process Settings を選択します。Compilation Process Settings ページで、File name 設定を変更します。 合成ネットリスト最適化を使用している場合(かつ、どのフィジカル・ シンセシス最適化も使用していない場合)、Verilog Quartus マッピング・ ファイルの生成はオプションです。Quartus II が生成した Verilog Quartus マッピング・ファイルを使用または使用しないで、デザイン内 のすべてのロジックとデバイス・リソースの位置をロック・ダウンする には、Assignments メニューの Back-Annotate Assignments をクリック し、オプションを指定します。デザインが完成していない場合は、バッ ク・アノテートされたロケーション・アサインメントを使用しなければ なりません。デザインに何らかの変更を加えると、バック・アノテート されたロケーション・アサインメントが無効になります。後で変更を加 える必要がある場合は、新しい HDL ソース・コードを入力ファイルと して使用し、古いコードまたはネットリストに対応するバック・アノテー トされたアサインメントを削除します。 Verilog Quartus マッピング・ファイルを作成してデザインを再コンパイ ルする場合は、新しい Verilog Quartus マッピング・ファイルを入力ソー ス・ファイルとして使用し、新しいコンパイルに対する合成ネットリス ト最適化をオフにします。
フィジカル・
シンセシス
最適化
従来から、Quartus II デザイン・フローには合成とフィッティングの別々 のステップが含まれています。合成ステップでは、回路のロジック構造 を面積または速度、あるいはその両方で最適化します。その後フィッタ によってロジック・セルの配置配線が行われ、ロジックの重要な部分を 互いに近接させて、可能な限り高速な配線リソースを使用するようにし ます。このプッシュボタン・フローで優れた結果が得られる反面、合成 ステージではフィッタで見られる配線遅延を予測できません。配線遅延 は標準的なクリティカル・パス遅延の重要な部分なので、物理的遅延に 関する情報を用いて合成操作を実行することにより、ツールはデザイン のこれらの部分におけるタイミング・ドリブン最適化をターゲットにす ることができます。フィッティングおよび合成プロセスのこのような緊 密な統合は、フィジカル・シンセシスとして知られています。 以下の項では、Quartus II ソフトウェアで使用可能なフィジカル・シン セシス最適化と、性能結果を向上させるのに、それらをどのように役立 てることができるかについて説明します。フィジカル・シンセシス最適 化オプションは、Stratix および Cyclone シリーズのデバイス・ファミリ と HardCopy II デバイスで使用できます。 デザインを HardCopy II デバイスに移行する場合、FPGA 優先フローの FPGA アーキテクチャ、または HardCopy 優先フローの HardCopy II アーキテクチャに対するフィジカル・シンセシス最適化をターゲットに することができます。最適化は移行プロセスで他のデバイスのアーキテクチャにマッピングされます。両方のデバイスのアーキテクチャに対し て個別に最適化を行うと、各デバイスのフィッティング後のネットリス トが違うようになるので、このような最適化をターゲットにすることは できない点に注意してください。
HardCopy デバイスでのフィジカル・シンセシスの使用について詳しく は、「Quartus II ハ ン ド ブ ッ ク Volume 1」の「Quartus II Support of HardCopy Series Devices」の章を参照してください。
フィジカル・シンセシス最適化オプションを表示し変更するには、 Assignments メニューの Settings をクリックします。図 11-7に示すよう に、Category リストで、Fitter Settings を選択し、Physical Synthesis Optimizations を選択します。 図 11-7. フィジカル・シンセシス最適化の設定 フィジカル・シンセシス最適化は 2 つのグループに分けられ、1 つは組 み合わせロジックにのみ影響しレジスタには影響しないグループで、も う 1 つはレジスタにも影響する可能性があるグループです。これらのオ プションは、フォーマル検証またはその他の理由のために、レジスタを そのままの状態に保つことができるように分けられています。
以下のフィジカル・シンセシス最適化が用意されています。 ■ 組み合わせロジックのフィジカル・シンセシス ■ 非同期信号の自動パイプライン化 ■ レジスタのフィジカル・シンセシス: ● レジスタの複製 ● レジスタのリタイミング
Physical synthesis effort オプションで、フィジカル・シンセシスの影響 を制御できます。デフォルトの選択は Normal です。Extra effort 設定で は、コンパイル時間を延長して、より高い回路性能の達成を試みるのに 対し、Fast effort 設定では Normal よりもコンパイル時間が短縮されま すが、同じ性能向上は達成できない場合があります。
フィジカル・シンセシス最適化ではすべて、結果が Netlist Optimizations レ ポ ー ト に 書 き 込 ま れ ま す。こ の レ ポ ー ト に ア ク セ ス す る に は、 Processing メニューの Compilation Report をクリックします。Category リストで、Fitter and select Compilation Report を選択します。このレ ポートは、フィジカル・シンセシス時に変更、作成、および削除された ネットリスト・ファイルのリストを提供します。
フィジカル・シンセシス・プロセスで、これらの素子のノード名が変更 されます。
Netlist Optimizations ロジック・オプションが Never Allow に設定さ れたノードまたはエンティティは、フィジカル・シンセシス・アルゴリ ズムの影響を受けません。このロジック・オプションにアクセスするに は、Assignments メニューの Assignment Editor をクリックします。こ のオプションを使用して、デザインの部分に対するフィジカル・シンセ シス最適化を無効にします。
非同期信号の自動パイプライン化
Settings ダイアログ・ボックスの Fitter Settings セクションの Physical Synthesis Optimizationsページにある Perform automatic asynchronous signal pipeliningオプションにより、非同期クリア信号および非同期ロー ド信号が性能に悪影響を及ぼす場合に、Quartus II フィッタはフィッティ ング時にこれらの信号用のパイプライン・ステージの自動挿入を実行で きます。このオプションは、非同期コントロール信号の回復時間および 除去時間がユーザ要件に合わない場合に使用できます。
このオプションを使用した場合、非常に速度の速いクロック・ドメイン 内の非同期信号を(グローバル・ネットワークの遅延が長いために)迅 速にチップ間に分配できないデザインに対して性能が改善されます。こ の最適化では、挿入されるレジスタの総数を最小限に抑えるよう試みな がら、これらの信号の自動パイプライン処理が実行されます。
Perform automatic asynchronous signal pipelining オプション を使用した場合、レジスタの非同期クリア・ポートまたは非同期 ロード・ポートをドライブするネットにレジスタが追加されます。 これにより、リセットにレジスタ遅延(およびレイテンシ)が追 加され、リセットを使用する各ディスティネーションに同数のレ ジスタ遅延が追加されます。したがって、このオプションはリ セット信号にレイテンシを追加してもデザイン要件に違反しない 場合にのみ使用する必要があります。また、このオプションはグ ローバル配線リソースを使用する信号のプロモーションも防止し ます。
Quartus II ソフトウェアは、Recovery/Removal Analysis が有効の場合 に限り、非同期信号の自動パイプライン化を実行します。パイプライン 化は、以下のプロパティを有する非同期信号にのみ許可されます。 ■ 非同期信号がクロックに同期している(同期レジスタが信号をドラ イブ)。 ■ 非同期信号がレジスタの非同期コントロール・ポートのみにファン・ アウトする。
Recovery/Removal Analysis オプションにアクセスするには、Assignments メニューの Settings をクリックします。Category リストで、Timing Requirements & Optionsを選択します。Timing Requirements & Options ページで、More Settings をクリックします。
Quartus II ソフトウェアでは、Netlist Optimization logic オプションが Never Allow に設定されている非同期信号に対しては、非同期信号の自 動パイプライン化は実行されません。
組み合わせロジックのフィジカル・シンセシス
Quartus II フィッタを使用してデザインを再合成し、クリティカル・パス に沿って遅延を低減するには、Assignments メニューの Settings をクリッ クします。Categoryリストで、Fitter Settingsを選択し、Physical Synthesis Optimizations を選択します。Physical Synthesis Optimizations ページ のPerform physical synthesis for combinational logicをクリックします。 ソフトウェアは、信号を伝達するクリティカル・パスの層数が少なくな るように、LE 内のルック・アップ・テーブル(LUT)ポートを入れ替え
て、このタイプの最適化を達成できます。図 11-8の例を参照してくださ い。このオプションでは、クリティカル・パスで一層の最適化ができる ように、LUT の複製も可能です。
図 11-8. 組み合わせロジックのフィジカル・シンセシス
最初のケースでは、クリティカル入力が最初の LUT を介して 2 番目の LUT に供給しています。Quartus II ソフトウェアは、最初の LUT のク リティカル入力を 2 番目の LUT に供給している入力と入れ替えます。こ れによって、クリティカル・パスに含まれる LUT 数が減少します。各 LUT の合成情報が変更され、デザインの機能性が維持されます。 Physical synthesis for combinational logic オプションは、LUT の形式 の組み合わせロジックにのみ影響します。影響を受けるロジック・セル に含まれるレジスタは変更されません。メモリ・ブロック、DSP ブロッ ク、および I/O エレメント(IOE)の入れ替えは行われません。 Quartus II ソフトウェアは、以下のプロパティを有するロジック・セル に対しては、組み合わせ最適化を実行しません。 ■ チェインの一部である。 ■ グローバル信号をドライブする。 ■ 1つのロジック・アレイ・ブロック(LAB)位置に制約されている。
■ Netlist Optimizations オプションがNever Allowに設定されている。 フィジカル・シンセシスに対するこれらの条件のいずれかと併せてロ ジック・セルを検討する場合、所定のノード・セットに対して Netlist Optimizations ロジック・オプションを Always Allow に設定すると、 これらのルールを無効にすることができます。
レジスタのフィジカル・シンセシス — レジスタ複製
Settings ダイアログ・ボックスの Fitter Settings セクションの Physical Synthesis Optimizations ページにある Perform register duplication fitter オプションにより、Quartus II フィッタはフィッタの配置情報に基 づいてレジスタを複製することができます。このオプションを有効にす ると、組み合わせロジックを複製することもできます。複数の場所にファ ン・アウトするロジック・セルを複製して、別のパスの遅延を増やすこ となく 1 つのパスの遅延を低減できます。新しいロジック・セルは、元 のロジック・セルの他のファン・アウト・パスに影響を与えることなく、 クリティカル・ロジックの近くに配置できます。図 11-9にレジスタ複製 の例を示します。 図 11-9. レジスタの複製 Quartus II ソフトウェアは、以下のプロパティを有するロジック・セル に対しては、レジスタの複製を実行しません。 ■ チェインの一部である。 ■ 別のレジスタの非同期コントロール信号をドライブするレジスタを 含む。 ■ 別のレジスタのクロックをドライブするレジスタを含む。 ■ グローバル信号をドライブするレジスタを含む。 ■ 1 つの LAB 位置に制約されているレジスタを含む。 ■ tSU制約のない入力ピンでドライブされるレジスタを含む。 ■ 別のクロック・ドメイン内のレジスタでドライブされるレジスタを 含む。 ■ 仮想 I/O ピンとみなされる。仮想 I/O ピンについて詳しくは、「Quartus II ハンドブック Volume 2」 の「LogicLock Design Methodology」の章を参照してください。 フィジカル・シンセシスに対するこれらの条件のいずれかを満たすロ ジック・セルを検討する場合、所定のノード・セットに対して Netlist Optimizations ロジック・オプションを Always Allow に設定すると、 これらのルールを無効にすることができます。
レジスタのフィジカル・シンセシス—レジスタ・リタイミング
Settings ダイアログ・ボックスの Fitter Settings セクションの Physical Synthesis Optimizations ページにある Perform register retiming fitter オプションによって、Quartus II フィッタは組み合わせロジック全体で レジスタを移動させて、タイミングのバランスを図ることができます。 このオプションは、Perform gate-level register retiming オプションに類似したアルゴリズムを有効にします(11–6 ページの「ゲート・レベ ル・レジスタのリタイミング」参照)。このオプションは、素子レベル (ロジック・セルに配置済みのレジスタおよび組み合わせロジック)に適 用され、合成ゲート・レベル・オプションを補完します。 Quartus II ソフトウェアは、以下のプロパティを有するロジック・セル に対してレジスタのリタイミングを実行しません。 ■ カスケード・チェインの一部である。 ■ 別のレジスタの非同期コントロール信号をドライブするレジスタを 含む。 ■ 別のレジスタのクロックをドライブするレジスタを含む。 ■ 別のクロック・ドメイン内のレジスタをドライブするレジスタを含 む。 ■ 別のクロック・ドメイン内のレジスタでドライブされるレジスタを 含む。 ■ 1 つの LAB 位置に制約されているレジスタを含む。 ■ SERDES に接続されているレジスタを含む。 ■ 仮想 I/O ピンとみなされる。
■ Netlist Optimizations ロジック・オプションが Never Allow に設定 されているレジスタ
仮想 I/O ピンについて詳しくは、「Quartus II ハンドブック Volume 2」 の「LogicLock Design Methodology」の章を参照してください。 フィジカル・シンセシスに対するこれらの条件のいずれかを満たすロ ジ ッ ク・セ ル を 検 討 す る 場 合、所 定 の レ ジ ス タ・セ ッ ト に 対 し て Netlist Optimizations ロジック・オプションを Always Allow に設定す ると、これらのルールを無効にすることができます。
フィジカル・シンセシスの結果の維持
Quartus II ソフトウェアは、あるシステムにおいてソース・コードと設 定が同じ場合は、コンパイルのたびに同じ結果を生成します。したがっ て、通常は、コンパイルごとに結果を維持するための対策を講じる必要 はありません。ソース・コードまたは設定が変更された場合、通常はソ フトウェアに、以前のコンパイル結果やロケーション・アサインメント を使用しないでコンパイルさせることによって、最良の結果を得ること ができます。それでも、コンパイル結果を維持する場合は、この項で概 説するガイドラインに必ず従ってください。 インクリメンタル・コンパイル機能を使用して、Post-fit のネットリス ト・タイプを選択してデザインの特定のパーティションのフィッティン グ結果を維持することができます。 コンパイル結果を維持するには、ここで述べる LogicLock バッ ク・アノテーション・フローの代わりに、インクリメンタル・コ ンパイル・フローを使用する必要があります。 イ ンク リメ ン タル・コ ン パイ ル・デ ザイ ン手 法 につ い て詳 しく は、 「Quartus II ハンドブック Volume 1」の「階層ベースおよびチーム・ベー スのデザインのための Quartus II インクリメンタル・コンパイル」の章 を参照してください。 希望する場合は、フィジカル・シンセシスの結果として得られたノード を維持することができます。LogicLock フローを使用して配置をバック・ アノテートし、かつ / または 1 つのデザインを別のデザインにインポー トする場合は、ノードの維持が必要なこともあります。(インクリメンタ ル・コンパイル・デザイン・フローを LogicLock 機能と併せて使用する 場合は、これは不要ですので注意してください)。 Quartus II のフィジカル・シンセシス最適化オプションを使用している 場合、Settings ダイアログ・ボックスの Compilation Process Settings ページにある Save a node-level netlist into a persistent source file (Verilog Quartus Mapping File) オプションを使用して、最適化された 結果のノードを保存することができます。このオプションは、最終的な 結果を素子ベースのネットリストとして、Verilog Quartus マッピング・ ファイル・フォーマットで保存します。デフォルトでは、Quartus II ソ フ ト ウ ェ ア は、現 在 の プ ロ ジ ェ ク ト・デ ィ レ ク ト リ の 下 に あ る atom_netlists ディレクトリに、Verilog Quartus マッピング・ファイル を配置します。異なる Quartus II 設定を使用して、異なる Verilog Quartus マッピング・ファイルを作成する場合は、Settings ダイアログ・ボック スの Compilation Process Settings ページの File name の設定を変更す ることによってこれを行うことができます。フィジカル・シンセシス最適化を使用し、かつ Back-Annotate Assignments コマンドを使用してすべてのLE とその他のデバイス・リ ソースの位置をロック・ダウンする場合は、元のネットリストに加えら れた変更を維持するために、Verilog Quartus マッピング・ファイル・ ネットリストが必要です。フィジカル・シンセシス最適化はデザインで のノードの配置に依存するので、配置をバック・アノテートすると、フィ ジカル・シンセシスから得られた結果が変更されます。結果の変更とは、 ノード名が異なり、バック・アノテートされたロケーションが無効になっ た こ と を 意 味 し て い ま す。こ の オ プ シ ョ ン に ア ク セ ス す る に は、 Assignments メニューの Back-Annotate Assignments をクリックしま す。 デザインが完成していない場合は、Quartus II が生成した Verilog Quartus マッピング・ファイル、またはバック・アノテートされたロケー ション・アサインメントをフィジカル・シンセシス最適化と併用すべき ではありません。デザインに何らかの変更を加えると、フィジカル・シ ンセシスの結果とバック・アノテートされたロケーション・アサインメ ントが無効になります。後で変更を加える必要がある場合は、新しい HDL ソース・コードを入力ファイルとして使用し、Quartus II が生成し た Verilog Quartus マッピング・ファイルに対応するバック・アノテー トされたアサインメントを削除します。 フィジカル・シンセシス最適化を指定してコンパイルされたデザインの ロジック・ロケーションをバック・アノテートするには、最初に Verilog Quartus マッピング・ファイルを作成します。ハード・ロジック・ロケー ション・アサインメントを指定してデザインを再コンパイルする場合は、 新しい Verilog Quartus マッピング・ファイルを入力ソース・ファイル として使用し、新しいコンパイルに対してフィジカル・シンセシス最適 化をオフにします。 Verilog Quartus マッピング・ファイルと、バック・アノテートされた位 置を、Netlist Optimizations オプションがオンに設定されている別のプ ロジェクトにインポートする場合は、Netlist Optimizations = Never Allow 制約を適用して、絶対にノード名が変更されないようにすること が重要です。そうしないと、バック・アノテートされた位置または LogicLock アサインメントは無効になります。 コンパイル結果を維持するには、LogicLock バック・アノテーショ ンを使用する代わりに、インクリメンタル・コンパイル・フロー を使用する必要があります。
ネットリスト
最適化
オプションの
適用
ネットリスト最適化オプションは、異なるデザインにさまざまな影響を 与える可能性があります。上手にコード化されているか、クリティカル・ パス遅延のバランスを図るために既に再構築されているデザインでは、 顕著な性能の差は見られないかもしれません。 ネットリスト最適化オプションを使用するときに最適な結果を得るに は、適用するオプションを変更して最良の結果を見つけ出すことが必要 な場合もあります。デフォルトでは、すべてのオプションがオフになっ ています。追加オプションをオンにすると、デザインのノード名への影 響が最も大きくなります。LogicLock または SignalTap II ロジック・ア ナライザやフォーマル検証など、固定または既知ノード名が要求される 検証フローを使用する場合は、これを考慮してください。平均して、フィ ジカル・シンセシスオプションのすべてを Extra effort レベルで適用する と、それらのオプションでの最良の結果が得られますが、コンパイル時 間が大幅に長くなります。Physical synthesis effort オプションを使用し て、コンパイル時間を短縮することもできます。合成ネットリスト最適化では一般に、全体のデザイン・コンパイル時間 に対して、大幅にコンパイル時間が増えることはありません。
サードパーティ atom ネットリスト(Verilog Quartus マッピン グ・ファイルまたは Electronic Design Interchange Format ファイ ル)を使用している場合は、Gate-level Register Retiming オプ ションを使用するために、WYSIWYG Primitive Resynthesis オ プションをオンにしなければなりません。
Quartus II ソフトウェアには、さまざまなネットリスト最適化オプショ ンの適用を自動化するために、Design Space Explorer(DSE)ツール・ コマンド言語(Tcl)/Tk スクリプトが用意されています。 DSE スクリプトを使用した複数コンパイルの実行について詳しくは、 「Quartus II ハンドブック Volume 2」の「デザイン・スペース・エクス プローラ」の章を参照してください。ネットリスト最適化オプションと その他の最適化手法を組み合わせて使用した場合の、標準的な性能結果 について詳しくは、「Quartus II ハンドブック Volume 2」の「面積およ びタイミングの最適化」の章を参照してください。
スクリプティン
グ・サポート
この章で説明する手順の実行と設定は、Tcl スクリプトで行うことができ ます。また、一部の手順はコマンド・プロンプトでも実行できます。ス クリプティング・コマンド・オプションについて詳しくは、Quartus II Command-Line および Tcl API Help ブラウザを参照してください。この Help ブラウザを使用するには、コマンド・プロンプトで次のコマンドを 入力します。
quartus_sh --qhelp
「Scripting Reference Manual」には、同じ情報が PDF 形式で付属してい ます。
Tcl スクリプトについて詳しくは、「Quartus II ハンドブック Volume 2」 の「Tcl スクリプト」の章を参照してください。Quartus II ソフトウェア における設定および制約について詳しくは、「Quartus II Settings File Reference Manual」を参照してください。コマンド・ライン・スクリプ トについて詳しくは、「Quartus IIハンドブックVolume 2」の「Command-Line Scripting」の章を参照してください。
この項で説明するオプションの多くは、インスタンスまたはグローバル・ レベル、あるいはその両方で指定することができます。
以下の Tcl コマンドを使用し、グローバル・アサインメントを行います。 set_global_assignment -name <QSF variable name> <value>
以下の Tcl コマンドを使用し、インスタンス・アサインメントを行います。 set_instance_assignment -name <QSF variable name> <value> -to <instance name>
合成ネットリスト最適化
表 11–1に、Quartus II 設定ファイル (.qsf) の変数名と、11–3 ページの 「合成ネットリスト最適化」で説明した設定に適用される値をリストして います。Quartus II 設定ファイルの変数名は、適切な値に沿った設定を 行うために Tcl アサインメントで使用されます。Type カラムは、設定が グローバル設定またはインスタンス設定、あるいはその両方のいずれで サポートされるかを示しています。 表 11–1. 合成ネットリスト最適化および関連設定 設定名 Quartus II設定ファイルの変数名 値 タイプ Perform WYSIWYG Primitive Resynthesis ADV_NETLIST_OPT_SYNTH_WYSIWYG_ REMAP ON, OFF グローバル、 インスタンス Optimization Technique <デバイス・ファミリ名 >_ OPTIMIZATION_TECHNIQUE AREA, SPEED, BALANCED グローバル、 インスタンス Perform Gate-Level Register Retiming ADV_NETLIST_OPT_SYNTH_GATE_ RETIME ON, OFF グローバルPower-Up Don't Care ALLOW_POWER_UP_DONT_CARE ON, OFF グローバル Allow Register
Retiming to trade off Tsu/Tco with Fmax
ADV_NETLIST_OPT_RETIME_CORE_ AND_IO
ON, OFF グローバル
Save a node-level netlist into a persistent source file LOGICLOCK_INCREMENTAL_COMPILE_ ASSIGNMENT ON, OFF グローバル LOGICLOCK_INCREMENTAL_COMPILE_ FILE <filename> Allow Netlist Optimizations ADV_NETLIST_OPT_ALLOWED "ALWAYS ALLOW", DEFAULT, "NEVER ALLOW" インスタンス
フィジカル・シンセシス最適化
表 11–2に、Quartus II 設定ファイルの変数名と、11–12 ページの「フィ ジカル・シンセシス 最適化」で説明した設定に適用される値をリストし ています。Quartus II 設定ファイルの変数名は、適切な値に沿った設定 を行うために Tcl アサインメントで使用されます。Type カラムは、設定 がグローバル設定またはインスタンス設定、あるいはその両方のいずれ でサポートされるかを示しています。インクリメンタル・コンパイル
11–11 ページの「合成ネットリスト最適化の結果の維持」または 11–19 ページの「フィジカル・シンセシスの結果の維持」で説明したインクリ メンタル・コンパイルのためのスクリプティングおよびコマンド・ライ ンの使用法について詳しくは、「Quartus II ハンドブック Volume 1」の 「Quartus II インクリメンタル・コンパイル」の章を参照してください。 表 11–2. フィジカル・シンセシス最適化および関連設定 設定名 Quartus II設定ファイルの変数名 値 タイプPhysical Synthesis for Combinational Logic PHYSICAL_SYNTHESIS_COMBO_LOGIC ON, OFF グローバル Automatic Asynchronous Signal Pipelining PHYSICAL_SYNTHESIS_ASYNCHRONOUS_ SIGNAL_PIPELINING ON, OFF グローバル Perform Register Duplication PHYSICAL_SYNTHESIS_REGISTER_ DUPLICATION ON, OFF グローバル Perform Register Retiming PHYSICAL_SYNTHESIS_REGISTER_ RETIMING ON, OFF グローバル
Power-Up Don't Care ALLOW_POWER_UP_DONT_CARE ON, OFF グ ロ ー バ ル、 インスタンス
Power-Up Level POWER_UP_LEVEL HIGH, LOW インスタンス
Allow Netlist Optimizations ADV_NETLIST_OPT_ALLOWED "ALWAYS ALLOW", DEFAULT, "NEVER ALLOW" インスタンス
Save a node-level netlist into a persistent source file LOGICLOCK_INCREMENTAL_COMPILE_ ASSIGNMENT ON, OFF グローバル LOGICLOCK_INCREMENTAL_COMPILE_ FILE <filename>
アサインメントのバック・アノテーション
logiclock_back_annotateTcl コマンドを使用して、デザインのリ ソースをバック・アノテートすることができます。このコマンドによっ て、LogicLock 領域内のリソースと、LogicLock 領域のないデザインの リソースをバック・アノテートすることができます。 アサインメントのバック・アノテーションについて詳しくは、11–11 ペー ジの「合成ネットリスト最適化の結果の維持」または 11–19 ページの 「フィジカル・シンセシスの結果の維持」を参照してください。 以下の Tcl コマンドは、デザインのすべてのレジスタをバック・アノテー トします。logiclock_back_annotate -resource_filter "REGISTER" logiclock_back_annotateコマンドは、backannotate パッケージ にあります。
まとめ
合成ネットリスト最適化とフィジカル・シンセシス最適化は、デザイン のネットリストの再構築と最適化のために異なる方法で動作します。こ れらの Quartus II ネットリスト最適化を利用すれば、結果の質の向上に 役立てることができます。参考資料
この章では以下のドキュメントを参照しています。■「Quartus II ハンドブック Volume 1」の「Integrated Synthesis」の章
■「Quartus II ハンドブック Volume 1」の「Hierarchical & Team Based Design」の章
■「Quartus II ハンドブック Volume 1」の「Quartus II Support of HardCopy Series Devices」の章
■ 「Quartus II ハンドブック Volume 2」の「LogicLock Design Methodology」 の章
■「Quartus II ハンドブック Volume 2」の「Design Space Explorer」の章
■「Quartus II ハンドブック Volume 2」の「Tcl Scripting」の章
■「Quartus II Settings File Reference Manual」
■「Quartus II ハンドブック Volume 2」の「Command-Line Scripting」 の章