You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在QuestaSim中生成功能覆盖率详细报告?

我来帮你梳理下在QuestaSim里生成详细功能覆盖率报告的完整流程,结合你现有的命令,咱们一步步拆解优化:

一、编译阶段:开启覆盖率收集开关

首先你的编译命令已经做了核心配置,但我帮你把每个参数的作用理清楚,确保你知道为什么这么用:

vlog -64 -work work -vopt +notimingchecks +cover +fcover -f pcie_jammer.f
  • -64:启用64位模式编译,适配大工程场景
  • -work work:指定编译后的文件存到work库中
  • -vopt:启用代码优化,不影响覆盖率收集但能提升仿真效率
  • +notimingchecks:关闭时序检查,专注功能验证阶段的覆盖率收集
  • +cover:开启基础覆盖率收集(代码覆盖率+功能覆盖率的总开关)
  • +fcover:专门开启功能覆盖率收集,包括断言(assertion)、状态机(FSM)、表达式覆盖率等核心功能覆盖项
  • -f pcie_jammer.f:通过文件列表批量编译设计文件,适合大型工程
二、仿真阶段:配置并保存覆盖率数据

你的仿真命令框架已经对了,但有几个关键细节要补全,我先把完整的仿真脚本给出来:

vsim -novopt -c <CODE SPECIFIC ARGS> -t ps work.tb_top work.glbl -vopt -do "
  # 关闭信号过滤,确保所有信号的覆盖率都被收集
  set WildcardFilter None;
  # 配置退出时自动保存覆盖率数据,指定收集的类型
  coverage save -onexit -directive -cvg -codeAll pcie_cov_${1}_gen${speed}_X${width};
  # 记录所有层级的信号日志,方便后续排查未覆盖场景
  add log -r /*;
  # 执行完整仿真(这步你原脚本没写,必须加上!否则没有覆盖率数据)
  run -all;
  # 生成文本格式的详细报告
  coverage report -file pcie_cov_${1}_gen${speed}_X${width}.txt -byfile -detail -noannotate -assertion -fsm;
  # 额外生成HTML格式报告(可视化更强,推荐用这个快速定位未覆盖点)
  coverage report -html pcie_cov_${1}_gen${speed}_X${width}.html -byfile -detail -assertion -fsm;
  # 强制退出仿真
  quit -force;
"

重点解释下覆盖率相关的核心参数:

  • coverage save -onexit:指定仿真退出时自动保存覆盖率数据库
    • -directive:收集指令覆盖率(比如covergroupcoverpoint定义的覆盖项)
    • -cvg:收集功能覆盖率(状态机跳转、断言触发情况等)
    • -codeAll:收集所有代码覆盖率分支(语句、分支、条件等)
  • coverage report的关键参数:
    • -byfile:按文件维度分类展示覆盖率,方便定位哪个模块覆盖不足
    • -detail:显示最细粒度的覆盖信息(比如具体哪行代码没被执行)
    • -assertion:单独列出断言的触发覆盖率
    • -fsm:单独展示状态机的跳转覆盖情况
    • -html:生成网页版报告,可视化程度远高于文本,能快速点击定位未覆盖代码
三、常见优化与问题排查
  • 如果报告里没有功能覆盖率数据:检查编译时是否加了+fcover,仿真时coverage save是否带了-cvg参数
  • 想排除无关代码的覆盖:可以在仿真do文件里加coverage exclude -src "testbench/*",过滤掉testbench中不需要覆盖的冗余代码
  • 多次仿真合并覆盖率:如果跑了多个测试用例,用coverage merge merged_cov.ucdb cov1.ucdb cov2.ucdb把多个覆盖率数据库合并,再生成整体报告
  • 查看实时覆盖率:如果不是批量仿真,去掉-c(命令行模式),在GUI里通过View > Coverage Report实时查看覆盖情况

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

火山引擎 最新活动