一、概述
- 比较器实现难度较大,且费时费力,同时还需要维护。
- checker负责的是模拟设计行为和功能检查。
二、比较器的功能
- 可以缓存从各个Monitor收集到的数据。
- 将DUT输入接口侧的数据汇集给内置的reference model,它扮演了模拟硬件功能的角色。
- 通过数据比较方法,检查实际收集到的DUT输出端接口数据是否同reference model产生的期望数据一致。
- 对于设计内部的关键功能模块,也有相对应的线程进行独立的检查。
- 可以将检查成功的信息统一纳入到检查报告中,检查失败,也可以采取暂停仿真,同时报错。
三、比较器的实现方式
- 线上比较:在仿真时收集数据和在线比较,并实时报告。
- 线下比较:在仿真时收集的数据记录在文件中,仿真结束后比较。
将checker添加到验证环境中,需要它分析DUT的边界激励,激励数据的输入,并且按照硬件功能来预测输出的数据内容,这种预测发生在reference model中,有时也称为predictor。reference model也会内置一些缓存,分别存放从DUT输入端观察到的数据,以及经过功能转换的数据,同时checker也有其它缓存来存放从输出端采集到的数据。
四、比较器组件结
checker分散搁置
- 各自检查对应模块的功能。
- checker之间的通信需要特殊连接。
- 报告信息较难统一。
- 对于各个checker的使能控制因其分散而变得复杂。
checker集群搁置
- 各自检查对应模块的功能。
- checker各自相邻,可以共享Monitor的输入,减少复杂的连接关系。
- 可以按照统一的报告形式,写入到记录文件中,集中管理各个checker。
五、比较器结构实现建议
- 对于复杂系统验证,倾向于集中管理Stimulator和checker。
- Monitor相对更加独立,只作为监测方将数据传给checker即可。
- Monitor与checker一一对应, 通常进一步将它们封装在agent单元组件中,而checker则最终集群搁置在中心化的位置。