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

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

3天内不再提示

UVM验证环境开发之建模激励数据

芯片验证工程师 来源:芯片验证工程师 2023-05-29 14:57 次阅读

数据项:

作为DUT的激励对象。

表示验证环境处理的transactions。

用于 transaction-level的覆盖率收集和功能比对。

UVM类库提供uvm_sequence_item基类。每个用户定义的数据项都应该直接或间接地派生自这个基类。

要创建一个数据项,需要:

分析DUT的transaction规格,确定属性、约束、task和function。

从uvm_sequence_item基类(或它的派生类)派生出一个数据项类。

为数据项定义一个new函数。

为步骤(a)中确定的项目增加控制字段("旋钮"),以便于编写测试。

使用UVM field macros来实现打印、复制、比较等,UVM允许单独指定每个字段所需的自动化。

定义do_*函数,用于创建、比较、打印、packing和unpacking所需的transaction数据。

为了帮助debugging和tracking transaction,uvm_transaction基类通过get_transaction_id()成员函数获取唯一的transaction number。因为uvm_sequence_item基类从uvm_transaction扩展而来,所以也包括get_transaction_id()成员函数。

下例中的simple_item类定义了几个随机变量和约束。UVM的宏实现了对这个类进行操作的各种方法,如复制、比较、打印等等。特别是,`uvm_object_utils宏将类的类型注册到factory。

0922dcc0-fc8c-11ed-90ce-dac502259ad0.png

第1行 从uvm_sequence_item派生出数据项,以便它们可以在sequence中生成。

第5行和第6行向数据项添加约束条件,以便:

指定数据项规格。

指定生成数据项的默认分布。

第7行-第12行 使用UVM的宏来自动实现诸如copy(), compare(), print(), pack()等函数。

继承和约束分层

在验证过程中,验证组件用户可能需要通过在类定义中添加更多的约束来调整数据项的生成。在SystemVerilog中 ,这是用继承(inheritance)来完成的。下面的例子显示了一个派生的数据项word_aligned_item,它包括一个额外的约束条件,只选择word对齐的地址。

094aa52a-fc8c-11ed-90ce-dac502259ad0.png

09528fce-fc8c-11ed-90ce-dac502259ad0.png

为了实现这种数据项类型的可扩展性:

数据项的基类(本例中的simple_item)应该使用virtual methods,以允许派生类重写功能。

确保约束块的组织方式,使其能够覆盖或禁用随机变量的约束,而不必重写更多的代码。

字段可以用protected或local关键字声明,以限制对属性的访问。

定义控制字段("旋钮")。

产生输入空间的所有数值往往是不可能的,通常也没有必要。能够从范围或类别的值中生成部分值是很重要的。在上述simple_item例子中,delay属性可以随机化为0和最大无符号整数之间的任何值。

覆盖整个合法空间是没有必要的(也不实际),但是尝试背靠背、短、中、大延迟,以及所有这些delay模式的组合是很重要的。为了做到这一点,需要定义控制字段(通常称为 "旋钮"),使用例编写者能够控制这些变量。

这些控制旋钮也可以用于覆盖率的收集。为了提高可读性,使用枚举类型来表示各种生成的类别。

096fd05c-fc8c-11ed-90ce-dac502259ad0.png

使用这种方法可以创建更加抽象的测试。例如,你可以指定分布为:

09769202-fc8c-11ed-90ce-dac502259ad0.png

在创建数据项时,要牢记经常使用什么范围的值,或者哪些类别是该数据项所需要关注的。然后给数据项添加旋钮,以简化对这些数据项类别的控制和覆盖收集。

审核编辑:汤梓红

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

    关注

    3

    文章

    4273

    浏览量

    62291
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    19119
  • 验证
    +关注

    关注

    0

    文章

    58

    浏览量

    15149

原文标题:UVM验证环境开发之建模激励数据

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

收藏 人收藏

    评论

    相关推荐

    IC验证"UVM验证平台"组成(三)

    model)。一个简单的验证平台框图:在UVM中,引入了agent和sequence的概念,因此UVM验证平台的典型框图长这样:通知:本章更新后在更新一篇《IC
    发表于 12-02 15:21

    IC验证"一个简单的UVM验证平台"是如何搭建的(六)

    的组件,是整个验证平台数据流的源泉。本节以一个简单的DUT为例,说明一个只有driver的UVM验 证平台是如何搭建的。最简单的验证平台,假设有如下的DUT定义:这个DUT的功能非常简
    发表于 12-04 15:48

    数字IC验证UVM”基本概述、芯片验证验证计划(1)连载中...

    。不同阶段的需要不同的验证方法,比如:在算法级,可以使用c,c++或者是matlab对算法进行建模验证算法的可行性,再比如:对rtl进行功能验证来检查rtl是否满足我们的要求等。我们
    发表于 01-21 15:59

    数字IC验证“什么是UVM”“UVM的特点”“UVM提供哪些资源”(2)连载中...

    为构建平台的结构上花去过多的时间,可以把精力集中放在事物级建模以及结果的分析上。另外,由于不同项目的平台的结构和使用方法基本相同,这就为多个验证工程师之间的沟通交流提供了方便,uvm验证
    发表于 01-21 16:00

    数字IC验证“构成uvm测试平台的主要组件”(4)连载中...

      大家好,我是一哥,上章一个典型的uvm验证平台应该是什么样子的?从本章开始就正式进入uvm知识的学习。先一步一步搭建一个简单的可运行的测试平台。  本章首先来介绍一下构成uvm测试
    发表于 01-22 15:33

    数字IC验证“搭建一个可以运行的uvm测试平台”(5)连载中...

    的transaction,以及创建用于产生事物的事物发生器sequence。  在uvm验证平台中穿梭各个组件之间的基本信息单元是一个被称为transaction的数据对象,也就是我们前面所说的事物
    发表于 01-26 10:05

    如何构建UVM寄存器模型并将寄存器模型集成到验证环境

    ),通常也叫寄存器模型,顾名思义就是对寄存器这个部件的建模。本文要介绍的内容,包括对UVM寄存器模型的概述,如何构建寄存器模型,以及如何将寄存器模型集成到验证环境中。篇幅原因,将在下一
    发表于 09-23 14:29

    一种基于UVM的混合信号验证环境

    一种基于UVM的混合信号验证环境_耿睿
    发表于 01-07 21:39 1次下载

    参数化UVM IP验证环境(上)

    的连接、驱动器、监视器、仿真序列以及功能覆盖率的建立。 本文呈现出了一种使用UVM验证方法学构建基于高可配置性的高级微处理器总线架构(AMBA)的IP验证环境,其中会使用到Synops
    发表于 09-15 14:37 6次下载
    参数化<b class='flag-5'>UVM</b> IP<b class='flag-5'>验证</b><b class='flag-5'>环境</b>(上)

    UVM验证平台执行硬件加速

    UVM已经成为了一种高效率的、从模块级到系统级完整验证环境开发标准,其中一个关键的原则是UVM可以开发
    发表于 09-15 17:08 14次下载
    <b class='flag-5'>UVM</b><b class='flag-5'>验证</b>平台执行硬件加速

    利用Systemverilog+UVM搭建soc验证环境

    利用Systemverilog+UVM搭建soc验证环境
    发表于 08-08 14:35 5次下载

    ASIC芯片设计UVM验证

    百度百科对UVM的释义如下:通用验证方法学(Universal Verification Methodology, UVM)是一个以SystemVerilog类库为主体的验证平台
    发表于 11-30 12:47 1428次阅读

    盘点UVM不同机制的调试功能

    基于UVM搭建验证环境和构造验证激励,调试的工作总是绕不开的。实际上,对验证
    的头像 发表于 04-06 09:36 827次阅读

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

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

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

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