You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SystemVerilog中covergroup采样启用问题求助

解决SystemVerilog Covergroup采样未启用的覆盖率问题

你遇到的警告核心原因是covergroup仅定义了类型但未实例化,同时仿真器未开启功能覆盖率收集配置,导致覆盖率统计返回0且无日志输出。以下是具体解决步骤:

1. 实例化Covergroup并触发采样

你的CVG只是covergroup的类型定义,必须创建实例并触发采样动作,仿真器才会收集信号覆盖数据。在LED_PANEL模块中添加实例化和采样逻辑:

module LED_PANEL(
  // 你的模块端口定义...
);
  // 原有的PANEL信号定义...

  covergroup CVG;
    LED11: coverpoint PANEL[0][1];
    LED12: coverpoint PANEL[0][2];
    LED13: coverpoint PANEL[0][3];
    LED14: coverpoint PANEL[0][0];
    LED21: coverpoint PANEL[1][1];
    LED22: coverpoint PANEL[1][2];
    LED23: coverpoint PANEL[1][3];
    LED24: coverpoint PANEL[1][0];
  endgroup: CVG

  // 添加covergroup实例化和采样逻辑
  CVG cvg_inst;

  initial begin
    cvg_inst = new(); // 实例化covergroup
    // 绑定到时钟边沿采样(根据你的信号更新时机调整)
    forever @(posedge clk) begin
      cvg_inst.sample(); // 触发采样
    end
  end

  // 模块其他逻辑...
endmodule

如果PANEL信号是异步更新的,也可以直接在信号变化时触发采样,比如@(PANEL)。

2. 开启仿真器的功能覆盖率收集选项

在仿真配置中,根据使用的仿真器添加对应的覆盖率开关:

  • VCS仿真器:
    编译选项添加:-cm cond+line+fsm+tgl+branch(覆盖所有常见覆盖率类型,包含covergroup)
    仿真选项添加:-cm_log coverage.log(输出覆盖率日志)
  • Xcelium仿真器:
    编译选项添加:-coverage all
    仿真选项添加:-covfile coverage.ucdb(生成覆盖率数据库文件)

3. 生成并查看覆盖率报告

仿真结束后,通过仿真器工具生成可视化报告:

  • VCS:使用urg -dir simv.vdb命令生成HTML格式的覆盖率报告,可在结果目录中查看。
  • Xcelium:使用covanalyze coverage.ucdb分析数据,再用covreport coverage.ucdb生成报告。

完成以上步骤后,就能正常启用covergroup的采样,获取有效的功能覆盖率数据。

内容的提问来源于stack exchange,提问作者SG9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:52:22