功能覆盖是按照设计规范衡量验证状态的一个标准,它可以分成两类:
a.协议覆盖
b.测试计划覆盖。
断言可以用来获得有关协议覆盖的穷举信息。SVA提供了关键词“ cover”来实现这一功能, cover语句的基本语法如下所示:
<cover_name> : cover property(property_name)
“ cover_name”是用户提供的名称,用来标明覆盖语句,“property name”是用户想获得覆盖信息的属性名。例如,在9节定义的检验器“ mutex_chk”,可以如下所示来检查它的覆盖情况。
c_mutex : cover property(p_mutex);
cover语句的结果包含下面的信息:
(1)属性被尝试检验的次数。
(2)属性成功的次数。
(3)属性失败的次数。
(4)属性空成功的次数。
检验器“ mutex_chk”在一次模拟中的覆盖日志的实例如下所示。
c mutex , 12 attempts , 12 match , 0 vacuous match
就像断言( assert)语句一样,覆盖( cover)语句可以有执行块在一个覆盖成功匹配时,可以调用一个函数 (function)或者任务(task),或者更新一个局部变量。