UVM New() 函数

1. UVM 中的new()函数实际上是为数据或者句柄指定一个新的地址空间,简单理解就是新建一个地址空间,类似新建一个文件

2.需要使用新建的时候才可以使用new(),直接引用不需要使用new()函数

3.在refm会用到output_item,这个output_item 其实就是作为数据的载体,将refm已经处理好的数据传递到scbo。(你也可以直接在refm中新建一个output_item)。类似的还有input agent 中的monitor

4. data_base 和data_sys的区别在于,data_base可以理解为父类,data_sys是从data_base扩展而来

5. transaction 和sequence的区别:

transaction,顾名思义,“事务”,是指一系列数据的集合。我们知道,DUT的接口是pin level的信号,对于验证平台来说,很难对几十个甚至几百个pin上的信号单独进行处理和传输。我们需要集中式的管理这些信号的驱动、采样、传输,因而,抽象层次更高的transaction应运而生。transaction本质上,是DUT上接口信号的“打包”。

sequence则是一系列transaction组成的发送序列。DUT要“动”起来的关键,就是sequence。当driver要给DUT驱动数据,它会向sequencer申请一笔transaction,申请到了,就会将这笔transaction解析成pin level,驱动到DUT的接口上。

那么sequencer中的transaction从何而来?答案就是sequence。当sequence启动时,它会创建一个item,并“扔给”sequencer进行仲裁,仲裁通过后,item会被放到一个REQ FIFO中,driver通过get_next_item阻塞语句得到这个item,然后驱动到DUT。通常一个sequence会发送若干笔transaction,这些transaction就通过sequencer这个“传送带”,源源不断地送给driver,进而推动DUT这个机器运转起来。

6.sequence、sequencer、driver的握手机制

关于sequence、sequencer、driver三者是如何握手的,放一张图,仅供参考,握手机制很复杂,核心要义有两点:(1)在sequence中放sequencer的句柄,在sequencer中放sequence的句柄,进行sequence与sequencer的“双向握手”;(2)利用TLM机制进行driver、sequencer的握手。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值