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

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

3天内不再提示

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

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

验证环境用户需要创建许多测试用例来验证一个DUT的功能是否正确,验证环境开发者应该通过以下方式提高测试用例的开发效率:

在数据项类中加入旋钮,以简化测试用例开发控制

创建一些可重用的sequences library。

声明自定义的Sequences

Sequences是由几个数据项组成的,它们共同构成一个数据pattern以触发有趣的DUT场景。

验证组件可以包括一个基本sequences library(而不是单一的数据项),测试用例编写者(验证环境使用者)可以调用它。这种方法加强了对常见数据pattern的复用,并减少了测试用例的代码长度。此外,一个Sequences可以调用其他Sequences,从而创造更复杂的场景。

UVM类库提供了uvm_sequence基类。你应该直接或间接地从这个类派生出所有的Sequences类。要创建一个用户定义的Sequences:

从uvm_sequence基类派生出一个Sequences,并指定request和response数据项类型参数。在下面的例子中,只指定了request类型,即simple_item,所以response数据项类型也是simple_item 。

使用`uvm_object_utils宏来向factory注册Sequences类型。

如果Sequences需要访问其相关sequencer,使用'uvm_declare_p_sequencer宏来声明sequencer指针。

实现Sequences的body任务来触发特定的DUT场景。在body任务中,你可以发送数据项或者调用其他Sequences。

下面例子中的simple_seq_do类定义了一个简单的Sequences。它是由uvm_sequence派生出来的,并 使 用 了 `uvm_object_utils 宏 。这个例子还定义了一个simple_sequencer类,simple_seq_do序列可以在该simple_sequencer上运行。

9b1743c8-05e7-11ee-962d-dac502259ad0.png

发送Sequence Items或者Subsequences的基本流程

要 发 送 一 个sequence item,sequence的body()任务 需 要create() 该 sequence item , 对 该sequence item调 用start_item(),然后随机化该sequence item(可选的),最后对该sequence item调用finish_item()

要发送一个subsequence,parent sequence的body()任务需要create该subsequence,对其进行随机化(可选的),最后对该subsequence调用start()。如果subsequence有一个相应的response,parent sequence可以调用get_response()。

9b2f79d4-05e7-11ee-962d-dac502259ad0.png

9b39711e-05e7-11ee-962d-dac502259ad0.png

上图显示了在uvm_do宏中实现的发送sequence itemssequences的完整流程。uvm_do宏会更根据传递的类型create一个对象,并且根据发送sequence items和sequences执行对应的流程。

uvm_do宏不会执行subsequences的pre_body()和post_body()方法。



审核编辑:刘清

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

    关注

    0

    文章

    181

    浏览量

    18964
  • DUT
    DUT
    +关注

    关注

    0

    文章

    180

    浏览量

    11997
  • sequence
    +关注

    关注

    0

    文章

    23

    浏览量

    2807

原文标题:基于UVM验证环境开发测试用例

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

收藏 人收藏

    评论

    相关推荐

    fpga原型验证流程

    FPGA原型验证流程是确保FPGA(现场可编程门阵列)设计正确性和功能性的关键步骤。它涵盖了从设计实现到功能验证的整个过程,是FPGA开发流程
    的头像 发表于 03-15 15:05 375次阅读

    fpga验证uvm验证的区别

    FPGA验证UVM验证在芯片设计和验证过程中都扮演着重要的角色,但它们之间存在明显的区别。
    的头像 发表于 03-15 15:00 263次阅读

    UVM环境中如何控制打印数组或队列元素的数据量

    UVM验证环境的项目中,经常需要使用内置的print()函数或sprint()函数打印
    的头像 发表于 12-20 10:14 1228次阅读
    在<b class='flag-5'>UVM</b><b class='flag-5'>环境</b>中如何控制打印数组或队列元素的数据量

    UVM环境的看门狗怎么没看住超时了?

    uvm验证环境里一般通过objection机制来控制仿真的结束,不过在机制之外,有时还需要通过看门狗来watchdog避免仿真环境挂死,watchdog配合objection一起来控制
    的头像 发表于 12-04 11:42 497次阅读

    编写动态的验证环境

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

    UVM环境debug的正确开启方式

    在使用UVM搭建环境时,遇到问题时,调试方式有千千万万,但很有必要了解下UVM库提供了哪些内建的调试手段,可以少走弯路,大大提升效率,而不是疯狂加各种打印消息。
    的头像 发表于 07-03 18:14 1254次阅读

    数字IC验证UVM概述

    UVM提供了实现 **覆盖驱动验证(coverage-driven verification ,CDV)** 的框架。 CDV结合了自动测试向量生成,自检查和覆盖率收集,显著地缩短了用于验证
    发表于 06-25 11:38 966次阅读
    数字IC<b class='flag-5'>验证</b>之<b class='flag-5'>UVM</b>概述

    浅析UVM中的Virtual Sequences

    在一个系统级的验证环境中,多个验证组件并行地产生激励。测试用例开发者可能希望协调多个通道激励之间的时序和数据。
    的头像 发表于 06-20 09:28 932次阅读
    浅析<b class='flag-5'>UVM</b>中的Virtual Sequences

    创建UVM Testcase的步骤

    UVM中,Testcase是一个类,它封装了测试用例开发者编写的特定激励序列。
    的头像 发表于 06-15 09:41 957次阅读
    创建<b class='flag-5'>UVM</b> Testcase的步骤

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

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

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

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

    Easier UVM Code Generator Part 4:生成层次化的验证环境

    本文使用Easier UVM Code Generator生成包含多个agent和interface的uvm验证环境
    的头像 发表于 06-06 09:13 656次阅读

    UVM为什么要引入寄存器模型呢?

    新需求:为带寄存器的DUT搭建UVM仿真环境
    的头像 发表于 05-26 14:57 1052次阅读
    <b class='flag-5'>UVM</b>为什么要引入寄存器模型呢?

    UVM TLM的基本概念介绍

    UVM中,transaction 是一个类对象,它包含了建模两个验证组件之间的通信所需的任何信息。
    的头像 发表于 05-24 09:17 1214次阅读
    <b class='flag-5'>UVM</b> TLM的基本概念介绍

    谈谈UVM代码生成器的优点及开发使用时需要注意的问题

    毋庸置疑,UVM大大提高了我们开发验证平台的效率。但同时,熟练掌握UVM搭建验证平台也并不是一件容易的事情。
    的头像 发表于 05-20 14:14 1300次阅读
    谈谈<b class='flag-5'>UVM</b>代码生成器的优点及<b class='flag-5'>开发</b>使用时需要注意的问题