vcs 覆盖率收集1——三种覆盖率类型、covergroup、bins、数据采样、覆盖率选项

Assertion断言入门(四)——断言覆盖率 以APB总线协议的断言检查和断言覆盖率为例,学习断言的基本使用和断言覆盖率覆盖。需要用到关键词cover来收集断言覆盖。 APB总线协议时序图如下:(首图为读操作时序和后图为写操作时序) PS:关于APB协议的详细的描述可见AMBA总线协议中APB协议总结一文:APB总线协议 断言检查一 在PSEL为高时,PADDR总线不可以为x值; property p_addr_no_x; @(posedge clk) psel |-> !$isunknow(paddr); endpropert 阅读详情


前言

2023.3.15
2023.3.20
2023.9.12 更新


一、覆盖率知识

1、覆盖率类型

1.1 代码覆盖率

衡量RTL代码是否被充分运行的指标,100%是验证工作完备的必要性,一般设置为95%。

  • 语句覆盖率(statement coverage):指的是程序的每一行代码是否被执行过。
  • 条件覆盖率(condition coverage) :指的是每个条件中的逻辑操作数被覆盖的情况。
  • 分支覆盖率(branch coverage) :指的是在if, case, _while,repeat, forever,for和loop语句中各个分支执行的情况。
  • 事件覆盖率(event coverage):该覆盖率用来记录某一个事件被触发的次数。
  • 跳转覆盖率(toggle coverage):用来记录某个设计边界信号数据位的0/1跳转情况,例如从0到1,或者从1到0的跳转。
  • 状态机覆盖率(finite stage machine coverage) :仿真器的覆盖率功能可以识别出设计中的状态机部分,记录各种状态被进X的次数,以友状态之间的跳转情况。

1.2 功能覆盖率

覆盖率分析

  • 覆盖率稳步增长:添加种子或者加长测试
  • 增速放缓:添加额外的约束
  • 增长停止:创建新的测试
  • 覆盖率达到100%还有设计漏洞:某些功能点没有进行测试

功能覆盖率策略

  • 收集信息而非数据:数量太大的话,应当拆分成多个小范围+边界。着眼于状态而不是某个数据
  • 只测量需要的内容:收集覆盖率的时候开销是很大的
  • 验证的完备性:同时驱动高的代码覆盖率和高的功能覆盖率
    代码覆盖率低功能覆盖率高:没有执行所有的代码,验证计划也不完整
    代码覆盖率高功能覆盖率低:可以执行所有代码,没有所有功能点都测试到了

代码覆盖率达到100%,并不意味着工作结束,因为有可能代码有漏洞或者功能点并没有测全。代码覆盖率没有达到100%,那么意味着设计测试激励不足或者设计代码有冗余等情况

1.3 断言覆盖率

断言描述本身也支持覆盖率收集,一般可以通过仿真或者硬件加速的方式来收集,也可以通过形式验证的工具来收集。

定义:用于一次性地或在一段时间对一个或者多个设计信号在逻辑或者时序上的声明性代码,也可以用其他task/function来进行断言,是等价的

关心某个信号值或者状态是否改变,断言覆盖率需要自己设置,覆盖率会被收集到一个覆盖率数据库中。

  • 在常见的仿真中,仿真器会记录断言的先决条件是否被触发,以及判断语句成功或者失败。
  • 根据选择的验证方法不同,我们可以将断言覆盖率分为:
    基于动态仿真或者硬件加速的断言覆盖率
    基于形式验证的静态断言覆盖率

2、覆盖组/covergroup

  • 需要例化才能采样数据,一次定义就可以多次实例化
  • 衡量这些变量在某些特定时间采样到的值,定义采样哪些变量、数值,定义采样事件。
  • 可在class、interface、module里面定义
  • 一个类可以有多个covergroup,都是独立的,可以自行使能或者禁止(之前的有constraint、randomize可以使能)
  • sample():手动采样,显示采样
    wait/@:借助已有的事件阻塞触发
//采样方式一 : sample() 
covergroup Covport;
	coverpoint port;  //没有定义数值,意思就是采样所有的值
endgroup
Covport cg1 = new();   //例化  
cg1.sample();   //手动采样

//采样方式二 : 事件触发,最好不用这种方式
event trans_ready;   //定义事件
covergroup Covport@(trans_ready);   //也可以用wait
	coverpoint port;
endgroup

3、数据采样

