Quartus® Prime プロ・エディションのユーザーガイド: デザイン最適化

ID 683641
日付 7/08/2024
Public
ドキュメント目次

5.5.9.8. 加算器ツリー形式の変更

ターゲットとする Intel FPGA およびアプリケーションに適合するよう加算器ツリーを適切に構造化することで、デザインの効率とパフォーマンスを大幅に向上させることができます。

大きな加算器ツリーを使用するアプリケーションの良い例として、有限インパルス応答 (FIR) 相関器があります。適切にパイプライン化された 2 進または 3 進加算器ツリーを使用することで、このようなアプリケーションの結果の質を大幅に向上させることができます。

ALM は最大 6 つの入力の関数を実装できるため、デフォルトのバランスの取れた 2 進ツリー実装ではなく、加算器ツリーに圧縮器を実装することで、特定のデザインのパフォーマンスを向上させることができます。圧縮器を実装することで予想されるデメリットは、より多くの ALM ロジックリソースを使用することです。しかし、全体的なロジックの深さは低くなり、最終的なタイミング特性は改善されます。

図 65. バランスの取れた 2 進加算器ツリーと圧縮された加算器ツリーの比較

改善が期待されるデザインに対しては、Use Compressor Implementation (USE_COMPRESSOR_IMPLEMENTATION) グローバル、エンティティー、またはインスタンス・アサインメントを適用することで、コンパイラーが加算器ツリーをバランスの取れた 2 進ツリーとして合成するか、圧縮器スタイルのツリーとして合成するかを指定することができます。

このアサインメントは、Assignment Editor で指定できます。また、.qsf で次の割り当てを使用し指定することもできます。

set_instance_assignment -name USE_COMPRESSOR_IMPLEMENTATION ALWAYS -to <foo>

このアサインメントは、グローバル割り当て、エンティティー割り当て、またはインスタンス割り当てとして指定できます。代わりに、altera_attribute を使用してインスタンス割り当てを作成することもできます。例えば、次のように指定します。

(* altera_attribute = "-name USE_COMPRESSOR_IMPLEMENTATION ALWAYS" *) module foo(a, b, c, o);

このアサインメントでは、次のオプションを利用することができます。

表 33.  Compressor 実装割り当てオプションの使用
オプション 概要
Always コンパイラーは、このアサインメントを使用してすべての加算器ツリーを常に Compressor 形式のツリーとして合成します。このアサインメントが適用されるためには、少なくとも 2 つの非定数オペランドが必要です。 (そうでない場合、合成はバイナリー加算またはサイズに応じて純粋な LUT 実装を行います。)
Never コンパイラーは、割り当てられた加算器ツリーを圧縮器として合成しません。コンパイラーは、加算器をバランスの取れた 2 進ツリーとして、または十分に小さい場合は純粋な LUT として合成します。
Auto この設定は現在、Never 設定と同じ動作をします。コンパイラーは、加算器をバランスの取れた 2 進ツリーとして、または十分に小さい場合は純粋な LUT として合成します。この設定では、Compressor 形式の加算器ツリーは使用されません。