微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > coverage

coverage

时间:10-02 整理:3721RD 点击:

求问:在uvm验证平台中,单独处理功能覆盖率,也就是说我将功能覆盖率写入到了一个叫cov.sv的文件中,代码如下

  1. class mc_cover extends uvm_component;

  2. virtual interface drv_if vif;

  3. `uvm_component_utils(mc_cover)

  4. function new(string name, uvm_component parent);
  5. super.new(name,parent);
  6. endfunction

  7. function build_phase(uvm_phase phase);
  8. super.build_phase(phase);
  9. if(!uvm_config_db#(virtual drv_if)::get(this , "","drv_if",vif)) ///from the top
  10. `uvm_fatal("NOVIF",{"Error in getting interface",get_full_name(),".vif"});
  11. endfunction

  12. virtual task run_phase(uvm_phase phase);
  13. fork
  14. collect_wr_coverage();
  15. //collect_rd_coverage();
  16. wr.sample();
  17. join
  18. endtask



  19. covergroup collect_wr_coverage @(posedge mc_top.vif.clock);// @($root.mc_top.dut.vif.cs_event);
  20. option.per_instance=1;
  21. type_option.goal=100;
  22. coverpoint mc_top.vif.mosi {bins si[]={[0:1]}; }
  23. coverpoint mc_top.vif.chip_select_bar{bins cs[]={[0:1]};}

  24. //coverpoint $root.mc_top.dut.vif.miso;
  25. endgroup
  26. collect_wr_coverage = new;

  27. 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采样

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top