在芯片验证中,要想发现bug
需要激励能够覆盖到特定场景
需要一系列的checker能够发现DUT的错误
checker分为两种类型:
典型的和验证组件相对比较独立的checker,这些checker通常与时序相关,例如检查DUT中的状态机是否永远不会进入某个状态,检查接口上的vld-rdy时序符合协议。
另一种类型的检查就是数据scoreboard。scoreboard用于检查系统中数据的完整性。
本文我们先介绍时序的checker,即非scoreboard的checker
时序checker通常用于检查随时序变化的行为。时序checker通过时间表达式触发以对某些条件进行检查,这个时序表达式可能像时钟周期一样简单,也可能嵌套了很多非常复杂的时间表达式。
时序checker一般是比较白盒的,深入探索DUT中RTL中的一切预期行为:
A事件在条件a下一定发生
B事件一定不会发生
A事件发生后一定会发生B事件
举个具体例子
在用例结束可以做一个验证环境和DUT的final值check
检查fifo不会读空和写满
输出接口不会违反AMBA协议
理论上,我们可以加入无限多的checker,我们甚至没法判断哪些checker是没有价值的,最终导致checker指数级增长,从而降低仿真器的运行效率。
也许,我们的队员在会议中提出了很多很多的checker,听起来都似乎有些道理。但事实上是否真的有价值,还是只是个鸡肋般的checker?
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !