インテルのみ表示可能 — GUID: ewa1462826128514
Ixiasoft
1.4.2.6. 引数の実装を制御するマクロと属性
デフォルトでは、HLSコンパイラーは関数引数のインターフェイスをコンポーネントの呼び出し (start または busy) インターフェイスに同期する入力コンデュイットとして実装します。 ソースコード内のマクロまたは属性を個別のコンポーネント引数に追加することにより、これらのインターフェイスの実装をポインター・パラメーターと同様の方法で制御するオプションがあります。
<path to i++ installation>/include/HLS/hls.h ファイル内のマクロ定義 | 属性 | 説明 |
---|---|---|
hls_conduit_argument | __attribute__((argument_interface("wire"))) | デフォルト実装。 コンパイラーは、Avalon®-ST プロトコルに従って、コンポーネントの呼び出し (start または busy) インターフェイスに同期する入力コンデュイットとして引数を実装します。 |
hls_avalon_slave_register_argument | __attribute__((argument_interface("avalon_mm_slave"))) | コンパイラーは、Avalon-MM スレーブ・インターフェイスを介して読み出しと書き込みができるレジスターとして引数を実装します。引数は、コンデュイットの実装と同様にコンポーネントのパイプラインに読み込まれます。実装は、start または busy インターフェイスに同期します。 |
hls_avalon_slave_memory_argument(size_of_slave_memory_in_bytes) | N/A | コンパイラーは、専用スレーブ・インターフェイスを介して読み出しと書き込みができるオンチップ・メモリーブロックに引数を実装します。
生成されたメモリーは、他のすべての内部コンポーネント・メモリー ( つまり、バンキング、結合など ) と同じアーキテクチャーの最適化を行います。コンパイラーが静的結合の最適化を実行する場合、スレーブ・インターフェイスのデータ幅は結合した幅になります。
注: この属性はポインター引数にのみ適用されます。
|
<path to i++ installation>/include/HLS/hls.h ファイル内のマクロ定義 | 属性 | 説明 |
---|---|---|
hls_stable_argument | __attribute__((stable_argument)) | 安定引数とは、コンポーネントにライブデータがある間 ( つまり、パイプラインされた関数呼び出しの間 ) に変更されない引数のことです。 コンポーネント実行中の安定引数の変更には予期しない動作が発生する可能性があります。特に、安定引数の使用ごとに古い値または新しい値になる可能性があり、呼び出し内での一貫性が保証されません。すなわち、同じ呼び出しでの同じ変数が複数の値で表示されます。 適切な場合は、安定引数の使用によりデザインで大量のレジスター数の節約が可能です。 |