UVM_6:事务级建模TLM通信


前言

TLM是一种基于事务(Transaction)的通信方式,通常在高抽象级语言,例如SystemC、SV/UVM中作为模块间的通信方式。
TLM通信保证了相邻组件间的通信不再通过显式句柄引用,而是独立于组件的通信方式,为验证组件的复用提供了很好地封闭性。

仿真速度是TLM对项目进度的最大贡献,同时TLM传输中的事务又可以保证足够大的信息量和准确性。

提示:以下是本篇文章正文内容,下面案例可供参考

一、简单例子:driver-sequencer组件之间的通信

driver的TLM端口:
uvm_seq_item_pull_port #(REP,RSQ) seq_item_port
sequencer的端口:
uvm_seq_item_pull_imp #(REQ,RSP,this_type) seq_item_export
driver和sequencer的端口连接:
driver::seq_item_port.connect(sequencer::seq_item_export)

二、TLM通信

系统原型阶段和芯片验证阶段均使用了TLM通信方式。前者是为了更快地实现硬件原型之间的数据通信,后者是为了更快地实现验证组件之间的通信。
仿真速度是TLM对项目进度的最大贡献,同时TLM传输中的事务又可以保证足够大的信息量和准确性。
TLM并不是某种语言的产物,而是作为一种提高数据传输抽象级的标准存在的。
TLM是一种基于事务(Transaction)的通信方式,通常在高抽象级语言,例如SystemC、SV/UVM中作为模块间的通信方式。
TLM通信保证了相邻组件间的通信不再通过显式句柄引用,而是独立于组件的通信方式,为验证组件的复用提供了很好地封闭性。
在这里插入图片描述

在芯片开发流程中,TLM通信主要在两个方面发挥了重要作用:
① 系统原型中各模块间通过TLM通信可以实现较宽松时间内的数据包传输;
② 验证平台组件之间通过TLM通信,验证平台组件driver与硬件设计模块之间通过TLM通信。
TLM通信基本概念:
TLM通信需要两个通信的对象(分别称为initiator 和 target)。谁先发起通信请求,谁就属于initiator,而作为通信的响应方,称为target。按照Transaction的流向,可以将对象分为 producer 和 consumer。数据从哪里产生,它就属于producer,而数据流向了哪里,它就属于consumer。注意:transaction的流向不一定是从initiator流向target,也可能是target流向initiator。
initiator 与 target 的关系同 producer 与consumer的关系不是固定的 。
有了两个参与通信的对象后,用户需要将TLM通信方法在target一端中实现,以便于initiator将来作为发起方可以调用target的通信方法,实现数据传输。
最后需要将两个对象进行连接,需要在两个TLM对象中创建TLM端口,继而在更高层次中将这两个对象进行连接。

三、TLM通信步骤

分辨出initiator 和 target ,producer 和 consumer;
在 target 中实现TLM通信方法;
在两个对象中创建TLM端口,initiator中创建port端口,target端创建imp端口;
在更高层次对两个对象的端口进行连接。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值