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

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

3天内不再提示

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

芯片验证工程师 来源:芯片验证工程师 2023-06-12 09:18 次阅读

Checkscoverage是覆盖率驱动的验证流程的关键。在验证环境中,Checks和coverage可以被定义在多个位置。

在Classes中实现Checks和Coverage

uvm_monitor的派生类总是存在于agent中,因此包含必要的Checks和Coverage。下面是一个断言检查的简单例子,传输的size字段是1、2、4或8。否则断言失败。

011b61fc-08b5-11ee-962d-dac502259ad0.png

check也可以写成函数的形式,例如检查size字段的值与动态数组的size相匹配。0139ea1e-08b5-11ee-962d-dac502259ad0.png

这两个检查都应该在transfer被monitor收集时执行。由于这些check是在同一时间发生的,所以可以封装成一个函数,这样就只需要进行一次调用。

01674a2c-08b5-11ee-962d-dac502259ad0.png

功能覆盖是通过SystemVerilog covergroups实现的,下面是一个简单的covergroups的例子。

018bd310-08b5-11ee-962d-dac502259ad0.png

这个covergroup被定义在一个从uvm_monitor派生出来的类里面。对于上述covergroup,应该在一个函数中声明作为coverpoints的局部变量,然后对covergroup进行采样。

01b62d68-08b5-11ee-962d-dac502259ad0.png

SystemVerilog没有提供动态数组覆盖率收集的能力,这个函数实现了这个功能。perform_transfer_coverage()函数会像 perform_transfer_checks()一样,在transaction被monitor收集时调用。

在Interfaces中实现Checks和Coverage

InterfacesChecks被实现为assertions,以检查信号协议为主。例如,一个断言可能会检查一个地址在有效的传输过程中从未出现过X。

在Formal FPV中,

当property表达DUT的内部和输出行为时,使用assert进行检查。

当property表达产生DUT激励的环境行为时,就使用assume约束。

控制Checks和Coverage

应该提供一个字段来控制Checks是否被执行和Coverage是否被收集,该字段可以通过uvm_config_db接口来控制。下面是一个使用checks_enable位来控制Checks的例子。

if (checks_enable)
  perform_transfer_checks();

uvm_config_db#(int)::set(this,"masters[0].monitor", "checks_enable", 0);




审核编辑:刘清

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

    关注

    28

    文章

    1343

    浏览量

    109951
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    19126
  • DUT
    DUT
    +关注

    关注

    0

    文章

    189

    浏览量

    12320

原文标题:在验证环境中开发Checks和Coverage

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32F334上使用IAR开发环境和jlink的SWD接口调试,怎么设置才可以使用IAR的code coverage功能?

    如题,STM32F334上使用IAR开发环境和jlink的SWD接口调试,这种情况下怎么设置才可以使用IAR的code coverage功能啊,谢谢各位!!!
    发表于 04-24 06:08

    【大联大世平Intel®神经计算棒NCS2试用体验】2.搭建OpenVino开发环境下——测试验证开发环境

    经过上一篇文章的开发环境安装,我们已经完成了cmake、python、OpenVINO等安装,接下来,可以将Intel神经计算棒插入电脑中,测试开发环境了,
    发表于 08-20 00:46

    ST-Link调试开发环境介绍设置步骤

    设置BINGGO!开发环境介绍使用Keil MDK5进行代码开发,利用ST-LINK v2下载程序。设置步骤点击工具栏的魔法棒或选择Fla
    发表于 01-25 06:48

    怎样Arduino环境添加ESP32开发板呢

    怎样去安装一种Arduino环境呢?怎样Arduino环境添加ESP32开发板呢?有哪些步骤
    发表于 02-28 10:00

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

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

    SpinalHDL开发环境搭建步骤相关资料分享

    1、SpinalHDL开发环境搭建步骤开发所需软件SpinalHDL 是 Scala 语言的一个库,SpinaHDL 环境搭建所需的软件
    发表于 10-17 15:33

    聊聊芯片IC验证的风险

    就大概率没有问题。实际上我们的设计很多时序问题靠code coverage是没法发现的。如果我们的function coverage也没有写全,此类问题很容易漏掉。第五个,假pas
    发表于 10-21 14:25

    Android 开发环境搭建步骤详细图解

    Android 开发环境搭建步骤详细图解
    发表于 10-24 08:49 11次下载
    Android <b class='flag-5'>开发</b><b class='flag-5'>环境</b>搭建<b class='flag-5'>步骤</b>详细图解

    一个coverage merge小技巧

    分享一个coverage merge小技巧,群里经常看到有小伙伴问改了代码之后coverage能不能merge。今天带大家来看看这个问题。
    的头像 发表于 05-24 10:08 652次阅读
    一个<b class='flag-5'>coverage</b> merge小技巧

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

    SystemVerilog是一名芯片验证工程师,必须掌握的一门语言,其中Function Coverage是必须要懂的知识点之一;
    的头像 发表于 06-04 16:30 7281次阅读
    SystemVerilog实用知识点:覆盖率之Function <b class='flag-5'>Coverage</b>

    基于UVM验证环境开发测试流程

    验证环境用户需要创建许多测试用例来验证一个DUT的功能是否正确,验证环境开发者应该通过以下方式提
    的头像 发表于 06-09 11:11 941次阅读
    基于UVM<b class='flag-5'>验证</b><b class='flag-5'>环境</b><b class='flag-5'>开发</b>测试流程

    可重用的验证组件构建测试平台的步骤

    本文介绍了从一组可重用的验证组件构建测试平台所需的步骤。UVM促进了重用,加速了测试平台构建的过程。 首先对 测试平台集成者(testbench integrator) 和 测试编写者(test
    的头像 发表于 06-13 09:14 558次阅读
    可重用的<b class='flag-5'>验证</b>组件<b class='flag-5'>中</b>构建测试平台的<b class='flag-5'>步骤</b>

    如何在Arduino IDE安装ESP32开发环境

    要在Arduino IDE中使用ESP32开发板,您需要先安装相应的开发环境。以下是Arduino IDE安装ESP32
    的头像 发表于 07-13 16:48 1.8w次阅读
    如何在Arduino IDE<b class='flag-5'>中</b>安装ESP32<b class='flag-5'>开发</b><b class='flag-5'>环境</b>

    编写动态的验证环境

    作为一名DV,开发验证环境,编写验证环境也算是必备基础技能了。虽然每天都会coding,但最终写出来的代码,是一次性代码,还是方法?
    的头像 发表于 07-17 10:40 598次阅读
    编写动态的<b class='flag-5'>验证</b><b class='flag-5'>环境</b>

    美国VPS上设置开发和测试环境的基本步骤和技巧

    美国vps上搭建开发环境和测试环境是很多开发者和企业追求高效研发与测试流程的重要一步。本文介绍了
    的头像 发表于 06-24 14:46 393次阅读
    <b class='flag-5'>在</b>美国VPS上设置<b class='flag-5'>开发</b>和测试<b class='flag-5'>环境</b>的基本<b class='flag-5'>步骤</b>和技巧