sv-covergroup-instance 发表于 2022-01-05 | 分类于 verification | 阅读次数: 本文字数: 921 | 阅读时长 ≈ 1 分钟 介绍一种covergroup的写法,可以例化多份covergroup,简化代码,也可以传递参数给covergroup,从而使这多分covergroup具有一点不同属性。 12345678910111213141516171819202122232425262728293031323334class fun_cov_class; class port_cov; covergroup cg_addr(bit[63:0] region_base, bit[63:0] region_end) with function(bit[63:0] addr); cp_addr: coverpoint (addr){ bins bins_addr = {[region_base: region_end]}; } option.per_instance = 1; // 指定单个实例覆盖率 endgroup function new(bit[63:0] region_base, bit[63:0] region_end); cg_addr = new(region_base, region_end); endfunction endclass port_cov cov_a[]; function new(); cov_a = new[2]; cov_a[0] = new(0, 1); cov_a[1] = new(2, 3); endfunctionendclassmodule fun_cov_module(input clock, input reset); fun_cov_class cov; initial begin cov = new(); forever begin if(!reset)begin cov.cg.sample(xxxx); end @(negedge clock); end endendmodulebind top fun_cov_module fun_cov_module(clock, reset);