从systemverilog

时间:2018-08-17 01:29:13

标签: system-verilog

我想检测我的系统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上的代码

1 个答案:

答案 0 :(得分:2)

您需要构建掩护组。

class packet;
     rand bit[7:0] len;
     covergroup packet_len_cg;
       coverpoint len;
     endgroup 
     function new;
        packet_len_cg = new;
     endfunction
 endclass