covergroup CoverLength;
coverpoint tr.length;
option.per_intance = 1; //单独计算每个实例覆盖率
endgroup
注释
如果有多个covergroup实例,可以通过参数来对每个实例传入单独的注释,这些注释最终会显示在覆盖总结数据的 报告中。
covergroup CoverPort(int lo,hi, string comment);
option.comment = comment;
option.per_instance = 1;
coverpoint port
{bins range = {lo:hi};
}
endgroup
...
CoverPort cp_lo = new(0,3, "Low port numbers");
CoverPort cp_hi = new(4,7, "Highport numbers");
覆盖次数限定
(1)默认情况下,数值采样了1次就可以计入有效的bin。可以通过修改at_least来修改每个bin的数值最少的 采样次数,如果低于at_least数值,则不会被计入bin中。
(2)option.at_least可以在covergroup中声明来影响所有的coverpoint,也可以在coverpoint中声明只影响该coverpoint下所有的bin。
(3)一个covergroup或者一个coverpoint的目标就是100%覆盖率。
covergroup CoverPort;
coverpoint port;
option.goal = 90; //目标设置
endgroup
(4)sample():采样
(5)get_coverage()或者get_inst_coverage():获取 覆盖率,返回0-100的real值。
(6)set_inst_name(string)来设置covergroup名称
(7)start()/或者stop()来使能 或者关闭覆盖率收集。