System Verilog学习笔记(九)——验证环境结构
测试平台(testbench)是整个验证系统的总称。它包含验证结构中的各个组件、组件之间的连接关系、测试平台的配置和控制。而且也包含编译仿真的流程、结果分析报告和覆盖率检查等。
验证环境框图
- 各个验证组件之间是独立的
- 验证组件与设计之间需要连接
- 验证组件之间需要通信
- 验证环境也需要时钟和复位信号的驱动
验证环境组件
1.激励发生器(stimulator)
验证环境的重要组件,在一些场合也被称为driver(驱动器)、BFM(bus function model,总线功能模型),behavioral(行为模型)或者generator(发生器)
- stimulator的主要职责是模拟与DUT相邻设计的接口协议,只需要关注如何模拟接口信号,使其能够以真实的接口协议来发生激励给DUT。
- stimulator应该给出更多比真实硬件行为更丰富的激励,会使在模块级的验证更加充分。
- 他的接口主要是同DUT之间的连接,此外也应该有时钟和复位的输入,确保生成的数据同DUT接口一侧是同步关系。
- Stimulator可以存储生成过的数据用于后期数据比较调试
- 有其他的配置接口来控制接口的数据生成
- stimulator可以进一步分为发起器(initiator)和响应器(responder)
2. 监测器(Monitor)
- Monitor的主要功能是用来观察DUT的边界或者内部信号,并且经过打包整理传送给其他验证平台的组件,例如checker(比较器)。
- 从监测信号的层次来划分monitor的功能,可以分为观察DUT边界信号和观察DUT内部信号。边界信号,对于系统信号如时钟,可以监测其频率变化;对于总线信号,可以监测总线得到传输类型和数据内容,以及检查总线时序是否符合协议。对于内部信号,可以用来指导stimulator的激励发送,或者完成覆盖率收集,完成内部功能的检查。
3. 比较器(checker)
- checker的主要任务是模拟设计行为和功能检查的任务
- 缓存从各个monitor收集到的数据
- 将DUT输入接口侧的数据汇集到内置的 reference model(参考模型)。reference model扮演模拟硬件功能的角色
- 通过数据比较的方法,检查实际收集到的DUT输出端接口数据是否和reference model产生的期望数据一致
- 对于设计内部的关键功能模块,也有相对应的线程进行独立的检查
- 可以将检查成功的信息统一纳入到检查报告中,便于仿真后追溯,若检查失败也可以暂停仿真同时报告错误信息的方式进行在线调试
- 线上比较(online check):在仿真时收集数据和在线比较,并实时报告
线下比较(offline check):将仿真时收集到的数据记录在文件中,在仿真结束后,通过脚本或者其他手段进行数据比较。