UVM功能覆盖策略
UVM功能覆盖策略1. 主要内容概览覆盖率类型功能覆盖策略覆盖组covergroup数据采样覆盖选项数据分析2. 功能覆盖策略核心思想收集信息而非数据对于MCDF关心的是合法的寄存器地址和非法的寄存器地址可写的寄存器域和非法的寄存器域而不是具体的寄存器地址数值一旦关注的地方着眼于感兴趣的状态而不是具体数值那么对如何定义功能覆盖率会减轻很大负担设计信号如果数量范围太大应该拆分为多个小范围再加上边界情况只测量需要的内容Verifier需要懂得使能覆盖率收集时这一特性会降低很大的仿真性能由于收集功能覆盖率数据的开销很大所以应该只测量你会用来分析并且改进测试的那部分数据需要设定合理的覆盖率采样的事件一方面提升采样效率一方面降低收集覆盖率的开销验证的完备性完备的覆盖率测量结果和漏洞增长曲线可以帮助确认设计是否被完整地验证过代码覆盖率低但功能覆盖率高说明验证计划不完整测试没有执行设计的所有代码代码覆盖率高但功能覆盖率低说明即使测试平台很好地执行了设计的所有代码但是测试还是没有把设计定位到所有感兴趣的状态上目标同时驱动高的代码覆盖率和功能覆盖率功能覆盖率 \ 代码覆盖率LowHighHighNeed more FC points, including corner casesGood coverage: check bug rateLowStart of projectIs design complete? Perhaps try formal tools3. 覆盖组covergroup在类里定义covergroupclass Transactor; Transaction tr; mailbox mbx_in; covergroup CovPort; // 声明covergroup coverpoint tr.port; // 采样点 endgroup function new(mailbox mbx_in); CovPort new(); // 例化covergroup this.mbx_in mbx_in; endfunction endclasscovergroup在类中声明在new()函数中例化可以例化多次CovPort cg1 new(); CovPort cg2 new();数据采样概述在coverpoint指定采样一个变量或表达式时SV会创建很多的仓bin来记录每个数值被捕捉到的次数这些bin是衡量功能覆盖率的基本单位covergroup中可以定义多个coverpointcoverpoint中可以自定义多个cover bin或者SV帮助自动定义多个cover bin每次covergroup采样SV都会在一个或者多个cover bin中留下标记用来记录采样时变量的数值和匹配的cover bin在仿真之后可以使用分析工具读取这些数据库来生成覆盖率报告包含了各部分和总体的覆盖率条件覆盖率iffcovergroup CoverPort; coverpoint port iff (!bus_if.reset); // 复位期间不采样 endgroup // 也可以手动控制start/stop initial begin CovPort ck new(); #1ns; ck.stop(); // 暂停采样 bus_if.reset 1; #100ns bus_if.reset 0; ck.start(); // 恢复采样 ck.sample(); // 手动触发采样 end可以使用关键字iff给coverpoint添加条件常用于在复位期间关闭覆盖以忽略不合理的条件触发也可以使用start()和stop()函数来控制covergroup各个独立实例忽略的binignore_binsbit [2:0] low_ports_0_5; // 只使用数值0-5 covergroup CoverPort; coverpoint low_ports_0_5 { ignore_bins hi {[6,7]}; // 忽略数值6-7 } endgroup在某些coverpoint可能始终无法得到全部的域值对于那些不计算功能的域值可以使用ignore_bins来排除最终它们并不会计入coverpoint的覆盖率交叉覆盖率crossclass Transaction; rand bit a, b; endclass covergroup CrossBinNames; a: coverpoint tr.a { bins a0 {0}; bins a1 {1}; option.weight0; // 不计算覆盖率 } b: coverpoint tr.b { bins b0 {0}; bins b1 {1}; option.weight0; // 不计算覆盖率 } ab: cross a, b { bins a0b0 binsof(a.a0) binsof(b.b0); bins a1b0 binsof(a.a1) binsof(b.b0); bins b1 binsof(b.b1); } endgroup权重是0则不搜集或不关心此覆盖率同时cross不会生成任何的bin则可自己声明关心的组合情况coverpoint定义的时候有可能没有把所有的bin列出来但cross会全算上带中括号则要遍历所有枚举才能记录一条覆盖率4. 覆盖选项单个实例的覆盖率covergroup CoverLength; coverpoint tr.length; option.per_instance 1; // 单独列出每个covergroup实例的覆盖率 endgroup如果对一个covergroup例化多次默认情况下SV会将所有实例的覆盖率合并到一起如果需要单独列出每个covergroup实例的覆盖率需要设置option.per_instance 15. 数据分析$get_coverage(); // 得到总体的覆盖率 covergroup_inst.get_inst_coverage(); // 获取单个covergroup实例的覆盖率这些函数最实际的用处是在一个测试当中监测覆盖率的变化如果覆盖率水平在一段时间之后没有提高那么这个测试就应该停止重启新的随机种子或者测试可能有望提高覆盖率如果测试可以基于功能覆盖率采取一些深入的行动例如重新限定随机的约束那将是非常好的事情但是这种测试很难编写

