数字验证学习笔记——SystemVerilog芯片验证23 ——数据采样

news/2024/11/7 8:32:47/

一、数据采样

  • 当你coverpoint指定采样一个变量或表达式时,SV会创建很多“仓(bin)”来记录每个数值被捕捉到的次数。
  • 这些bin是衡量功能覆盖率的基本单位。
  • covergroup中可以定义多个coverpoint,coverpoint中可以自定义多个cover bin或者SV帮助自动定义多个cover bin。
  • 每次covergroup采样,SV都会在一个或者多个cover bin中留下标记,用来记录采样时变量的数值和匹配的cover bin。
  • 在仿真之后,可以使用分析工具读取这些数据库来生成覆盖率报告,包含了各部分总体的覆盖率。

1.1 coverpoint和bin

  • 为了计算一个coverpoint上的覆盖率,首先需要确定可能数值的个数,这也被称为域。
  • 覆盖率就是采样值的数目除以bin的数目。例如一个3比特变量的域是0:7,正常情况下会自动分配8个bin。如果仿真过程中有7个值被采样到,那么最终该coverpoint的覆盖率是7/8。
  • 所有的coverpoint的覆盖率最终构成一个covergroup的覆盖率
  • 所有的covergroup的覆盖率构成了整体的功能覆盖率

1.2 bin的创建和应用

  • SV会默认为某个coverpoint创建bin,用户也可以自己定义bin的采样域。
  • 如果采样变量的域范围过大而又没有指定bin,那么系统会默认分配64个bin,将值域范围平均分配给这64个bin。
  • 用户可以通过covergroup的选项auto_bin_max来指定自动创建bin的最大数目。
  • 实际操作中,自动创建bin的方法不实用,建议用户自行定义bin,或者减小auto_bin_max的数值。
    covergroup CovPort;
    options.auto_bin_max=8; //所有coverpoint auto_bin数量=8
    coverpoint tr.port
    { options.auto_bin_max=2; } //特定coverpoint auto_bin数量=8
    endgroup

1.3 命名coverpoint和bin

在这里插入图片描述

  • 注意coverpoint定义使用{}而不是begin…end。大括号的结尾没有带分号,这和end一样。
    在这里插入图片描述
    Bin:第一列是bin的名称。
    hits:每个bin收集到多少次。
    at least:每个bin至少要收集多少次。
    上面结果的覆盖率是10/11

1.4 条件覆盖率

  • 可以使用关键词iff给coverpoint添加条件。
  • 这种做法常用于复位期间关闭覆盖以忽略不合理的条件触发。
  • 也可以使用startstop函数来控制covergroup各个独立实例。
    -covergroup CoverPort;
    coverpoint port iff
    (!bus_if.reset);
    endgroup

initial begin
CoverPort ck=new();
#1ns;
ck.stop();
bus_if.reset =1;
#100ns bus_if.reset =0;
ck.start();

end

这里通过ck.sample()采样,只不过省掉了。当满足iff的条件同时ck.sample()才开始采样。
ck.stop()禁止covergroup,ck.start()使能covergroup。

1.5 翻转覆盖率

-coverpoint 也可以用来记录变量从A值到B值得跳转情况。
还可以确定任何长度得翻转次数
-covergroup CoverPort;
coverpoint port
{ bins t1=(0 => 1),(0 => 2),(0 => 3);}
endgroup

coverpoint 可以声明多个bin。
coverpoint 可以不声明bin。
coverpoint 可以采样变量值的跳转情况。

1.6 wildcard覆盖率

  • 可以创建wildcard来创建多个状态或者翻转。
  • 在表达式中,任何X,Z或者**?**都会被当成0或1的通配符。
    在这里插入图片描述
    使用wildcard修饰的bins,其中x、z、?都会被当成0或1的通配符。

1.7 忽略的bin

  • 在某些coverpoint可能始终无法得到全部的域值。
  • 对于那些不计算功能的域值可以使用ignore_bins来排除,最终它们并不会计入coverpoint的覆盖率。

bit [2:0] low_ports_0_5; // 只使用数值0-5
covergroup CoverPort;
coverpoint low_ports_0_5 {
ignore_bins hi={[6,7]}; // 忽略数值6-7
}
endgroup
忽略数值6,7,系统默认分配6个bins

