coverage
时间:10-02
整理:3721RD
点击:
求问:在uvm验证平台中,单独处理功能覆盖率,也就是说我将功能覆盖率写入到了一个叫cov.sv的文件中,代码如下
- class mc_cover extends uvm_component;
- virtual interface drv_if vif;
- `uvm_component_utils(mc_cover)
- function new(string name, uvm_component parent);
- super.new(name,parent);
- endfunction
- function build_phase(uvm_phase phase);
- super.build_phase(phase);
- if(!uvm_config_db#(virtual drv_if)::get(this , "","drv_if",vif)) ///from the top
- `uvm_fatal("NOVIF",{"Error in getting interface",get_full_name(),".vif"});
- endfunction
- virtual task run_phase(uvm_phase phase);
- fork
- collect_wr_coverage();
- //collect_rd_coverage();
- wr.sample();
- join
- endtask
- covergroup collect_wr_coverage @(posedge mc_top.vif.clock);// @($root.mc_top.dut.vif.cs_event);
- option.per_instance=1;
- type_option.goal=100;
- coverpoint mc_top.vif.mosi {bins si[]={[0:1]}; }
- coverpoint mc_top.vif.chip_select_bar{bins cs[]={[0:1]};}
- //coverpoint $root.mc_top.dut.vif.miso;
- endgroup
- collect_wr_coverage = new;
- endclass
现在的问题是:(1)是否需要new 类mc_cover。
(2)covergroup的new是否正确,编译结果显示该语句有语法错误。
请高手指点
collect_wr_coverage()这个是什么意思?哪里有这个函数或者任务?如果是covergroup采样,应该是colectwr_coverage.sample才是,而且对covergroup进行new的地方也不正确,我觉得应该放到run_phase里面去。不过感觉问题还很多,没仔细看。
collect_wr_coverage()是我自己写的一个覆盖率的cover group,并不是引用,该覆盖率由事件驱动,并没有sample采样