PE 函数的每个自变量都必须连接到顶层 compute()
函数的实参或者连接到静态声明的串流。vpp::stream
继承自 Vitis HLS
hls::stream
,如 HLS 串流库中所述。
vpp::stream
对象可提供多项附加功能特性:
-
vpp::stream
构造函数会提取附加实参post_check
,其默认值为 true。每次 compute 调用结束时,大部分串流变量均应为空,但其它变量可能指定为跨多个compute()
调用延续数据。在软件仿真中,默认会在每次compute()
调用末尾检查vpp::stream
是否为空,如果不为空,则将断言有效。可选post_check
实参允许您关闭此断言。 -
DEPTH
参数允许用户指定在硬件内实现的 FIFO 深度,并且在软件和硬件仿真期间也会使用此指定深度。 -
vpp::stream
变量可向下传递至 PE 函数,其类型可为hls::stream
。 -
vpp::stream
变量必须声明为static
,以确保 Vitis 软件仿真中正确完成功能确认。在硬件中,并不会隐式清空串流/FIFO,其内容将跨不同运行轮次延续。其行为与static
变量相同。
以下章节描述了在 compute()
主体作用域内使用基本 C++ 编码组合流水打拍式 PE 系统的常用样式。流水线内的 PE 可使用 AXI4-Stream 直接连接或 AXI4 (M_AXI) 全局存储器访问来跨 PE 移动数据。