Systemverilog(绿皮书)第九章——功能覆盖率(四)覆盖选项

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()来使能 或者关闭覆盖率收集。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章