一、概述
- 对于会被经常复用的总线协议或者功能模块,可以针对其开发专用的验证IP(VIP)。
- 对于总线VIP,需要master agent和slave agent,有时也需要Environment去构建多个主端对从端的验证环境。
- VIP也需要对应的配置对象,即configuration object,同时也需要对应的接口。
二、主要的开发阶段
阶段1(定义)
- 功能特性提取
- 特性覆盖率创建及映射
- VIP的架构
阶段2(VIP基本搭建)
- driver、sequencer、monitor
- 实现基本上的端到端的sequence
阶段3(完成monitor与scoreboard)
- 完成monitor —— 100%实现(checkers,assertions)
- 完成scoreboard —— 100%实现(数据完整性检查)
- 在monitor中,完成监测到的transaction与function coverage实现映射。
- 为映射更多的基本功能覆盖率,创建其它sequences。
阶段4(扩充test和sequence阶段)
- 实现更多sequences,从而获得80%的功能覆盖率。
阶段5(完成标准)
- sequence最终可以实现100%的功能覆盖率。
- 回归测试结果和最终的总结报告。
验证方法
验证自己写的AHB的master agent和slave agent都没有问题,没有办法保证master或者slave都正确。
引入成熟的VIP放入到验证环境里面,类似于做反向。
把成熟的VIP的Master和自己的AHB的slave设置为Passive模式,连接两个验证模块。这样AHB的Master可以访问成熟的VIP的Slave,同时原有的test sequence library可以复用到AHB上面。这样就实现了用成熟VIP的测试序列去验证自己想要的Master。Passive模式下的Master可以monitor总线,也可以收集总线上的覆盖率,所以通过成熟的VIP的test和coverage来验证AHB的Master VIP。
接下来同样的道理,把成熟的Slave VIP和AHB的Master VIP设置为Passive模式,这样就可以使用成熟的test和coverage来验证AHB的Slave VIP。
最后把成熟的Master VIP和Slave VIP都设置为Passive模式,相当于把整个成熟环境都Passive掉,因为AHB的Master和Slave通过上面的方法都得到了验证,所以就可以进行AHB的Master对AHB的Slave的验证了。
三、VIP的发布
主要内容
VIP的源代码(可以选择加密,或者保留接口函数)
- active模式包括:driver,sequencer和tests。
- passive模式包括:monitor,用来做协议检查的assertion,接口的function coverage model。
特性列表以及对应的覆盖率列表
- 保证与标准协议文档的主要特性对应。
- 与对应组件的测试,功能覆盖点,协议assertion和scoreboard检查。
VIP文档
- VIP的结构,具体的设计,用户指南,安装指令和覆盖率报告。
运行环境
- 回归仿真步骤(文件、编译、仿真、结果)。