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

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

3天内不再提示

为什么不是uvm_transaction构建UVM事务呢?

芯片验证工程师 来源:芯片验证工程师 2023-03-08 13:41 次阅读

什么是 UVM transaction?

UVM 中的事务是一个具有信号属性(例如地址和数据)以及错误、延迟等额外信息的类。总之,这个所谓事务封装了所有和DUT激励项相关的信息. 但是,我们无法仅通过单个事务去验证设计,我们需要一组相关的事务。

注意:这里的“相关”也正体现了验证工程师的经验,试想如果全依赖随机如何能够冲击到DUT 的corner case呢?

这里就引入了uvm sequence。

UVM中的一组相关事务称为uvm sequence,单个事务称为sequence items。当你开发一个事务项类时,需要扩展自uvm_sequence_item,而不是 uvm_transaction。

45c93af2-badd-11ed-bfe3-dac502259ad0.png

上面是事务项类的层次结构,其中tx_item就是我们施加给DUT的单个事务。

使用uvm_sequence_item而不是uvm_transaction 的优势

uvm_transaction 类是遗留下来的验证方案中的一部分,它的缺点是不知道上下文,即不知道自己是否属于一组事务中的一部分。

而uvm_sequence_item类中除了前面提到的接口属性之外,还加入了几个连接到外部世界的属性

举个例子,像内存读写这样的事情,一般都会有一个“响应”,它会告诉上游模块是否已经完成了读写操作以及读取的值。

uvm验证环境中的driver也可能同时处理多个sequence,所以同样需要将响应路由到正确的sequence。所以,uvm_sequence_item类带有一个sequence ID 属性,因此响应能够被返回到正确的位置(sequence)。

UVM sequencer就像是一个交通路口红绿灯,因为多个sequence可能会通过同一个driver激励DUT,其中sequencer会在sequence之间进行仲裁。

uvm_sequence_item中有一个uvm_sequencer的句柄(通过sequence的start方法传递),如下所示:

my_sequence.start(env.agt.sqr);
sequence是可以分层的,一个sequence可以启动其他sequence,这种情况下每个 uvm_sequence_item 都有一个指向parent sequence的句柄。

结论

当开发UVM 测试平台时,事务类一定需要从 uvm_sequence_item 扩展,而不是uvm_transaction。




审核编辑:刘清

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

    关注

    0

    文章

    181

    浏览量

    19139
  • DUT
    DUT
    +关注

    关注

    0

    文章

    189

    浏览量

    12342

原文标题:为什么使用 uvm_sequence_item 而不是uvm_transaction构建 UVM 事务?

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

收藏 人收藏

    评论

    相关推荐

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

    uvm的特点以及uvm为用户提供了哪些资源?什么是uvmuvm是通用验证方法学的缩写,是为验证服务的,
    发表于 01-21 16:00

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

    对象,就是transaction。  验证工程师需要根据不同的项目对项目中的事务进行建模,事物对象的类需要从uvm sequence item这个基类进行扩展,为了事物在产生的时候可以自动的随机化,一般
    发表于 01-26 10:05

    什么是uvmuvm的特点有哪些

    直观的印象,就是uvm验证平台,它是分层的结构。图中的每一个巨型框都代表着平台的一个构成元素。这些元素,我们称为平台组建,下面来简单的分析一下。从最底层上来看,agent 中包含了driver,monitor和sequencer,其中driver ,monitor中也包
    发表于 02-14 06:46

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

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

    谈谈UVM中的uvm_info打印

    ) 《 verbosity)。另外也会看传过来的severity和id的配置不是UVM_NO_ACTION,(get_report_action(severity,id) == uvm
    发表于 03-17 16:41

    UVM中seq.start()和default_sequence执行顺序

    和seq2谁会先启动?  // Method1: using build-in start() method of sequence  task run_phase(uvm_phase phase
    发表于 04-04 17:15

    典型的UVM Testbench架构

    UVM类库提供了通用的代码功能,如component hierarchy、transaction level model(TLM),configuration database等等,使用户能够创建任何类型的Testbench架构。
    的头像 发表于 05-22 10:14 2047次阅读
    典型的<b class='flag-5'>UVM</b> Testbench架构

    UVM TLM的基本概念介绍

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

    UVM学习笔记(一)

    driver应该派生自uvm_driver,而uvm_driver派生自uvm_component。
    的头像 发表于 05-26 14:38 1336次阅读
    <b class='flag-5'>UVM</b>学习笔记(一)

    UVM Transaction-Level验证组件

    如下图所示,UVM中的TLM接口为组件之间Transaction的发送和接收提供了一套统一的通信方法。
    的头像 发表于 05-29 09:31 615次阅读
    <b class='flag-5'>UVM</b> <b class='flag-5'>Transaction</b>-Level验证组件

    UVM中的uvm_do宏简析

    uvm_do宏及其变体提供了创建、随机化和发送transaction items或者sequence的方法。
    的头像 发表于 06-09 09:36 4845次阅读
    <b class='flag-5'>UVM</b>中的<b class='flag-5'>uvm</b>_do宏简析

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVM中的uvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-20 17:28 1342次阅读

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVM中的uvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-29 16:57 1232次阅读

    一文详解UVM设计模式

    本篇是对UVM设计模式 ( 二 ) 参数化类、静态变量/方法/类、单例模式、UVM_ROOT、工厂模式、UVM_FACTORY[1]中单例模式的补充,分析静态类的使用,UVM中资源池的
    的头像 发表于 08-06 10:38 1632次阅读
    一文详解<b class='flag-5'>UVM</b>设计模式

    UVM设计中的sequence启动方式有哪几种

    本篇介绍UVM中的sequence,这是UVM中最基础的部分。对于前面介绍的uvm_callback, uvm_visitor等,很少被使用到或者也只有搭建平台的人会使用。
    的头像 发表于 08-17 10:07 3996次阅读
    <b class='flag-5'>UVM</b>设计中的sequence启动方式有哪几种<b class='flag-5'>呢</b>?