使用 vpp::stream 的串流连接 - 2023.2 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 简体中文

PE 函数的每个自变量都必须连接到顶层 compute() 函数的实参或者连接到静态声明的串流。vpp::stream 继承自 Vitis HLS hls::stream,如Vitis HLS 用户指南 (UG1399) 的“HLS 串流库”部分中所述。

vpp::stream 对象可提供多项附加功能特性:

  • vpp::stream 构造函数会提取附加实参 post_check,其默认值为 true。每次 compute 调用结束时,大部分串流变量均应为空,但其他变量可能指定为跨多个 compute() 调用延续数据。在软件仿真中,默认会在每次 compute() 调用末尾检查 vpp::stream 是否为空,如果不为空,则将断言有效。可选 post_check 实参允许您关闭此断言。
  • DEPTH 参数允许用户指定在硬件内实现的 FIFO 深度,并且在软件和硬件仿真期间也会使用此指定深度。
    提示: DEPTH 默认值设为 1024,通常在硬件编译中,这属于过度利用资源。建议您为 compute() 作用域内使用的串流指定深度以节省资源。您可采用较小的深度值 2 来运行软件仿真,以测试功能并帮助确定所需的深度。
  • vpp::stream 变量可向下传递至 PE 函数,其类型可为 hls::stream
  • vpp::stream 变量必须声明为 static,以确保 Vitis 软件仿真中正确完成功能确认。在硬件中,并不会隐式清空串流/FIFO,其内容将跨不同运行轮次延续。其行为与 static 变量相同。

以下章节描述了在 compute() 主体作用域内使用基本 C++ 编码组合流水打拍式 PE 系统的常用样式。流水线内的 PE 可使用 AXI4‑Stream 直接连接或 AXI4 (M_AXI) 全局存储器访问来跨 PE 移动数据。