解聚 AXIS 接口
这是 axis
接口的 DISAGGREGATE 编译指示或指令的示例。GitHub 上的 disaggregation_of_axis_port 提供了如下所示示例。
HLS 源代码 | 已综合的 IP 模块 |
---|---|
|
|
在以上解聚示例中,结构体实参 in
和 out
均映射到 AXIS 接口,然后进行解聚。这导致 Vitis HLS 为每个实参创建 2 条 AXI 串流:in_c
、in_i
、out_c
和 out_i
。结构体 A
的每个成员都各成一条独立串流。
生成的模块的 RTL 接口显示在上表右侧,其中成员元素 c
和 i
均为独立 AXI 串流端口,每个端口都有自己的 TVALID、TREADY 和 TDATA 信号。
Vitis HLS 将在 log 日志文件中发出以下消息:
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
包含独立的 RTL 端口(名为 d_s_in_*
),并为阵列 arr
包含独立的 RTL 端口(名为 d_arr_*
)。
Vitis HLS 将在 log 日志文件中发出以下消息:
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