方式1:
covergroup xx_cg with function sample(int aa);
aa_cp:coverpoint aa {bins aa_bin={};}
endgroup
class example;
int a0;
int a1;
xx_cg xx_cg_0;
xx_cg xx_cg_1;
......
xx_cg_0 = new();
xx_cg_1 = new();
......
xx_cg_0.sample(a0);
xx_cg_1.sample(a1);
endclass
如果一个covergroup被例化多次,默认情况下SV会将所有的实例的覆盖率合并到一起吗,如果需要单独列出每个covergroup实例的覆盖率,需要设置覆盖选项(option.per_instance)。
covergroup xx_cg;
......
option.per_instance = 1;//设置覆盖选项
endgroup
方式2:
class example;
int a0;
int a1;
covergroup xx0_cg;
aa_cp:coverpoint a0 {bins aa_bin={};}
endgroup
covergroup xx1_cg;
aa_cp:coverpoint a1 {bins aa_bin={};}
endgroup
......
xx0_cg.sample();
xx1_cg.sample();
endclass
常用covergroup option:
option.at_least
option.goal
option | Description |
at_least | |
goal | |
weight | |
merge_instances | |
get_inst_coverage | |
auto_bin_max |