我想检测我的系统Verilog模型以收集对其处理的数据包的功能覆盖率。具体来说,我想看看传入数据包中数据包长度的分布。但是,我的幼稚尝试在下面的示例方法中给出了“空引用”。该怎么做?
class packet;
rand bit[7:0] len;
covergroup packet_len_cg;
coverpoint len;
endgroup
endclass
class model;
// Scoreboard calls this to process the input packet
function void run(packet p1);
p1.packet_len_cg.sample(); //FAILS WITH NULL REFERENCE!!
endfunction
endclass
module test;
model m1;
packet p1;
initial begin
m1 = new();
p1 = new();
assert(p1.randomize());
m1.run(p1);
end
endmodule
我在edaplayground https://www.edaplayground.com/x/2VPm上的代码
答案 0 :(得分:2)
您需要构建掩护组。
class packet;
rand bit[7:0] len;
covergroup packet_len_cg;
coverpoint len;
endgroup
function new;
packet_len_cg = new;
endfunction
endclass