説明
リソース割り当てのためのインスタンス制限を指定します。
ALLOCATION プラグマまたは指示子を使用すると、特定の関数、ループ、または演算をインプリメントするのに使用される RTL インスタンスおよびハードウェア リソースの数を制限できます。たとえば、C/C++ ソース コードに foo_sub
という関数のインスタンスが 4 つある場合、set_directive_allocation
コマンドを使用して、最終 RTL での foo_sub
インスタンスの数を 1 つだけにできます。4 つのインスタンスがすべて、同じ RTL ブロックを使用してインプリメントされます。これにより関数で使用されるリソースは削減されますが、これらのリソースが共有されるので、パフォーマンスが低下することがあります。
加算、乗算、配列読み出し、書き込みなどの C/C++ コードでの演算は、set_directive_allocation
コマンドを使用して制限できます。
構文
set_directive_allocation [OPTIONS] <location> <instances>
-
<location>
: 場所をfunction[/label]
の形式で指定します。 -
<instances>
: 関数または演算子を指定します。関数には、
set_directive_inline
コマンドでインライン展開されたり、Vitis HLS で自動的にインライン展開されたりしていない元の C/C++ コードの関数を指定できます。ALLOCATION
プラグマを使用して制限可能な演算のリストは、config_op コマンドを参照してください。
オプション
-
-limit <integer>
-
RTL デザインで使用されるインスタンス (
-type
オプションで指定したタイプ) の最大数を設定します。 -
-type [function|operation]
- インスタンス タイプには、
function
(デフォルト) またはoperation
を指定できます。
例
関数 foo
のインスタンスが複数含まれているデザイン foo_top
に対して、RTL での foo
のインスタンス数を 2 に制限します。
set_directive_allocation -limit 2 -type function foo_top foo
My_func
のインプリメンテーションに使用される乗算の数を 1 に制限します。この制限は、My_func
のサブ関数に含まれる乗算器には適用されません。サブ関数のインプリメンテーションに使用される乗算器の数を制限するには、そのサブ関数に ALLOCATION 指示子を指定するか、サブ関数を関数 My_func
にインライン展開します。
set_directive_allocation -limit 1 -type operation My_func mul