syn.directive.inline - 2023.2 日本語

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

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

説明

syn.directive.inline は、RTL 階層の別エンティティとなっている関数を削除します。インライン展開された関数は呼び出し関数に分解され、別の階層として表示されなくなります。

重要: 子関数をインライン展開すると、その関数に適用されているプラグマまたは指示子も解除されます。Vitis HLS では、子のコンテキストに適用されていた指示子は無視されます。

関数をインライン展開すると、関数内の演算が共有され、呼び出し関数とより効率的に最適化できるようになる場合があります。ただし、インライン展開された関数は共有または再利用できないので、親関数がインライン展開された関数を複数回呼び出す場合、エリアおよびリソース使用率が増加する可能性があります。

デフォルトでは、インライン展開は関数階層のすぐ下の階層でのみ実行されます。

構文

syn.directive.inline=[OPTIONS] <location>
  • <location>: インライン展開を実行する場所を function[/label] の形式で指定します。

オプション

off
デフォルトでは、Vitis HLS でコードの小さな関数のインライン展開が実行されます。off オプションを使用すると、指定の関数のインライン展開がディスエーブルになります。
recursive
デフォルトでは、インライン展開は 1 つの階層でのみ実行されます。指定の関数に含まれる関数はインライン展開されません。recursive オプションを使用すると、指定の関数階層内のすべての関数が再帰的にインライン展開されます。

次の例は、関数 func_sub1 をインライン展開しますが、func_sub1 で呼び出されるサブ関数はインライン展開しません。

syn.directive.inline=func_sub1
次の例は、関数 func_sub1 をインライン展開し、関数 func_sub2 以外の下位階層の関数もインライン展開します。
syn.directive.inline=recursive func_sub1
syn.directive.inline=off func_sub2