インテルのみ表示可能 — GUID: weh1678226618050
Ixiasoft
インテルのみ表示可能 — GUID: weh1678226618050
Ixiasoft
5.5.9.8. 加算器ツリー形式の変更
大きな加算器ツリーを使用するアプリケーションの良い例として、有限インパルス応答 (FIR) 相関器があります。適切にパイプライン化された 2 進または 3 進加算器ツリーを使用することで、このようなアプリケーションの結果の質を大幅に向上させることができます。
ALM は最大 6 つの入力の関数を実装できるため、デフォルトのバランスの取れた 2 進ツリー実装ではなく、加算器ツリーに圧縮器を実装することで、特定のデザインのパフォーマンスを向上させることができます。圧縮器を実装することで予想されるデメリットは、より多くの ALM ロジックリソースを使用することです。しかし、全体的なロジックの深さは低くなり、最終的なタイミング特性は改善されます。
改善が期待されるデザインに対しては、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);
このアサインメントでは、次のオプションを利用することができます。
オプション | 概要 |
---|---|
Always | コンパイラーは、このアサインメントを使用してすべての加算器ツリーを常に Compressor 形式のツリーとして合成します。このアサインメントが適用されるためには、少なくとも 2 つの非定数オペランドが必要です。 (そうでない場合、合成はバイナリー加算またはサイズに応じて純粋な LUT 実装を行います。) |
Never | コンパイラーは、割り当てられた加算器ツリーを圧縮器として合成しません。コンパイラーは、加算器をバランスの取れた 2 進ツリーとして、または十分に小さい場合は純粋な LUT として合成します。 |
Auto | この設定は現在、Never 設定と同じ動作をします。コンパイラーは、加算器をバランスの取れた 2 進ツリーとして、または十分に小さい場合は純粋な LUT として合成します。この設定では、Compressor 形式の加算器ツリーは使用されません。 |