syn.directive.allocation - 2023.2 日本語

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 日本語

説明

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

syn.directive.allocation を使用すると、特定の関数、ループ、または演算をインプリメントするのに使用される RTL インスタンスおよびハードウェア リソースの数を制限できます。たとえば、C/C++ ソース コードに foo_sub という関数のインスタンスが 4 つある場合、syn.directive.allocation コマンドを使用して、最終 RTL での foo_sub インスタンスの数を 1 つだけにできます。4 つのインスタンスがすべて、同じ RTL ブロックを使用してインプリメントされます。これにより関数で使用されるリソースは削減されますが、これらのリソースが共有されるので、パフォーマンスが低下することがあります。

加算、乗算、配列読み出し、書き込みなどの C/C++ コードでの演算は、syn.directive.allocation コマンドを使用して制限できます。

構文

syn.directive.allocation=[OPTIONS] <location> <instances>
  • <location>: 場所を function[/label] の形式で指定します。
  • <instances>: 関数または演算子を指定します。関数には、syn.directive.allocation コマンドでインライン展開されたり、Vitis HLS で自動的にインライン展開されたりしていない元の C/C++ コードの関数を指定できます。

オプション

limit=<integer>

RTL デザインで使用されるインスタンス (type オプションで指定したタイプ) の最大数を設定します。

type=[function|operation]
インスタンス タイプには、function (デフォルト) または operation を指定できます。サポートされる演算すべてのリストは、演算子のコンフィギュレーション を参照してください。

関数 foo のインスタンスが複数含まれているデザイン foo_top に対して、RTL での foo のインスタンス数を 2 に制限します。

syn.directive.allocation=limit=2 type=function foo_top foo

My_func のインプリメンテーションに使用される乗算の数を 1 に制限します。この制限は、My_func のサブ関数に含まれる乗算器には適用されません。サブ関数のインプリメンテーションに使用される乗算器の数を制限するには、そのサブ関数に ALLOCATION 指示子を指定するか、サブ関数を関数 My_func にインライン展開します。

syn.directive.allocation=limit=1 type=operation My_func mul

関連項目