覆盖率选项,覆盖率分析
发布时间
阅读量:
阅读量
covergroup选项提供不同的覆盖率选项,来计算覆盖率。
单独列出每个covergroup实例的覆盖率
通常情况下,在不同场景中都会采用该\texttt{covergroup}来实现其功能。在默认配置下,默认值会整合所有\texttt{sv}实例的覆盖范围进行综合评估。若希望详细查看每个\texttt{covergroup}的具体覆盖情况,则需启用相应的参数设置。
covergroup cov;
coverpoint tr.length;
option.per_instance=1; //指定单独计算该覆盖率吧报告
endgroup
给covergroup传参,这些参数最终会显示在覆盖率报告中
covergroup cov(int lo, hi, string comment); //lo,hi,参数也能传进来,提高复用率
option.comment=comment; //每个例化的cov都会传入一个comment
option.per_instance=1; //指定单独计算该覆盖率吧报告
coverpoint port{
bins range={[lo:hi]};
}
endgroup
cov cp_lo=new(0,3,"low port number"); //传入comment,传入注释
cov cp_hi=new(0,3,"high port number");
给每个bin设置,最少采用次数
达到最低采样次数,就表明是覆盖上了,默认最少采样是1次。
option.at_least,选项设置采样次数。在covergroup中声明时,表示该covergroup中所有的bin全部都设置有效,放在coverpoint中声明,则只对当前的coverpoint中的bin有效
covergroup或者coverpoint的默认覆盖率总和是100%,可设定覆盖率低于100%
option.goal=90; 覆盖率设置90%,同样是放到covergroup或者coverpoint中有不同的效果
与covergroup有关的方法
sample() :采样
get_coverage() //获取所有该covergroup实例的覆盖率,返回0~100数
get_inst_coverage() //返回当前实例的覆盖率,返回0~100数
set_inst_name(string) //设置covergroup的名称,出现在覆盖率报告上
start() / stop() //使能或者关闭覆盖率收集
覆盖率分析
在仿真过程中实施覆盖性统计,在此基础上动态地获取当前覆盖信息,并根据结果调整约束条件或引入新的测试用例以提升覆盖程度。
$get_coverage() //这是个系统函数,可以得到总体覆盖率
covergroup_inst.get_inst_coverage() //获取单个covergroup实例的覆盖率
全部评论 (0)
还没有任何评论哟~