相关新闻

2026 商用 LBS 选型完整测评:出行 / 物流 / O2O / 零售四大行业专用地图方案

2026 商用 LBS 选型完整测评:出行 / 物流 / O2O / 零售四大行业专用地图方案

出行、同城配送、本地 O2O、连锁零售 APP 高度依赖商用地图 API,多数团队选型只对比基础展示能力,忽略并发承载、垂直场景功能、长期综合成本,线上频繁出现宕机、超额扣费等故障。本文基于四大行业真实业务需求,提供标准化选型指标…

2026/7/23 17:08:42阅读更多 →
Claude Code 进组后,为什么你的代码生成反而成了协作负担?

Claude Code 进组后,为什么你的代码生成反而成了协作负担?

聊《会用Claude Code只是起点,能解释失败才算真正入门》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做&am…

2026/7/23 17:08:42阅读更多 →
0成本提升场馆利润的5个方法,亲测有效

0成本提升场馆利润的5个方法,亲测有效

经营场馆久了会发现一个道理:有时候不是收入不够,而是漏掉的太多。很多馆主每天想着怎么多招学员、多卖卡,却忽略了那些正在悄悄流失的利润。今天分享5个不需要额外花钱、坚持做就能提升利润的方法。方法一:把爽约率降下来很多人没…

2026/7/23 17:08:42阅读更多 →
深入解析TI C2000 eCAP模块:捕获与APWM双模实战指南

深入解析TI C2000 eCAP模块:捕获与APWM双模实战指南

1. eCAP模块:嵌入式系统里的“时间侦探”与“波形雕刻师”在嵌入式系统,尤其是实时控制领域里,时间就是一切。无论是测量电机编码器脉冲的间隔来推算转速,还是生成一个精准的PWM信号去控制LED亮度或电机扭矩,背后都需要…

2026/7/23 19:43:17阅读更多 →
DecoTV与LunaTV深度对比:为什么选择这款二次开发的播放神器

DecoTV与LunaTV深度对比:为什么选择这款二次开发的播放神器

DecoTV与LunaTV深度对比:为什么选择这款二次开发的播放神器 【免费下载链接】DecoTV 基于最新版LunaTV二次开发的一个开箱即用的、跨平台的影视聚合播放站。【原KatelyaTV】 项目地址: https://gitcode.com/gh_mirrors/de/DecoTV DecoTV是基于最新版LunaTV二…

2026/7/23 19:43:17阅读更多 →
AI Agent技术架构与核心实现解析

AI Agent技术架构与核心实现解析

1. AI Agent技术全景解析AI Agent(人工智能代理)本质上是一个能够感知环境、自主决策并执行行动的智能系统。不同于传统程序化的"if-then"规则,现代AI Agent通过机器学习模型实现认知、规划和行动三大核心能力。典型的AI Agent架构…

2026/7/23 19:43:17阅读更多 →
C2000 eQEP模块深度解析:从编码器脉冲到精准位置与速度控制

C2000 eQEP模块深度解析:从编码器脉冲到精准位置与速度控制

1. 从脉冲到位置:eQEP模块的核心价值与设计哲学 在伺服电机、机器人关节或者任何需要精确知道“自己在哪里”的运动控制场景里,正交编码器(Quadrature Encoder)是工程师最信赖的“眼睛”。它输出的两路相位差90度的方波信号&#…

2026/7/23 19:43:17阅读更多 →
加粗标题:人活得舒心通透的几种活法,读懂少走半生弯路

加粗标题:人活得舒心通透的几种活法,读懂少走半生弯路

开头引入 很多人常年被焦虑、内耗裹挟,总在迎合他人、追逐不属于自己的标准,身心长期紧绷,很难感受到松弛与安稳。人人都渴望自在舒服的人生,可舒服从不是躺平摆烂,而是找准和自己、世界相处的平衡方式。结合普通人真实…

2026/7/23 19:43:17阅读更多 →
Python计算机毕设之基于 Python 的校园二手社交交易平台实现校园二手物品问答互动与交易系统设计 (完整前后端代码+说明文档+LW,调试定制等)

Python计算机毕设之基于 Python 的校园二手社交交易平台实现校园二手物品问答互动与交易系统设计 (完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 19:41:16阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/23 18:58:18阅读更多 →