“cross”是SV功能覆盖率中一个非常重要的特性,也是能够开发出比代码覆盖率丰富的功能覆盖率原因之一。
上面的SV功能覆盖率中分别为两个变量' offset '和' adr '创建了coverpoint bins。
ofsbin[0]…ofsbin[3],用于覆盖' offset '的四个值(0、1、2和3)
adrbin[0]…adrbin[3],用于覆盖' adr '的四个值(0、1、2和3)
Cross coverpoint (adr_ofst)会根据ofst和ar再组合出16个bin。
在上面的示例中,coverpoint ofset和coverpoint ar中所有bin都已经被覆盖了,所以coverpoint ofset和coverpoint ar的覆盖率是100%。
但是由于没有同时覆盖到adrbin[2]和ofsbin[0]等cross场景,所以adr_ofst这个cross coverpoint的覆盖率没有到100%。
简单来说,由于coverpoint 语法中的cross特性,使得功能覆盖率建模能够创建比代码覆盖率更加丰富复杂的场景,这也是芯片仿真验证中最能够体现工程师的经验的地方之一。