AXI 协议符合性检查清单:五通道握手、乱序与边界 Burst 核查
AXI 接口“能传数据”不等于符合协议。一次仿真碰巧跑通,可能仍藏着 VALID 等待 READY、等待期间改地址、跨 4KB 边界或漏拉 RLAST 等问题。这份 AXI 协议符合性检查清单面向 AXI4 主从接口评审,把结论拆成可填写的小项;它不能替代所用版本协议规范,也不能替代具体 IP 的配置说明。静态检查可与 RTL Lint 自查 25 项清单 配合,但二者回答的问题不同。
本文要回答的问题
- AXI4 五条通道的握手与信号稳定要求怎样逐项核查?
- 写响应、读最后一拍和不同 ID 的返回顺序应该检查什么?
- 4KB 边界、Burst 长度、对齐与复位怎样留下明确结论?
- AXI4、AXI4-Lite 和具体 IP 配置差异如何避免误判?
一、先界定 AXI 协议符合性检查清单的适用范围
AXI4 把读写拆成五条独立通道:写地址 AW、写数据 W、写响应 B、读地址 AR、读数据 R。每条通道都由本通道的 VALID 与 READY 完成传输,不能拿另一通道的握手代替。评审记录应先写清协议变体、数据位宽、ID 位宽、支持的 Burst 类型、最大未完成事务数,以及窄传输、非对齐访问、独占访问等能力是否启用。
读图时不要把五条通道理解成固定先后链。尤其 W 可以先于 AW 到达,接收端需要按协议处理这种合法情况;写事务真正可以给出 B 响应,则要等写地址和末拍写数据都已接收。AXI4-Lite 是单拍、无 Burst 的简化接口,不能把 AXI4 的 ARLEN、WRAP 或多拍 WLAST 检查硬套过去;AXI3 的写数据交织和 WID 规则也不能混入 AXI4 清单。
二、握手先看发送端承诺,再看接收端自由度
当时钟上升沿采样到 VALID 与 READY 同时为高,该通道才完成一拍传输。发送端一旦拉高 VALID,就必须保持到握手发生,期间对应载荷保持稳定;它不能先观察 READY,再决定是否给 VALID。接收端的 READY 可以等待 VALID,也可以在未完成握手时撤回,因此不能给 READY 套同样的稳定要求。
图中 VALID 拉高后经历数个等待周期,PAYLOAD 保持不变;只有两者同高的那一拍完成传输,随后 VALID 才可撤下。这里的 PAYLOAD 按通道展开:AW/AR 包括地址、ID、LEN、SIZE、BURST 等控制信号,W 包括 WDATA、WSTRB、WLAST,R/B 则包括各自响应、ID 和末拍标志。检查“稳定”时要覆盖等待中的每一拍,而不是只比较第一次和最后一次。
三、事务收尾与 ID 乱序要分开判断
写通道的核心不是“B 最后出现”这句表象,而是 BVALID 的触发条件完整,并且 BID 能对应已经接收的写事务。读通道要逐笔核对返回拍数是否等于 ARLEN + 1,RLAST 是否恰好标记最后一拍;RRESP 也不能被误当作整笔事务只需出现一次的信号。
顺序问题先看 ID,再看返回通道。相同 ID 的读数据必须按对应读地址请求的顺序返回,相同 ID 的写响应也保持请求顺序;不同 ID 之间允许乱序。允许乱序不等于每个从机都必须主动重排:只按顺序返回的实现也可以符合协议。反过来,主机若并发发出不同 ID 事务,就不能擅自假设响应严格按发出次序回来。AXI4 没有 WID,写数据不按 ID 交织,不要把 AXI3 的检查项复制进来。
| 核查对象 | 合格判据 | 常见误判 |
|---|---|---|
| B 响应 | AW 与末拍 W 均已握手后才给出,BID 对应原请求 | 只检查 BVALID 晚于 WLAST |
| R 末拍 | 返回拍数与 ARLEN 对应,RLAST 仅末拍有效 | 把倒数第二拍当末拍 |
| 同 ID 返回 | 保持请求顺序 | 与不同 ID 的乱序规则混为一谈 |
| 不同 ID 返回 | 允许乱序,接收端按 ID 和事务记账 | 要求所有实现必须重排 |
四、4KB 边界、Burst 与复位按配置逐项算
一条 Burst 不得跨越 4KB 地址边界。核查时要用起始地址、每拍字节数 2^AxSIZE、拍数 AxLEN + 1 和地址推进方式一起计算,不能只看起始地址是否落在某个 4KB 区间。AXI4 的 INCR 支持 1~256 拍;FIXED 为 1~16 拍,WRAP 只能取 2、4、8、16 拍。WRAP 还要满足其地址对齐与回绕区间要求,不能只检查长度。
非对齐传输不等于可以任意布置字节。首拍非对齐场景应结合地址、数据总线宽度、AxSIZE 和 WSTRB 检查有效字节;读侧也要明确返回数据所在字节通道。若 IP 配置声明不支持窄传输、非对齐访问或某类 Burst,应把接口能力限制与协议违法分开记录:主机发出了配置不允许的请求,和从机错误执行一个已声明支持的请求,是两类问题。
复位采用低有效 ARESETn。复位期间,主机侧 AWVALID、WVALID、ARVALID 必须为低,从机侧 BVALID、RVALID 必须为低;复位释放后,不能把复位前未完成的 VALID 当作仍然有效继续传输。异步置位、同步释放的实现约定还应与系统复位设计一致,但不能用该实现约定替代接口信号检查。
五、可直接复制的检查清单与填写示范
把“不适用”写成 N/A 并附配置依据,不要留空;证据栏可以填评审位置、波形区间或断言名称,但本文不预设任何工具结果。
# AXI4 协议符合性检查记录
配置:AXI4 / 数据位宽=__ / ID位宽=__ / Burst能力=__ / 最大未完成事务=__
## 五通道与握手
- [ ] H01 AW、W、B、AR、R 均仅以本通道 VALID&&READY 判定传输;证据:__
- [ ] H02 各发送端 VALID 不依赖对端 READY;证据:__
- [ ] H03 VALID 等待握手期间保持有效,且本通道全部载荷稳定;证据:__
- [ ] H04 READY 的撤回和等待行为未被误套 VALID 稳定规则;证据:__
- [ ] H05 写数据先于写地址等合法独立通道次序可被正确处理;证据/N/A:__
## 写事务与读事务
- [ ] T01 BVALID 仅在写地址及末拍写数据均接收后拉高;证据:__
- [ ] T02 BID 对应原 AWID,BRESP 随 BVALID 等待期间稳定;证据:__
- [ ] T03 WLAST 与 W 通道实际末拍一致;证据:__
- [ ] T04 R 返回拍数等于 ARLEN+1,RLAST 恰好位于末拍;证据:__
- [ ] T05 RID、RRESP、RDATA、RLAST 在 RVALID 等待期间稳定;证据:__
## ID 与顺序
- [ ] O01 相同 ID 的读数据保持请求顺序;证据:__
- [ ] O02 相同 ID 的写响应保持请求顺序;证据:__
- [ ] O03 不同 ID 的合法乱序不会破坏接收端事务匹配;证据/N/A:__
- [ ] O04 AXI4 未误引入 WID 或写数据交织假设;证据:__
## Burst、边界与字节通道
- [ ] B01 所有 Burst 均不跨 4KB 地址边界;证据:__
- [ ] B02 INCR/FIXED/WRAP 长度分别符合 AXI4 范围;证据/N/A:__
- [ ] B03 AxSIZE、拍数与地址推进共同核算,WRAP 对齐合法;证据/N/A:__
- [ ] B04 非对齐首拍与 WSTRB/RDATA 字节通道符合约定;证据/N/A:__
- [ ] B05 不支持能力已列入主从双方配置约束,而非当作协议缺陷;证据:__
## 复位
- [ ] R01 复位期间主机三个 VALID 与从机两个 VALID 均为低;证据:__
- [ ] R02 复位释放后无旧事务 VALID 残留,首拍时序符合约定;证据:__下面是假设场景的记录格式示范,只说明怎样把结论写实,不表示某段设计已经通过检查。示例配置为 AXI4、32 位数据总线、支持 INCR,未启用 WRAP。
| 编号 | 结论 | 填写示范 |
|---|---|---|
| H03 | 待补证据 | “AW 等待区间的地址与控制稳定项尚未逐拍核对” |
| O03 | N/A | “配置仅使用单一 ID,不构造不同 ID 乱序场景” |
| B01 | 通过 | “按 INCR 地址推进核算,末拍地址未越出本 4KB 区间” |
| B03 | N/A | “配置不支持 WRAP,主机侧同时禁止发出该类型” |
| R01 | 不通过 | “复位期间发现 ARVALID 未拉低,需修正后再复核” |
完成清单也不代表功能、性能和系统一致性已经得到证明;它与 lint 的边界可参照 Verilator Lint 告警误差矩阵 中对静态结论范围的讨论。
这一篇在知识体系里的位置
本篇是 AXI4 接口评审的记录模板,重点在协议可见行为,不展开具体总线 IP 参数,也不代替功能验证计划。五通道检查可与 RTL 静态检查并行,接口符合性通过后仍需继续做系统级验证;静态检查与流片安全之间的距离见 RTL 通过不等于流片安全。
总结
这份 AXI 协议符合性检查清单以 AXI4 为边界:五通道独立握手,VALID 不等待 READY 且断言后连载荷一起稳定,B 响应等待写地址与末拍数据收齐,R 用拍数和 RLAST 闭环;同 ID 保序、不同 ID 可乱序,Burst 不跨 4KB,并按类型核查长度、对齐和字节通道,复位期间清掉规定的 VALID。使用时先锁定协议变体和 IP 能力,再逐项填写证据或 N/A,避免把 AXI4-Lite、AXI3 或某个实现的可选行为当成通用协议规则。