仿真事件追踪 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

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

AI 引擎仿真器中的事件可提供有关特定时刻的系统信息。与时间戳、类型和一系列数据值关联的事件被称为有效载荷。有效载荷的解读取决于事件类型。时间戳支持事件排序、计算因果关系和对一系列事件执行验证器的实现。

为便于事件建模,AI 引擎阵列的关键模块包括处理器核、DMA、锁定模块、存储器和 I/O 串流。每个模块均可视作为事件生成器/响应器。每个模块均可接收事件和响应事件。可生成新事件作为响应。事件基于事件生成器来分类。在事件定义中并不会显式提及时间戳。每起事件均以有效载荷来描述,有效载荷即多个与该事件关联的值。每个 AI 引擎、存储器、DMA 或锁定均可按二维索引 <col, row> 进行寻址,二维索引即 AI 引擎阵列中的列索引和行索引。下表显示了部分 AI 引擎事件。所有事件均包含时间戳(表中省略)。

表 1. AI 引擎事件
事件名称 描述
CORE_RESET <col, row> 核 <col, row> 脱离复位,开始从 PC0 执行代码。
CORE_WAIT <col, row> 核 <col, row> 正在等待锁定、串流输入或存储器响应。
CORE_READY <col, row> 解决停滞问题后,核 <col, row> 已就绪。

ACQ_READ_LOCK_REQ

ACQ_WRITE_LOCK_REQ

<col, row, lockid, dir, pc, info> 核 <col, row> 请求对其相邻的某一个存储体进行锁定。<pc> 对应当前程序计数器。<info> 是符号信息。
REL_LOCK_REQ <col, row, lockid, dir> 核 <col, row> 释放相邻锁定模块中的锁定。
CORE_READ_REQ <col, row, address, dir, port, bank, data, pcinfo, addrinfo> 核 <col, row> 请求对存储器地址执行读取。此地址为存储器本地的 15 位地址。搭配 <dir, address> 构成 17 位地址。<dir> 字段可指定 [E, W, N, S] 方向。<port> 用于指定加载端口 (A,B),<bank> 则用于指定访问奇数或偶数存储体。在事件中会提供有关程序变量和 <pc> 值的符号信息。
CORE_WRITE_REQ <col, row, address, dir, bank, data, size.pcinfo, addrinfo> 核 <col, row> 会在特定的 15 位地址写入数据。<dir> 可指定当前访问的存储器的方向。在事件中会提供有关 <pc> 值和数据符号的符号信息。
PC_CHANGE <col, row, pc, info> 核 <col, row> 会显示 <pc> 值的更改。这对识别循环很有用。
DMA_S2MM_ACQ_LOCK <col, row, ch> DMA 请求锁定。<ch> 字段表示 DMA 通道编号。受支持的通道为 0 和 1。
DMA_S2MM_IDLE <col, row, bd, ch> DMA 处于空闲状态。<bd> 表示缓冲器描述符。
DMA_S2MM_START <col, row, bd, ch, start> 在开始地址启动 DMA 传输
DMA_S2MM_DONE <col, row, bd, ch> 在结束地址终止 DMA 传输
DMA_S2MM_LOCKSTALL <col, row, bd, ch> DMA 已停滞以获取锁定
DMA_S2MM_LOCKSTALL_RELEASE <col, row, bd, ch> DMA 获取锁定,并释放停滞
DMA_MM2S_ACQ_LOCK <col, row, ch> DMA <col, row> 请求锁定
DMA_MM2S_IDLE <col, row, ch> DMA <col, row> 处于空闲状态
DMA_MM2S_START <col, row, bd, ch, start> 在 <col, row> 的开始地址处启动 DMA 传输,<bd> 表示缓冲器描述符。
DMA_MM2S_DONE <col, row, bd, ch> 在 <col, row> 的结束地址处终止 DMA 传输,<bd> 表示缓冲器描述符。
DMA_MM2S_LOCKSTALL <col, row, bd, ch> DMA 已停滞以获取锁定
DMA_MM2S_LOCKSTALL_RELEASE <col, row, bd, ch> DMA 获取锁定,并释放停滞
IO <dir, id, data > I/O 事件表示输入串流上存在新数据。<dir> [E, W, N, S] 和 <id> [0–15] 相结合即可表示物理串流,data 字段表示串流上出现的 32 位数据。
DATA_HEAD <col, row, name, netid, pktid, idx> 核 <col, row> 在信号线 <netid> 上通过布线 <name> 来传输包切换数据报头。此包带有包 ID <pktid>。<idx> 保留。
DATA_START <col, row, name,netid, pktid, idx> 数据有效载荷(包切换或电路切换)起始。所有字段都遵循 DATA_HEAD 字段的含义。
DATA_RESUME <col, row, name,netid, pktid, idx> 数据有效载荷在停滞后恢复。所有字段都遵循 DATA_HEAD 字段的含义。
DATA_STALL <col, row, name, netid, idx> 数据有效载荷在包有效载荷内停滞。所有字段都遵循 DATA_HEAD 字段的含义。
DATA_END <col, row, name, netid, idx> 数据有效载荷(包切换或电路切换)结束。所有字段都遵循 DATA_HEAD 字段的含义。

PL_TO_SHIM, SHIM_TO_PL

<name, col, channelId, data0, data1, tlast> 数据在 PL 与 AI 引擎阵列接口 (SHIM) 之间移动。名称显示 PL 块名称。
PL2PL 和 PL2PL_E <name, port, data0, data1, tlast, tkeep> PL 端口活动起始和结束。名称和端口显示 PL 块名称/端口。
DM_READ_REQ <col, row, portname> 存储器模块的某个端口上的读取请求事件。读取端口可以是核、DMA 或 AXI4 存储器映射接口读取请求端口。
DM_WRITE_REQ <col, row, portname> 存储器模块的某个端口上的写入请求事件。写入端口可以是核、DMA 或 AXI4 存储器映射接口写入请求端口。
DM_BANK_CONFLICT <col, row, bankid, bank> 存储体冲突事件会显示因向存储器模块的同一个存储体发送多个请求而导致的存储体冲突。