3.1 bins/仓

  • bin/仓:衡量功能覆盖率的基本单位,记录每个数值被捕捉到的次数
    可以手动或者SV自动定义bin
  • 域:可能数值的个数。
  • 每一个coverpoint组合成covergroup的覆盖率,所有的covergroup组成整体的覆盖率。
  • 覆盖率 = 采样值的数目 / bin的数目
    例如:一个3bit变量的域是7:0,正常情况下会自动分配8个bin。如果仿真过程中有7个值被采样到,那么最终的coverpoint的覆盖率就是7/8
  • 采样变量范围太大时,系统会默认分配64bin,再将数值平均分配到64个。
    auto_bin_max:指定自动创建bin的最大数目,
  • 定义在 covergroup 的option设置会影响整个covergroup ,即当前covergroup下的所有coverpoint都被设置了。coverpoint里面的设置会覆盖covergroup的设置。
covergroup Covport;
    option.auto_bin_max = 8;//covergroup中的option
    coverpoint tr.port{
   
   
        //这个option会覆盖covergroup的设置
		option.auto_bin_max = 2;//coverpoint中的option
    }
endgroup

//-----------------------------------------------
covergroup Covkind;
	coverpoint tr.kind{
   
   
		bins zero = {
   
   0};  //1个仓代表kind=0
		bins lo = {
   
   [1:3], 5};  //1个仓表示1:3和5
		bins hi[] = {
   
   [
UVM学习笔记1——断言和断言覆盖率 断言类型、断言操作符、APB断言协议检查 阅读详情

相关推荐

vcs 覆盖率收集2——覆盖率选项 + 合并覆盖率

覆盖率收集的选项和urg选项

qq_42135020的博客 2万+

VCS 代码覆盖率和功能覆盖率使用分析

介绍vcs验证中代码覆盖率、功能覆盖率的相关指令以及关键字

qq_25749155的博客 8166

VCS覆盖率实战:从结构/功能/断言三层覆盖到covergroup精准建模

覆盖率是数字芯片验证中衡量验证完备性的核心指标,其本质是将设计规范转化为可量化、可追溯的证据链。结构覆盖率反映代码执行的物理足迹,功能覆盖率体现对设计意图的主动探针部署,断言覆盖率则担当关键行为约束的实时哨兵——三者构成验证深度的黄金三角。SystemVerilog covergroup与bins建模能力,决定了覆盖率能否真实映射业务场景,而非陷入伪高覆盖陷阱。本文聚焦VCS覆盖率收集的核心机制,深入解析采样时机、-cov选项协同、UCDB数据血缘及Verdi闭环分析等工程实践要点,助力验证工程师构建高置信

weixin_29189373的博客 303

SystemVerilog覆盖率驱动验证(CDV)实战:从covergroup定义到VCS报告生成全流程

本文详细介绍了SystemVerilog覆盖率驱动验证(CDV)的完整实战流程。从编写高质量的covergroup与bins定义,到配置VCS仿真参数收集覆盖率数据,再到使用urg工具合并数据库并生成报告,提供了全链路的方法论与实用脚本,旨在帮助验证工程师高效实现验证闭环,提升验证效率与质量。

dream的博客 475

VCS覆盖率实战:从line/toggle/fsm到covergroup建模

覆盖率是数字验证中衡量功能完备性的核心指标,其本质是对设计行为空间的系统性采样。理解line coverage(代码执行)、toggle coverage(信号翻转)和fsm coverage(状态跳转)三类基础类型,是构建可信验证闭环的前提;而covergroup建模则将设计意图转化为可量化的覆盖目标,通过bins控制、cross交叉与采样时机协同,实现对关键路径与边界场景的精准捕获。VCS作为主流仿真工具,其-cov选项配置、-debug_pp依赖、采样阶段调度(如Observed区域)及.ucdb融合

weixin_33521678的博客 254

功能覆盖率进阶:VCS中covergroup的高级用法与性能优化

本文深入探讨VCS工具中covergroup的高级用法与性能优化技巧,涵盖条件采样、通配符匹配、时序敏感覆盖及交叉覆盖率优化等实战策略。通过精细配置covergroup参数和动态采样控制,可显著提升芯片验证的覆盖率质量与收集效率,适用于中高级验证工程师解决覆盖率漏测和仿真速度瓶颈问题。

weixin_30897233的博客 386

VCS覆盖率进阶指南:从基础概念到实战采样策略

本文深入解析VCS覆盖率从基础概念到实战采样策略的全过程,涵盖代码覆盖率与功能覆盖率的黄金组合、covergroup配置技巧、bins高级用法及覆盖率选项调优。特别针对芯片验证中的常见问题,提供动态采样条件设置、智能bins划分等实用解决方案,帮助工程师高效提升验证质量与效率。

weixin_29290963的博客 369

别再只盯着代码覆盖率了!VCS功能覆盖率实战:从covergroup定义到交叉覆盖率的避坑指南

本文深入探讨VCS功能覆盖率在芯片验证中的关键作用,从covergroup定义到交叉覆盖率的实战技巧,揭示如何避免常见陷阱并优化验证策略。通过对比代码覆盖率与功能覆盖率的本质差异,提供三层进阶实践方案,帮助工程师构建精准的验证度量体系,提升SoC验证效率。

weixin_28744613的博客 247

VCS覆盖率实战:从代码覆盖到功能覆盖的进阶指南

本文详细介绍了VCS覆盖率从代码覆盖到功能覆盖的进阶实战指南,包括代码覆盖率与功能覆盖率的配置技巧、高级应用及性能优化策略。通过实际案例和最佳实践,帮助验证工程师有效提升覆盖率收敛效率,确保芯片验证的全面性和可靠性。

weixin_29168153的博客 402

ego-planner启动参数深度解析:从配置到实战避障应用

本文深入解析EGO-Planner启动参数的配置与实战应用,重点探讨无人机自主导航中的避障性能优化。通过环境感知、运动约束和算法控制三类参数的详细说明,结合ROS和RViz工具,提供从基础配置到高级调优的完整指南,帮助开发者提升无人机在复杂场景下的规划效率和安全性。

rum55的博客 241

(三) Debian 安装linuxcnc-ethercat中间件

1.在这里同样的也是需要下载一下依赖包 sudo apt install linuxcnc-uspace-dev 2.依赖包安装完成, 接着执行下面命令 sudo git clone https://github.com/sittner/linuxcnc-ethercat 还是可能出现下载网络错误下载不成功,可以直接下载我已上传百度云linuxcnc目录下 注意一下,后面make可能会出现头文件(xxx.h)的报错提示,在这里给大家一个处理办法 用aptitude 工具可以搞定 sudo apt-get

qq_30065813的博客 817

VLA-JEPA:具身智能中潜空间世界模型的工程落地实践

世界模型是具身智能实现环境理解与因果推演的核心基础,其本质是在状态空间中建模‘动作→结果’的动力学规律。传统基于像素或文本的世界模型因高维、非平稳、弱语义等缺陷,在真实机器人场景中鲁棒性差、部署成本高。JEPA(联合嵌入预测架构)通过构建物理约束的潜空间,将视觉-语言-动作(VLA)信号统一编码为低维、可微、可解释的状态表征,显著提升模型对抖动、遮挡、光照突变等干扰的适应能力,并支持实时闭环控制。该范式已在UR5e、Franka等多构型机械臂及Jetson边缘平台完成实测验证,成为VLA系统从实验室走向产线

weixin_34357928的博客 328

使用Anaconda和conda快速搭建YOLO开发环境

本文详细介绍了如何使用Anaconda和conda为YOLO目标检测项目快速搭建独立、纯净的开发环境。通过创建虚拟环境,有效解决了Python包版本冲突和CUDA兼容性问题,并指导安装GPU版PyTorch等核心依赖,最后通过验证脚本确保环境配置成功,为YOLO开发提供了稳定可靠的基础。

weixin_28829629的博客 154

【重要内容】敬告读者

由于CSDN近期将要搞事情,此专栏建议已购买的用户将内容保存到本地。尚未购买的用户请待9月1日后再决定是否需要购买。如此规则上线,本人将会关闭此专栏。并寻找其他渠道进行发布。

魔落的博客 905

第十二天:Python字典(Dict)详解

字典(Dictionary)是Python中最强大的数据类型之一,它是一种可变的、无序的键值对(key-value)集合。字典中的元素是通过键(key)来存取的,而不是通过偏移量(如列表中的索引)。 字典的核心特性包括: 键值对结构:每个元素由一个键和一个值组成,中间用冒号(:)分隔 无序性:字典中的元素没有固定的顺序(Python 3.7+版本中字典会保持插入顺序,但不应依赖此特性进行顺序操作) 可变性:可以动态地添加、修改或删除键值对 键的唯一性:字典中的键必须是唯一的,如果重复,后面的键值对会覆盖

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1669

PyTorch实战(14)——图注意力网络(Graph Attention Network,GAT)

本节介绍了图注意力网络 (Graph Attention Network, GAT) 在节点分类任务中的应用。相比图卷积网络 (GCN) 的平均聚合机制,GAT 通过引入注意力机制,能够为不同邻居节点分配差异化权重,从而更精准地捕捉图结构信息。实验表明,GAT 在 CiteSeer 数据集上的分类准确率达到 71.1%,较 GCN 提升 2.5 个百分点。可视化结果显示,GAT 学习到的节点表征具有更好的类别区分度。这验证了注意力机制在图数据建模中的有效性,为处理复杂图结构任务提供了更优解决方案。

盼小辉丶的博客 3385

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: linux 系统时间date vcs根据时间产生随机种子
下一篇: vcs 覆盖率收集2——覆盖率选项 + 合并覆盖率
dsjljdfniuevf
博客等级 码龄8年 3048粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值