指定串流连接 - 2023.2 简体中文

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

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

对于 FPGA、基于 FPGA 的 SoC 和 Versal 自适应 SoC 器件而言,支持硬件加速器流水线通过串流来进行通信是其主要优势之一,这在 DSP 和图像处理应用领域以及通信系统内能得到广泛使用。串流中所涉及的内核端口均在内核中定义,主机程序不会对其进行寻址。在将数据转发到另一个内核以供处理之前,无需将数据发送回全局存储器。内核之间的连接是在 v++ 链接进程中直接定义的,如下所述。

在链接期间使用 --connectivity.sc 选项即可将某个内核的串流数据输出端口连接到另一个内核的串流数据输入端口,或者在 ADF 计算图应用的 PL 内核与 PLIO 之间建立连接。该选项可在命令行上指定,或者也可在使用 --config 选项指定的 config 文件中指定,如 v++ 命令 中所述。

重要: 如果 --connectivity.sc 内核驱动其本身,那么会发生错误。

要将生产者内核的串流输出端口连接到使用者内核的串流输入端口,请在 v++ 配置文件内使用 connectivity.stream_connect 选项来指定连接,如下所示:

[connectivity]
#stream_connect=<cu_name>.<output_port>:<cu_name>.<input_port>:[<fifo_depth>]
stream_connect=vadd_1.stream_out:vadd_2.stream_in
stream_connect=vadd_2.stream_in:ai_engine_0.DataIn0

其中:

  • <cu_name> 是由 connectivity.nk 选项判定的 CU 的实例名称,如 创建内核的多个实例 中所述。按 创建内核的多个实例 中所述方式,可在配置文件中指定 cu_name,或者如未指定此名称,则可由工具自动定义。
    提示: 指定到 Versal AI 引擎端口的连接时,<cu_name> 设为 ai_engine_0,如上所示。
  • <output_port><input_port> 是生产者内核或使用者内核中定义的串流端口。
    重要: 如果输出端口与输入端口的端口宽度不匹配,那么在构建进程中,Vitis 编译器会在这两个端口之间自动插入数据宽度转换器。包含数据宽度转换器会导致把较大位宽的输出截断为较小位宽的输入,或者将把较小的位宽扩展为较大的位宽。
  • [:<fifo_depth>] 会在 2 个串流端口之间插入指定深度的 FIFO 以防止发生停滞。请指定整数值。