(14)UVM 史上最全通信管道介绍

本文详细介绍了UVM中的TLM通信管道,包括TLM FIFO、Analysis Port、Analysis TLM FIFO以及Request & Response通信管道。TLM FIFO提供数据缓存功能,Analysis Port用于从一个源向多个目标推送数据。uvm_tlm_analysis_fifo结合了两者特性,支持一端到多端的数据传输。Request & Response通信管道通过uvm_tlm_req_rsp_channel和uvm_tlm_transport_channel实现高效的请求-响应交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UVM通信管道

一、前言

  • TLM通信的实现方式,这些通信有一个共同的地方,即都是端对端的,同时在target一端需要实现传输方法,例如put()或者get()。
  • 这种方式在实际使用时也可能会给用户带来一些烦恼,如何可以不自己实现这些传输方法,同时可以享受到TLM的好处?
  • 对于monitor、coverage collector等组件在传输数据时存在一端到多端的传输,如何解决这一问题?
  • 下面介绍的几个TLM组件和端口可以帮助用户免除这些烦恼:
  1. TLM FIFO
  2. Analysis Port
  3. Analysis TLM FIFO
  4. Request & Response通信管道

二、TLM FIFO

  • 在一般TLM传输过程中,无论是initiator给target发起一个transaction,还是initiator从target获取一个transaction,transaction最终都流向consumer中(initiator和target都可以是consumer)。consumer在没有分析transaction时,我们希望将该对象先存储到本地FIFO中供稍后使用。

  • 如果按照之前介绍的通信方法,用户需要分别在两个组件中例化端口,同时在target中实现相应的传输方式。多数情况下,需要实现的传输方式都是相似的,方法的主要内容即是为了实现一个数据缓存功能。

  • 我们可以借助uvm_tlm_fifo,uvm_tlm_fifo类是一个新组件,它继承于uvm_component类,而且已经预先内置了多个端口以及实现了多个对应方法供用户使用。只有组件才可以例化端口。

  • uvm_tlm_fifo的功能类似于mailbox,不同的地方在于uvm_tlm_fifo提供了各种端口供用户使用。推荐在initiator端例化put_port或者get_peek_port,来匹配uvm_tlm_fifo的端口类型。
    在这里插入图片描述
    在这里插入图片描述
    对于uvm_tlm_fifo来说,它里面的BUFFER只有一个,因此它里面存放的数据类型是固定的

  • 虽然它的端口名称是xxx_export,实际上它们的类型都是imp类型

三、Analysis Port

除了端对端的传输,在一些情况下还有多个组件会对同一个数据进行运算处理。如果这个数据是从同一个源的TLM端口发出到达不同组件,这就要求该种端口可以满足从一端到多端的需求。如果数据源发生变化需要通知跟它关联的多个组件时,我们可以利用软件的设计模式之一观察者模式(observer pattern)/广播模式来实现。
oberver pattern的核心在于:

  • 第一,这是从一个initiator端到多个target端的方式。
  • 第二,analysis port采取的是"push"模式,即从initiator端调用多个target端的write()函数来实现数据传输。

一个典型的analysis port类型端口的连接方式,类似于其他TLM端口的是,按照传输方法和端口方向组合可以将analysis port分为uvm_analysis_port、uvm_analysis_export以及uvm_analysis_imp
在这里插入图片描述

  • 以上图为例,在target一侧例化了uvm_analysis_imp后还需要实现write()函数。
  • 在顶层可以将initiator端的uvm_analysis
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字IC小白的日常修炼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值