关于UVM的一些知识3

首先我们来回顾下MCDF的设计结构模块:1.上行数据的通道从端2.仲裁器3.整形器4.控制寄存器

我们的scordboard提供了一个完整的数据通路覆盖方案,可以从各个agebt中的monitor数检测端口将数据收集起来,同时建立MCDF的参考模型,预测输出数据包,最终实现数据比对。

通过reg_master_agent,chnl_master_agent,fmt_slave_agent这三个激励组件可以有效的生成新的激励序列,而将各个agebt的sequence句柄合并在一起的时候,我们可以使用virtual_sequence.

我们的各个模块的验证环境是独立封装的,对外不用保留数据端口,因此便于环境的进一步继承和复用。并且UVM还提供了config_db的配置方式,这使得整体环境和运行模式都可以从树状的config队形中获取,在顶层环境就可以对不同的uvm_test进行机中个管理和配置。

接下来讲一讲TLM通信,这是一种基于事务的通信方式,需要两个通信的对象,分别是initiator和target,谁发起通信,谁就是initiator,谁作为响应方,谁就是target。按照transaction的流向,我们还可以将对象分为productor和consumer,数据从哪里产生,谁就是productor,数据流向哪里,谁就是consumer。

tlm通信的步骤如下:

1分辨出谁是initoator和target。

2在target中实现TLM通信方法此时要定义传输的数据类型(rsp,req)。

3.在两个component的对象中创建TLM端口,端口是要成对的,传输的数据类型要一致,port对着import。不仅如此,我们还需要子在imp端口中实现put()或者get()方法。

4.在更高层次中将两个对象的端口进行连接。

从数据的流向来看,传输方向可以分为单向和双向传输。单向指的是由initiator发起transaction。双向指的是由initiator发起transaction,传送给target,targrt消化完成之后,在发起rsp transaction,返回给initiator。

TLM端口的类型可以分为:1port,是initiator的发起端。2.export是initiator和target的中间层次的端口,也叫中间点。3.import,target接收req transaction的末端。我们需要注意的是,duoge1port

可以连接而到同一个export或者import;但是单个的port或者export不能来连接到多个import。在端口的通信机制方面,常用的操作由put,get,transfer三种操作,根据端口的操作属性,每种操作还有阻塞和非阻塞之分。在put操作中,数据从initiaator流向target,get操作中,数据从target流向initiator。在transport中,数据从initiator流向target,target处理完成后,在返回给initiator。

当然TLM中还有analysis接口,可以实现一对多的通信,且没有阻塞和非阻塞之分。

接下来讲一讲同步通信元件。在SV中用来做线程同步的机中元件是event,旗语和信箱,但是在UVM中我们需要同步的线程不在局限于同一个对象中,还要解决不同组件之间的线程同步问题。海需要考虑封闭性原则。因此不推荐使用event和旗语。

uvm_event相比于event,具有以下几个特性:

1.evevt被->储发后,会储发@来等待该事件的对象;而uvm_event会通过trigger()来储发,触发后会使用wait_trigger()来等待该事件的对象。

2.wevent无法携带更多的信息,而uvm_evevt可以使用trigger来将触发的数据对象都写入到触发事件中,

3.event触发时没有办法啊使用回调函数,但是event可以通过add_callback来添加回调函数。

当然常规组件之间的数据流向时通过TLM通信方法实现的,如sequencer和driver之间,monitor和scorsboard之间。如果sequence和sequence之间,sequence和dirver直接按进行同步,就需要借助uvm_event来是实现。

在SV中多线程的同步除了旗语和i想你想,还可以使用fork jion来实现,在UVM中,可以使用uvm_barrier来实现,这个方法可以解决组件独立运作的封闭性的需要。uvm_barrier可以设置一定的等待阈值,在不少于这个阈值的进程在等待该对象的时候,就会触发此事件。

.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值