自由运行的内核的编码指南 - 2022.1 简体中文

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

如前文所述,自由运行的内核仅包含 hls::stream 输入和输出。编码指南建议包括:

  • 如果端口正在与来自内核的另一个串流进行交互,请使用 hls::stream<ap_axiu<D,0,0,0> >
  • 如果端口正在与主机交互,请使用 hls::stream<qdma_axis<D,0,0,0> >
  • 针对函数参数使用 hls::stream 数据类型会导致 Vitis HLS 推断接口的 AXI4-Stream 端口 (axis)。
  • 自由运行的内核还必须指定以下特殊 INTERFACE 编译指示。
    #pragma HLS interface ap_ctrl_none port=return
提示: ap_ctrl_none 意味着内核没有控制接口,因此通常不生成 s_axilite 接口。但是无论存在标量实参还是 m_axi 接口,都需要使用 s_axilite 接口。

以下代码示例显示的是包含一项输入和一项输出的自由运行的内核,该内核与另一个内核进行通信。

void kernel_top(hls::stream<ap_axiu<32, 0, 0, 0> >& input, 
   hls::stream<ap_axiu<32, 0, 0, 0> >& output) {
#pragma HLS interface ap_ctrl_none port=return  // Pragma for free-running kernel
#pragma HLS DATAFLOW // The kernel is using DATAFLOW optimization
   ...
}
提示: 此示例显示了自由运行的内核中串流输入/输出端口的定义。但在内核链接进程中,必须定义自由运行的内核与其它内核之间的往来串流连接,如 在计算单元之间指定串流连接 中所述。