set_directive_allocation - 2023.2 日本語

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

説明

リソース割り当てのためのインスタンス制限を指定します。

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