Advertisement

覆盖率选项,覆盖率分析

阅读量:

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)

还没有任何评论哟~