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

    文章

    1352

    浏览量

    110517
  • 时钟
    +关注

    关注

    11

    文章

    1749

    浏览量

    131897
  • DUT
    DUT
    +关注

    关注

    0

    文章

    190

    浏览量

    12521

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    怎么用Vivado做覆盖率分析

    在做仿真的时候往往会去做代码覆盖率和功能覆盖率的分析,来保证仿真是做的比较充分完备的。
    的头像 发表于 01-03 12:34 1868次阅读
    怎么用Vivado做<b class='flag-5'>覆盖率</b>分析

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

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

    如何改善5G覆盖率

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

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

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

    关于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

    Verilog代码覆盖率检查

    Verilog代码覆盖率检查是检查验证工作是否完全的重要方法,代码覆盖率(codecoverge)可以指示Verilog代码描述的功能有多少在仿真过程中被验证过了,代码覆盖率分析包括以下分析内容。
    发表于 04-29 12:35 8495次阅读

    IP开发时如何考虑复用覆盖率

    如何在开发IP的同时去巩固集成和复用覆盖率?IP的某些功能和性能是可以配置的,需要考虑的是IP被各种合理配置后的工作是否都能够正常,将功能覆盖率先整理为层次化的抽象功能覆盖率模型,称之为cover model。
    的头像 发表于 02-18 12:08 2711次阅读

    嵌入式代码覆盖率统计方法和经验

    代码覆盖率是衡量软件测试完成情况的指标,通常基于测试过程中已检查的程序源代码比例计算得出。代码覆盖率可以有效避免包含未测试代码的程序被发布。 1. 问题背景 代码覆盖(Code coverag
    的头像 发表于 01-06 15:06 3252次阅读
    嵌入式代码<b class='flag-5'>覆盖率</b>统计方法和经验

    统计嵌入式代码覆盖率的方法和经验

    代码覆盖率是衡量软件测试完成情况的指标,通常基于测试过程中已检查的程序源代码比例计算得出。代码覆盖率可以有效避免包含未测试代码的程序被发布。 1. 问题背景 代码覆盖(Code coverag
    的头像 发表于 03-29 11:58 2026次阅读
    统计嵌入式代码<b class='flag-5'>覆盖率</b>的方法和经验

    覆盖率的Verilog代码的编写技巧

    设计工程师需要关心的主要有行覆盖率(Block),条件覆盖率(Expression),翻转覆盖率(Toggle),状态机覆盖率。本文从ASIC设计的角度上来讨论,如何写出高
    的头像 发表于 05-26 17:30 4361次阅读

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

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

    SystemVerilog覆盖率建模方式

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