0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SystemVerilog实用知识点:覆盖率之Function Coverage

sanyue7758 来源:芯片扫地僧ICer 2023-06-04 16:30 次阅读

SystemVerilog是一名芯片验证工程师,必须掌握的一门语言,其中Function Coverage是必须要懂的知识点之一;

看完这篇,应该就会写Function Coverage了;

一、概述

有一定基础,想直接看用法,直接看第二部分——实现(强调!代码部分要精读,文字略抽象,例子好理解)。

功能覆盖率(Function Coverage)是衡量验证完备性的重要标准之一。

其用于度量验证中已执行的测试点(cover point)占设计规范的比例,从而避免功能验证的遗漏。或者说,Functional coverage是验证工程师基于对DUT的认识来对验证feature进行分解后,将需要覆盖的点进行分析后写出,因此对于DUT Spec的信息提取非常重要。

Functional_coverage可以检查:

1. 你关心的场景是否覆盖完备;2. 验证工程师构造的随机激励的随机程度/合理性;3. 从Spec中提取的feature点是否覆盖完备;...

Function Coverage通过编写coverage group, coverage points和bins等来构造收集“容器”。这里我们不介绍Assertion Coverage, Code Coverage等,以后会单独介绍。

收集Function Coverage的相关验证文件是由验证工程师定义编写的,灵活度很高,所以更需要谨慎对待,这是个Review的过程,一般需要编写:unit_coverage.sv + unit_coverage_interface.sv + top.sv。

1. unit_coverage.sv (unit_cov.sv),可能包含多个功能覆盖模型coverage group,构造的收集“容器”,收集过程在这里实现;2. unit_coverage_interface.sv(unit_cov_if.sv),定义unit_cov.sv中需要用到的interface;3. top.sv,将unit_cov_if.sv中定义的interface与DUT中对应的interface连接起来;

二、实现

功能覆盖率模型/覆盖组(cover group):

覆盖组是使用cover group构造定义的。

ex1: 会在指定的signal_abc变化时才采样

wKgZomR8TDGAc0leAADkFCfty84581.jpg

