UVM TLM的实现方式

UVM框架采用TLM(Transaction Level Modeling)机制实现组件间的transaction传输,提高复用性和独立性。TLM主要包含put/imp/export/analysis端口、fifo端口和sequencer-driver端口。fifo端口是组件类,提供了put和get等方法。put/imp/export涉及uvm_blocking_put_port和uvm_blocking_put_imp,它们通过reslove_binding函数实现连接。sequencer-driver端口增加了get-next-item等方法。双向端口如master_port/mast_imp和slave_port/slave_imp支持put和get,transport端口通过transport方法实现req和rsp的传输,req和rsp类型可不同。
摘要由CSDN通过智能技术生成

在UVM 框架中中,组件之间transaction的传输通过TLM机制实现的,这样对组件的复用性以及各个组件之间的独立性带来了极大的好处,想一想如果么有TLM机制,怎么实现transaction的传输呢,可以会使用SV中的mailbox,在两个将要通信的组件之间各个声明一个mailbox句柄,然后在父一层将两个句柄连接在一块,这样如果不仅仅增加了代码量,同时如果在复用的时候,组件通信的关系发生改变,这样子还需要在顶层修改代码,没有做到组件之间的独立性。而是用TLM,只需要在顶层修改连接关系即可。TLM机制说白了就是将之前使用SV的方法封装到一个特定的class中(这也体现了为什么UVM是方法学,他是在SV带的基础上进一步封装)

  1. 在TLM中常用的主要分为3类端口

  (1)put/imp/export/analysis等

(2)fifo端口

(3)sequencer--------driver之间的端口

fifo端口:其中fifo继承与uvm_component,本身就是一个组件类,在组件中实现了需要的方法,比如put方法,get方法等,同时这个类中声明了很多个我们使用的put/imp/export/analysis port等

put/imp/export/:

上图以uvm_blocking_put_port和uvm_blocking_put_imp为例子来

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值