Disaggregate AXIS Interface
This is an example of the DISAGGREGATE
pragma or directive for an axis
interface. The
example is available in the
Vitis HLS Introductory
Examples.
HLS Source Code | Synthesized IP Module |
---|---|
|
|
In the above disaggregation example, the struct arguments in
and out
are mapped
to AXIS interfaces, and then disaggregated. This results in Vitis HLS creating two AXI streams for each argument: in_c
, in_i
, out_c
and out_i
. Each
member of the struct A
becomes a separate
stream.
The RTL interface of the generated module is shown on the right above where
the member elements c
and i
are individual AXI
stream ports, each with its own TVALID, TREADY and TDATA signals.
INFO: [HLS 214-210] Disaggregating variable 'in' (example.cpp:19:0)
INFO: [HLS 214-210] Disaggregating variable 'out' (example.cpp:19:0)
Disaggregate HLS::STREAM
This is an example of the DISAGGREGATE pragma or directive when used
with the hls::stream
type. The example is available
in the
Vitis HLS Introductory
Examples.
HLS Source Code | Synthesized IP Module |
---|---|
|
|
Using an hls::stream
object inside a
structure that is used in the interface will cause the struct port to be
automatically disaggregated by the Vitis HLS
compiler. As shown in the above example, the generated RTL interface will contain
separate RTL ports for the hls::stream
object
s_in
(named d_s_in_*
) and separate RTL ports for the array arr
(named d_arr_*
).
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