ex2:在时钟上升沿((posedge)采样。

覆盖点(cover ponit):

wKgaomR8TJqAbM2cAACJGNmh7Ug700.jpg

覆盖点是使用cover ponit和bins构造定义的。

一个覆盖组可以包含一个或多个覆盖点。每个覆盖点都与“ bins”关联。“bins”可自动创建,也可以明确定义。

ex1:自动创建bins

为coverpoint变量范围的每个值自动创建一个bins,这称为自动或隐式bins。

对于“ n”位的整数coverpoint变量,将创建2^n个bin,但是最多为64个,当2^n大于64时,每个bin不再是一个值,而是2^n/64

ex2:明确定义bins

该方式--- 常用,这里重点看每个bins定义代表的不同意义。

在覆盖点标识符(cover point)之后,在大括号{}中显式声明bins,其中声明bins名称和变量值/范围。

ex3:交叉覆盖(cross)

覆盖选项(cover options)

at_least

每个bins的最小匹配/采样次数。默认值为“ 1”,默认情况下,数值采样了1次就可以计入有效的bin(已覆盖)。可以通过修改at_least来修改每个bin对应的最小采样次数,注意,如果低于at_least数值,则该bin不算被覆盖。在covergroup里使用 option.at_least,会影响所有的coverpoint里的bin。在coverpoint里使用 option.at_least,只影响该coverpoint下的bin,但coverpoint中使用会覆盖covergroup中的使用。

auto_bin_max

没有为coverpoint明确定义bins时自动创建bins的最大数量。默认值为“ 64”。

cross_auto_bin_max

没有默认值,它是无界的。

wKgaomR8TG6AAeZKAABjNDhZ1-U692.jpg

如果对一个covergroup实例化了很多次,那么SV默认会把所有实例的覆盖率合并在一起。 option.per_instance = 1,表示covergroup的每一个实例的覆盖率都要单独计算。

goal

不论covergroup或是coverpoint的目标覆盖率皆是100%,不过也可以通过option.goal=value,来降低覆盖率目标,这个选项只会影响覆盖率报告。

......

更多options和关于Function Coverage更详细的描述/用法去翻阅《system verilog官方手册》:《IEEE Standard for SystemVerilog — Unified Hardware Design, Specification, and Verification Language》的第19章。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1325

    浏览量

    109298
  • 时钟
    +关注

    关注

    10

    文章

    1479

    浏览量

    130304
  • DUT
    DUT
    +关注

    关注

    0

    文章

    180

    浏览量

    11993

原文标题:【看即会用】SystemVerilog实用知识点:覆盖率之Function Coverage

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一文详解Modelsim代码覆盖率功能使用

    作者:默宸  Modelsim代码覆盖率功能Code coverage,能报告出statement(语句)、branch(分支)、condition(条件)、expression(表达
    的头像 发表于 12-09 11:45 4905次阅读

    为什么覆盖率分析师没有证明电阻器已经过测试?

    您好,我对Coverage Analyst有疑问。我使用的是Coverage Analyst版本5.21p。覆盖率分析师完成覆盖率报告确定(html文件),但我对报告中显示的结果有疑问
    发表于 01-07 16:06

    如何改善5G覆盖率

    改善5G覆盖率的方法
    发表于 12-15 07:52

    如何增加板级互连的故障诊断覆盖率

    在边界扫描机制引入电路设计的前提下,如何增加板级互连的故障诊断覆盖率
    发表于 04-26 06:37

    如何提高DFT设计测试覆盖率

    提高DFT设计测试覆盖率的有效方法是什么
    发表于 05-07 06:37

    怎么提高非随机图形设计的故障覆盖率

    怎么提高非随机图形设计的故障覆盖率?为LBIST设计提高故障检测能力的技术是什么?
    发表于 05-08 07:11

    电机与拖动知识点及其试题

    电机与拖动知识点分析一、基本知识与基础知识知识点常考题目二、直流电机一、基本知识与基础知识
    发表于 06-29 07:10

    关于RTC时钟的知识点

    :STM32RTC实时时钟这个里面比较详细,还添加了例程。STM32 RTC实时时钟这个链接里面详细讲述RTC中的主要的几个寄存器。下面记录一些关于rtc的知识点:RTC 时钟源 (R...
    发表于 08-11 08:27

    嵌入式仿真平台SkyEye的覆盖率分析相关资料下载

    代码执娜行覆盖情况的功能,来检测代码中未执行覆盖情况。在覆盖率分析时需要分析嵌入式软件的指令覆盖率、指令函数覆盖率、指令函数分支
    发表于 12-17 07:27

    关于SpinalHDL中的验证覆盖率收集简单说明

    成Verilog/Systemverilog电路交由Verilator进行仿真,而激励则由scala本身提供,两者之间通过verilator的VPI进行通信交流。SpinalHDL覆盖率的收集在
    发表于 06-24 15:56

    重点厘清覆盖率相关的概念以及在芯片开发流程中跟覆盖率相关的事项

    全盘考量。而覆盖率,就是芯片工程中,评审体系需要重点参考的一项技术指标,但也只是验证相关的其中一项。目前被业界广泛采用的覆盖率指标有功能覆盖率Function
    发表于 09-14 11:57

    Systemverilog覆盖率的合并和计算方式

      在systemverilog中,对于一个covergroup来说,可能会有多个instance,我们可能需要对这些instance覆盖率进行操作。  只保存covergroup type的覆盖率
    发表于 03-21 14:24

    脱离代码谈芯片验证关键指标:覆盖率

    验证覆盖率(Verification Coverage)的存在是为了试图回答这样一个问题:“你怎么知道验证已经完成?”
    的头像 发表于 04-17 10:04 2540次阅读

    在验证环境中开发Checks和Coverage的步骤

    Checks和coverage覆盖率驱动的验证流程的关键。在验证环境中,Checks和coverage可以被定义在多个位置。
    的头像 发表于 06-12 09:18 904次阅读
    在验证环境中开发Checks和<b class='flag-5'>Coverage</b>的步骤

    SystemVerilog覆盖率建模方式

    为了确保验证的完备性,我们需要量化验证目标。SystemVerilog提供了一套丰富的覆盖率建模方式。
    的头像 发表于 06-25 10:44 568次阅读