SystemVerilog 中的Covergroup结构封装了 coverage model。Covergroup可以定义在package、module、program、interface和class中
Cover group使用关键字covergroup和endgroup定义,使用new()实例化。
covergroup cg;
.........
endgroup
cg cg_inst = new;
上面的示例定义了一个名为**“ cg”的covergroup 。“cg”的实例化为“ cg\_inst”**。
covergroup 可以使用事件表达式**-edge**,variable,或者显式调用 sample() 方法触发(trigger)。
covergroup cg @(posedge clk);
.........
endgroup
上面的示例定义了一个名为**“ cg”的covergroup 。在“clk”**信号posedge时,此covergroup将自动采样。
covergroup cg;
.........
endgroup
cg cg_inst = new;
initial // or taskor function or always blockbegin......
cg_inst.sample();
......
end
也可以通过显式调用sample()方法来完成采样。
一个covergroup 可以包含一个或多个coverage points。coverage point 可以是变量或表达式。
program main;
bit [0:2] y;
bit [0:2] values[$]= '{3,5,6};
covergroup cg;
cover_point_y : coverpoint y;
endgroup
cg cg_inst = new();
initial
foreach(values[i])
begin
y = values[i];
cg_inst.sample();
end
endprogram
在上面的示例中,定义了covergroup “ cg”,并创建了其实例**“ cg\_inst”。我们对cover point“ y”进行了采样。cover point名为“cover\_point\_y”**。
使用VCS仿真工具进行仿真:
//Compilation command:
vcs -sverilog filename.sv
//Simulation Command:
./simv
//Command to generate Coverage report:
//Coverage report in html format will be inthe ./urgReport directory
urg -dir simv.vdb:
当调用cg\_inst.sample()方法时,将采样“y”的值。y的总可能值为0、1、2、3、4、5、6、7。 为变量“ y”赋值3、5、6,覆盖率报告仅覆盖3/8。
Summary forVariable cover_point_y
CATEGORY EXPECTED UNCOVERED COVERED PERCENT
Automatically Generated Bins 8 5 3 37.50
Automatically Generated Bins for cover_point_y
Uncovered bins
NAME COUNT AT LEAST NUMBER
[auto[0] - auto[2]] -- -- 3
[auto[4]] 0 1 1
[auto[7]] 0 1 1
Covered bins
NAME COUNT AT LEAST
auto[3] 1 1
auto[5] 1 1
auto[6] 1 1
covergroup也可以使用参数传递
covergroup cg_ref(ref bit [1:0] ref_y);
cover_point_y : coverpoint ref_y;
endgroup
然后重新编码program
program main;
bit [0:2] y;
bit [0:2] values[$]= '{3,5,6};
covergroup cg_ref(refbit [1:0] ref_y);
cover_point_y : coverpoint ref_y;
endgroup
cg_ref cg_inst = new(y);
initial
repeat(5) begin
y = $random ;
cg_inst.sample();
end
end
endprogram
覆盖率报告:
Summary forVariable cover_point_y
CATEGORY EXPECTED UNCOVERED COVERED PERCENT
Automatically Generated Bins 8 4 4 50.00
Automatically Generated Bins for cover_point_y
Uncovered bins
NAME COUNT AT LEAST NUMBER
[auto[0]] 0 1 1
[auto[2]] 0 1 1
[auto[6] - auto[7]] -- -- 2
Covered bins
NAME COUNT AT LEAST
auto[1] 2 1
auto[3] 1 1
auto[4] 1 1
auto[5] 1 1
本文转载自公众号:芯片数字实验室
原文链接:
https://mp.weixin.qq.com/s/kCWXffw2czys639K7G7hgQ
未经作者同意,请勿转载!
推荐阅读
想了解更多内容,欢迎关注芯片数字实验室专栏