AXIS インターフェイスの分割
これは、axis
インターフェイスの DISAGGREGATE プラグマまたは指示子の例です。次は、GitHub で公開されている disaggregation_of_axis_port の例です。
HLS ソース コード | 合成済みの IP モジュール |
---|---|
|
|
上記の分割の例では、構造体引数の in
および out
が AXIS インターフェイスにマップされてから、分割されます。この結果、Vitis HLS は、引数 (in_c
、in_i
、out_c
、out_i
) それぞれに対して 2 つの AXI ストリームを作成します。struct A
の各メンバーは、個別のストリームになります。
生成されたモジュールの RTL インターフェイスは、上記の右側に表示されます。メンバー要素の c
と i
は、それぞれ独自の TVALID、TREADY 、および TDATA 信号を持つ個別の AXI ストリーム ポートです。
Vitis HLS は、ログ ファイルに次のメッセージを表示します。
INFO: [HLS 214-210] Disaggregating variable 'in' (example.cpp:19:0)
INFO: [HLS 214-210] Disaggregating variable 'out' (example.cpp:19:0)
HLS::STREAM の分割
これは、hls::stream
タイプを使用した場合の DISAGGREGATE プラグマまたは指示子の例です。
HLS ソース コード | 合成済みの IP モジュール |
---|---|
|
|
インターフェイスで使用される構造体内の hls::stream
オブジェクトを使用すると、構造体ポートが Vitis HLS コンパイラによって自動的に分割されます。上記の例に示すように、生成された RTL インターフェイスには、hls::stream
オブジェクトの s_in
(すなわち d_s_in_*
) の個別の RTL ポートと、配列 arr
(すなわち d_arr_*
) の個別の RTL ポートが含まれます。
Vitis HLS は、ログ ファイルに次のメッセージを表示します。
INFO: [HLS 214-210] Disaggregating variable 'd'
INFO: [HLS 214-241] Aggregating fifo (hls::stream) variable 'd_s_in' with compact=bit mode in 32-bits