RTL 内核 XML 文件 - 2022.1 简体中文

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文
提示: package_xo 命令将从已封装的 IP 的 component.xml 创建 kernel.xml 文件,因此您无需手动提供此文件或使用“RTL Kernel”Wizard(RTL 内核向导)来生成此文件。

针对每个 RTL 内核必须创建 1 个名为 kernel.xml 的 XML 内核描述文件,以供在 Vitis 应用加速开发流程中使用。此 kernel.xml 文件可指定内核属性,如运行时和 Vitis 工具流程所需的寄存器映射和端口。以下代码显示的是 kernel.xml 文件的示例。

<?xml version="1.0" encoding="UTF-8"?>
<root versionMajor="1" versionMinor="6">
  <kernel name="vitis_kernel_wizard_0" language="ip_c" 
      vlnv="mycompany.com:kernel:vitis_kernel_wizard_0:1.0" 
      attributes="" preferredWorkGroupSizeMultiple="0" workGroupSize="1" interrupt="true">
    <ports>
      <port name="s_axi_control" mode="slave" range="0x1000" dataWidth="32" portType="addressable" base="0x0"/>
      <port name="m00_axi" mode="master" range="0xFFFFFFFFFFFFFFFF" dataWidth="512" portType="addressable" 
         base="0x0"/>
    </ports>
    <args>
      <arg name="axi00_ptr0" addressQualifier="1" id="0" port="m00_axi" size="0x8" offset="0x010" type="int*" 
         hostOffset="0x0" hostSize="0x8"/> 
    </args>
  </kernel>
</root>
注释: kernel.xml 文件可使用“RTL Kernel”Wizard 来自动创建,以指定 RTL 内核的接口规范。如需了解更多信息,请参阅 “RTL Kernel”Wizard

下表详细描述了 kernel.xml 的格式:

表 1. 内核 XML 文件内容
标签 属性 描述
<root> versionMajor 对于最新版本的 Vitis 软件平台,该属性设置为 1。
versionMinor 对于最新版本的 Vitis 软件平台,该属性设置为 6。
<kernel> name 内核名称
language 对于 RTL 内核,该属性始终设置为 ip_c
vlnv 必须与 IP 的 component.xml 中的供应商、库、名称和版本属性匹配。例如,如果 component.xml 包含以下标签:

<spirit:vendor>xilinx.com</spirit:vendor>

<spirit:library>hls</spirit:library>

<spirit:name>test_sincos</spirit:name>

<spirit:version>1.0</spirit:version>

内核 XML 中的 vlnv 属性必须设置为:xilinx.com:hls:test_sincos:1.0

attributes 保留。将其设置为空字符串:""
preferredWorkGroupSizeMultiple 保留。将其设置为 0。
workGroupSize 保留。将其设置为 1。
interrupt 如果 RTL 内核具有中断,该属性设置为“true”(interrupt="true"),否则省略。
hwControlProtocol 指定 RTL 内核的控制协议。
  • ap_ctrl_hs:RTL 内核的默认控制协议。
  • ap_ctrl_chain:支持数据流的链式内核的控制协议。在控制寄存器中添加 ap_continue 以启用 ap_done/ap_continue 完成确认。
  • ap_ctrl_none:为数据驱动的内核应用的控制协议 (none)。
  • user_managed:指定满足接口要求的内核,Vitis 编译器遵循此接口要求即可将此内核与其它内核进行链接,但不遵循 XRT 的执行管理要求。如需了解更多信息,请参阅 创建用户管理的 RTL 内核
<port> name 指定端口名称。
重要: AXI4-Lite 接口必须命名为 S_AXI_CONTROL
mode 至少需要一个 AXI4 主端口和一个 AXI4-Lite 从端口。

可指定 AXI4-Stream 端口以在内核之间进行数据串流。

  • 对于 AXI4 主端口,该属性设置为“master”。
  • 对于 AXI4 从端口,该属性设置为“slave”。
  • 对于 AXI4-Stream 主端口,将其设置为“write_only”。
  • 对于 AXI4-Stream 从端口,将其设置为“read_only”。
range 端口的地址空间范围。
dataWidth 通过此端口的数据宽度,默认为 32 位。
portType 指示端口是否可寻址或进行串流。
  • 对于 AXI4 主端口和从端口,将其设置为“addressable”。
  • 对于 AXI4-Stream 端口,将其设置为“stream”。
base 对于 AXI4 主端口和从端口,将其设置为 0x0。此标签不适用于 AXI4-Stream 端口。
<arg> name 指定内核软件实参名称。
addressQualifier 有效值:
  • 0:标量内核输入实参
  • 1:全局存储器
  • 2:本地存储器
  • 3:常数存储器
  • 4:管道
id 仅适用于 AXI4 主端口和从端口。ID 应是有顺序的。它用于确定内核实参的顺序。

不适用于 AXI4-Stream 端口。

port 指定与 arg 连接的 <port> 名称。
size 实参大小(以字节为单位)。默认值为 4 个字节。
offset 表示寄存器存储器地址。
type 实参的 C 数据类型。例如,uint*int*float*
hostOffset 保留。设置为 0x0
hostSize 实参的大小。默认值为 4 个字节。
memSize 对于 AXI4-Stream 端口,memSize 设置创建的 FIFO 的深度。
提示: 不适用于 AXI4 端口。
以下标签用于为 AXI4-Stream 端口指定其它标签。这些标签不适用于 AXI4 端口。
<connection> connection 标签用于描述硬件中的实际连接,从内核到针对 PIPE 插入的 FIFO 的连接或从 FIFO 到内核的连接。
srcInst 指定连接的源实例。
srcPort 指定连接的源实例上的端口。
dstInst 指定连接的目标实例。
dstPort 指定连接的目标实例上的端口。