AMBA AXI/AHB/APB 验证平台:VIP、内存模型、协议检查与 UVM 环境
更新时间:2026-09-14。本文是数字验证系列第 12 篇。总线协议基础可参考 AMBA 总线入门、AXI4-Full 基础、AXI4-Lite Slave 和 AHB-to-APB 桥。本篇讲怎么验证。
一、三种总线最该测什么
| 总线 | 关键特征 | 验证重点 |
|---|---|---|
| AXI4-Full | 五通道独立、乱序、outstanding、burst、cache/lock/QoS | 死锁、顺序、反压、跨 4KB、exclusive、窄传输 |
| AXI4-Lite | 简单寄存器访问 | 一次一笔、响应错误、访问权限、复位中访问 |
| AHB | 共享地址/数据、pipeline、burst | hready/hresp、split/重试风格、wrap/incr |
| APB | 低速外设,setup/access 两拍 | setup 保持、pslverr、使能时序、背靠背访问 |
二、推荐 UVM 结构
- Master agent 生成合法/边界/压力流量。
- Slave agent 模拟内存和不同响应延迟。
- Monitor 只采样总线,不驱动,供 checker/coverage/scoreboard 使用。
- Predictor 根据寄存器/路由/内存模型预测结果。
- Scoreboard 比较 payload、响应、最终内存镜像和副作用。
三、VIP 还是自研 agent
| 方案 | 优点 | 风险 |
|---|---|---|
| 商业 VIP | 协议检查全、覆盖率成熟、可测非法激励 | license 成本、版本/相位定制受限 |
| 自研 agent | 可控、便于带芯片特有属性 | 容易“按自己理解检查自己”,漏协议边角 |
| VIP + 轻量自研 | 关键口用 VIP,简单 APB 自研 | 需要统一 transaction/phase 封装 |
无论哪种,都要把协议检查和数据检查分开:VIP 负责“时序合法”,scoreboard 负责“数据和路由正确”。
四、AXI 必测场景
- outstanding 打满:地址先发完,响应延迟返回,检查 credit 不丢。
- 乱序响应:同 ID 保序,不同 ID 可按 slave 策略乱序。
- W/A 通道重排:W data 早于 AW 或晚于 AW 的合法范围。
- 反压与间歇 ready:valid 一旦拉起必须保持,ready 可随机。
- burst 边界:跨 4KB、wrap 边界、窄传输 strobe、非对齐。
- exclusive/atomic:监控 reservation、成功/失败响应。
- DECERR/SLVERR:错误响应不能污染后续正常事务。
- reset/domain crossing:复位期间 valid 必须拉低,退出复位后无悬空事务。
- QoS/仲裁:高压下带宽、延迟、公平性(另见性能验证)。
五、内存模型不是简单关联数组
好的 memory model 至少支持:地址区域属性(可读写/只读/设备内存)、字节 strobe、端序、默认错误策略、延迟模型、独占监控、初始化/后门加载、多 master 顺序冲突。Scoreboard 要处理乱序提交:以事务 ID 和预计完成顺序保存 expected,不应按发送顺序简单入队。
六、覆盖率建议
- valid/ready 握手的 4 种组合,尤其 valid=1、ready=0 长时间保持。
- burst type × size × len × 地址边界。
- response OKAY/EXOKAY/SLVERR/DECERR。
- 单 ID/多 ID、最大 outstanding、空队列/满队列。
- reset 发生在地址后、数据中、响应前。
- AHB/APB 桥的连续访问、错误传播、时钟域跨接。
七、自检平台:先证明验证环境会抓错
总线验证平台最危险的情况是 checker 与 driver 犯同一种协议误解,导致 DUT 错了也通过。平台接入 DUT 前应注入一组“已知错误”的教学 DUT 或 fault wrapper:valid 拉起后中途撤销、同 ID 响应乱序、WSTRB 与写数据不一致、SLVERR 后数据仍被写入、复位期间保留 valid。协议 checker 必须全部报错,scoreboard 也必须捕获数据副作用。
覆盖率也需要反向验证。关闭 DUT 的某个反压能力或强制 outstanding 上限变小,对应覆盖率 bin 应消失或发生变化;注入一个 exclusive monitor 不支持的 slave,exclusive fail 场景应命中。这样才能证明覆盖率不是“写了但永远不可能采样到”的空 bin。对于商业 VIP,应开启协议非法激励选项,不能只使用 always-legal 的默认序列,否则 VIP 退化成普通流量发生器。
八、寄存器桥和多主互联的特殊检查
AHB-to-APB、AXI-to-AHB 一类桥接器除了数据搬运,还要验证时钟域、流水线和错误响应转换。AHB 的两拍流水线可能在连续访问中重叠,APB 又需要 setup/access 两拍,桥必须保证第二笔访问不会覆盖第一笔的 phase。Slave 返回错误时,桥对主机侧的响应码、burst 提前终止方式、缓冲刷新都要符合协议。
多主互联要建立路由表和地址保护模型:哪些 master 可访问哪些 slave、保护位和安全态如何传播、错误端口是否返回 DECERR。功能 sequence 应随机选择地址区域、身份、burst 和并发度,scoreboard 不只比较数据,还检查访问是否被允许、QoS 标记是否保持、观测顺序是否符合每个 ID 的规则。这样总线验证才从“发读写”升级为完整的片上通信一致性验证。
Checklist
- [ ] 总线 monitor 在接口级采样,复用给 checker/cov/SB。
- [ ] 检查 valid 拉起后保持到握手,不得在等待中改 payload。
- [ ] AXI 同 ID 顺序、不同 ID 乱序策略明确。
- [ ] 4KB、strobe、非对齐、wrap、exclusive、错误响应均覆盖。
- [ ] Slave 延迟和反压随机化且可复现种子。
- [ ] 复位、低功耗状态和 scan mode 下总线行为已测。
- [ ] 协议覆盖率与功能覆盖率分开签核。
相关与延伸
UVM 组件见 UVM 组件与 phase,数据流见 Sequence/Driver/Scoreboard;电源状态下的总线访问见 Power-aware UVM。
总结
AMBA 验证的核心不是“能读写”,而是在五通道独立、反压、乱序、错误和复位交织下仍满足协议:用 VIP 或严格 agent 做协议检查,用可预测的内存模型做数据检查,再用覆盖率证明边界组合真的被压到。