1.8 非法的bin

  • 有些采样值不仅应该被忽略,而且如果出现还应该报错。
  • 这些情况可以在测试平台中监测,也可以使用illegal_bins对特定的bin进行标示。
    bit [2:0] low_ports_0_5; // 只使用数值0-5
    covergroup CoverPort;
    coverpoint low_ports_0_5 {
    illegal_bins hi={[6,7]}; // 如果出现6-7便报错
    }
    endgroup

1.9 交叉覆盖率

  • coverpoint 是记录单个变量或者表达式的观测值。
  • 如果要记录在某一时刻,多个变量之间值的组合情况,需要使用交叉(cross)覆盖率。
  • cross语句只允许带coverpoint或者简单得变量词。
    在这里插入图片描述
    kind: 是 coverpoint tr.kind 的名称。
    port: 是 coverpoint tr.port 的名称。

1.10 排除部分cross in

-通过使用ignore_bins、binsof和intersect分别指定coverpoint和值域,这样可以清除很多不关心的cross bin。
在这里插入图片描述
假设port是3位,有8个bin
kind是4位,有11个bin,分别是0, 1 2 3 , 8 , 9 , 10 , 11 , 12 , 13 ,14, 15 , 4 5 6 7
ignore bins hi = binsof(port)intersect {7} ; 排除 port为7 和 kind 的11种组合。
ignore bins md = binsof(port)intersect {0} && binsof(kind)intersect {[9:11]} ; 排除port为0 kind为9:11的 3种组合。
ignore bins lo =binsof(kind.lo),排除8种组合。

最初有8*11种组合。

1.11 精细的交叉覆盖率指定


http://www.ppmy.cn/news/10350.html

相关文章

Linux环境基础开发工具使用

文章目录:Linux软件包管理器 - yumLinux下安装软件的三种方式Linux中的yum查看软件包如何安装和卸载软件rz/sz - Windows机器和远端Linux机器的文件互传Linux编辑器 - vimvim基本概念vim的基本操作及命令vim底行模式命令集Linux编译器 - gcc/g使用gcc选项函数库静态…

禅道的部署与使用

文章目录1、禅道介绍2、下载安装3、使用3.1、创建项目3.2、添加用户3.3、团队管理3.4、测试人员提Bug3.5、开发人员修复Bug4、总结1、禅道介绍 官网地址:https://www.zentao.net禅道是专业的研发项目管理软件,有如下特点: 细分需求、任务、缺…

xv6 - lab0 - 课程介绍

MIT 6.S081 课程介绍 1 说明背景 1.1 课程概述 核心理念:边做边学目录描述:操作系统的设计与实现,将用于系统编程的基础。主题包括:虚拟内存、文件系统、多线程、上下文切换、内核、中断、系统调4)用、进程间通信、…

加密与安全

目录 一、编码算法 1.1、ASCII 1.1.1、ASCII简介 1.1.2、ASCII产生原因 1.1.3、表达方式 1.1.4、标准表 1.1.5、大小规则 1.2、Unicode 1.2.1简介 1.2.2编码和实现 1.3、汉字编码 1.3.1、GB2312-80 标准 1.3.2、GBK 编码标准 1.3.3、GB18030编码标准 1.4、URL编…

Redis基础语法和SpringBoot集成使用

在初期,已经讲述了Redis安装问题。现在正式进入Redis的入门阶段。 Redis客户端 命令行客户端 redis-cli [options] [commands]常用到的 options 有: -h 127.0.0.1: 指定要连接的Redis的IP地址【默认127.0.0.1】-p 6379: 指定连接Redis的端口【默认63…

软件测试~自动化测试Seleniums---1

一.什么是自动化测试 1.自动化测试介绍 自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 将测试人员双手解放,将部分测…

《元宇宙2086》影视工业弯道超车?《科普时报》刊登采访报道

科普时报-第267期 2023年01月06日 星期五 第05版:书香文史刊载了题目为“《元宇宙2086》影视工业弯道超车?”的关于高泽龙的采访报道。全文内容如下:在2022年中国金鸡百花电影节暨第35届中国电影金鸡奖期间,我创作的中国首部元宇宙…

人工智能导论实验——前馈神经网络

实验目的通过实验了解全连接神经网络的结构,应用全连接网络处理分类和回归任务。实验任务1)初级实验:①手写体图像识别实验;②FashionMnist图像分类实验;③汽车里程数预测实验。2)中级实验:①鸢…