0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TLM通信中常用的术语

我快闭嘴 来源:FPGA学姐 作者:FPGA学姐 2022-09-19 10:24 次阅读

TLM是transaction Level Modeling(事务级建模)的缩写。简单来说,一个transaction就是把具有某一特定功能的一组信息封装在一起而成为的一个类。

如何要在两个uvm_component之间通信,例如实现monitor和scoreboard通信,最简单的方法就是使用全局变量,在monitor里对此全局变量进行赋值,在scoreboard里监测此全局变量值的改变。

这种方法简单、直接,不过要避免使用全局变量,滥用全局变量只会造成灾难性的后果。

e8db61de-373e-11ed-ba43-dac502259ad0.png

由config机制的特性可以想出另一种方法来,即从uvm_object派生出一个参数config_object,在此类中有monitor要传给scoreboard的变量。在base_test中,实例化这个config_object,并将其指针通过config_db#(config_object)::set传递给scoreboard和monitor

当monitor要和scoreboard通信时,只要把此config_object中相应变量的值改变即可。scoreboard中则监测变量值的改变,监测到之后做相应动作。但是一是要引入一个专门的config_object类,二是一定要有base_test这个第三方的参与。永远不能保证某一个从base_test派生而来的类会不会改变这个config_object类中某些变量的值。

  • TLM通信中有如下几个常用的术语

1)put操作,通信的发起者A把一个transaction发送给B。。A具有的端口(用方框表示)称为PORT,而B的端口(用圆圈表示)称为EXPORT。这个过程中,数据流是从A流向B的。

e9060e66-373e-11ed-ba43-dac502259ad0.png

2)get操作,A向B索取一个transaction。A上的端口依然是PORT,而B上的端口依然是EXPORT。这个过程中,数据流是从B流向A的。到这里,读者应该意识到,PORT和EXPORT体现的是控制流而不是数据流。

3)transport操作,A上的端口依然是PORT,而B上的端口依然是EXPORT。A依然是“发起者”,B依然是“目标”。在这个过程中,数据流先从A流向B,再从B流向A。在现实世界中,相当于是A向B提交了一个请求(request),而B返回给A一个应答(response)。所以这种transport操作也常常被称做request-response操作

put、get和transport操作都有阻塞和非阻塞之分

e91fc34c-373e-11ed-ba43-dac502259ad0.png

  • PORT与EXPORT

PORT具有高优先级,而EXPORT具有低优先级。只有高优先级的端口才能向低优先级的端口发起三种操作

UVM提供对TLM操作的支持,在其中实现了PORT与EXPORT。对应于不同的操作,有不同的PORT,UVM中常用的PORT有

uvm_blocking_put_port#(T);uvm_nonblocking_put_port#(T);uvm_put_port#(T);uvm_blocking_get_port#(T);uvm_nonblocking_get_port#(T);uvm_get_port#(T);uvm_blocking_peek_port#(T);uvm_nonblocking_peek_port#(T);uvm_peek_port#(T);//peek系列端口,它们与get系列端口类似,用于主动获取数据uvm_blocking_get_peek_port#(T);uvm_nonblocking_get_peek_port#(T);uvm_get_peek_port#(T);//集合了get操作和peek操作两者的功能uvm_blocking_transport_port#(REQ, RSP);uvm_nonblocking_transport_port#(REQ, RSP);uvm_transport_port#(REQ, RSP);

这15个端口中前12个定义中的参数就是这个PORT中的数据流类型,而最后3个定义中的参数则表示transport操作中发起请求时传输的数据类型和返回的数据类型

TLM中的操作,同时以blocking和nonblocking关键字区分。对于名称中不含这两者的,则表示这个端口既可以用作是阻塞的,也可以用作是非阻塞的,否则只能用于阻塞的或者只能用于非阻塞的。

  • 下面的15种EXPORT定义与前面的15种PORT一一对应

来源:UVM源代码uvm_blocking_put_export#(T);uvm_nonblocking_put_export#(T);uvm_put_export#(T);uvm_blocking_get_export#(T);uvm_nonblocking_get_export#(T);uvm_get_export#(T);uvm_blocking_peek_export#(T);uvm_nonblocking_peek_export#(T);uvm_peek_export#(T);uvm_blocking_get_peek_export#(T);uvm_nonblocking_get_peek_export#(T);uvm_get_peek_export#(T);uvm_blocking_transport_export#(REQ, RSP);uvm_nonblocking_transport_export#(REQ, RSP);uvm_transport_export#(REQ, RSP);

  • PORT与EXPORT的连接

为了实现端口间的通信,UVM 中使用connect 函数来建立连接关系。如A要和B通信(A 是发起者),那么可以这么写:A.port.connect(B.export),但是不能写成B.export.connect(A.port),只有发起者才能调用connect 函数。

举例,A的代码为

文件:src/ch4/section4.2/4.2.1/A.sv3 classAextendsuvm_component;`uvm_component_utils(A)uvm_blocking_put_port#(my_transaction)A_port;endclass14functionvoidA::build_phase(uvm_phasephase);super.build_phase(phase);A_port=new("A_port",this);endfunction19taskA::main_phase(uvm_phasephase);endtask

接一个EXPORT。B的代码为

文件:src/ch4/section4.2/4.2.1/B.sv3classBextendsuvm_component;`uvm_component_utils(B)uvm_blocking_put_export#(my_transaction)B_export;…endclassfunctionvoidB::build_phase(uvm_phasephase);super.build_phase(phase);B_export=new("B_export",this);endfunction19taskB::main_phase(uvm_phasephase); endtask

在env中建立两者之间的连接:

文件:src/ch4/section4.2/4.2.1/my_env.sv4 class my_env extends uvm_env;A   A_inst;B   B_inst;virtual function void build_phase(uvm_phase phase);A_inst = A::type_id::create("A_inst", this);B_inst = B::type_id::create("B_inst", this);endfunctionendclassfunction void my_env::connect_phase(uvm_phase phase);super.connect_phase(phase);A_inst.A_port.connect(B_inst.B_export);endfunction

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21328

    浏览量

    593264
  • 通信
    +关注

    关注

    18

    文章

    5706

    浏览量

    134412
  • TLM
    TLM
    +关注

    关注

    1

    文章

    32

    浏览量

    24677

原文标题:UVM里的TLM通信机制

文章出处:【微信号:FPGA学姐,微信公众号:FPGA学姐】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电子技术中常用符号及术语大全

    电子技术中常用符号及术语大全 VBO …… Breakover Voltage 转折电压 VC …… Clamping Voltage 箝位电压 VDC、 VR …… DC Reverse Voltage 反向
    发表于 12-04 09:13 3813次阅读

    通信中常听到的band38、39指什么?

    通信中常听到的band38、39指什么?为什么lte有时工作频率可以是2.3G?
    发表于 01-25 23:15

    无线通信中术语汇总

    无线通信中术语介绍
    发表于 12-21 06:02

    OpenGL常用术语有哪些?

    OpenGL常用术语解析
    发表于 03-18 06:57

    嵌入式领域中常用的5种通信协议是什么

    文章目录嵌入式领域中常用的5种通信协议嵌入式领域中常用的5种通信协议串口协议(UART/USART):串口总线其实就是一种通信协议,这种协议
    发表于 12-14 06:22

    通信专业常用英语术语详解

    通信专业常用英语术语详解ADM Add Drop Multiplexer 分插复用器: 利用时隙交换实现宽带管理,即允许两个STM-N信号之间的不同VC实现互连,并且具有无需分接和终结整
    发表于 11-23 16:43 0次下载

    LED照明常用术语

    LED照明常用术语
    发表于 03-01 09:08 769次阅读

    网络设备中常术语含义及故障分析

    网络设备中常术语含义及故障分析,详细解释了在网络设备使用中常见的术语
    发表于 12-27 11:38 1.4w次阅读

    光耦常用参数及术语

    光耦常用参数及术语
    发表于 06-04 11:25 789次阅读

    智慧农业中的常用术语解析

    了解智慧农业中常用术语的定义,这些术语包括农业4.0、农艺数据、物联网、农业即服务、精准农业等。
    的头像 发表于 12-29 14:49 4696次阅读

    在光纤通信中最常用的波长和作用分析

    光是由它的波长来定义,在光纤通信中,使用的光是在红外区域中的光,此处光的波长大于可见光。 在光纤通信中,典型的波长是800到1600nm,其中最常用的波长是850nm、1310nm和1550nm。
    的头像 发表于 11-24 16:17 2.2w次阅读

    分享:单片机常用术语

    分享:单片机常用术语
    发表于 02-10 11:11 6次下载
    分享:单片机<b class='flag-5'>常用</b><b class='flag-5'>术语</b>

    无线通信系统中常用的HARQ机制

    本文主要简述一下在无线通信系统中常用的HARQ机制。注意,在不同的标准中,HARQ传输机制有所不同。
    的头像 发表于 08-05 09:07 1631次阅读

    100个数字IC设计中常用的缩写或术语

    下面为大家收集了100个数字IC设计中常用的缩写或术语,供大家参考,为初学者门的学习添砖加瓦。
    发表于 06-20 12:43 655次阅读

    通过慢速跳频减少无线通信中的干扰

    本文要点扩频中的跳频技术,通常用于无线个人区域网络和局域网应用。慢速跳频属于跳频的一种,主要用于避免无线通信系统中的多路访问干扰。慢速跳频扩频技术是无线局域网和无线个人区域网络通信中常用的一种技术
    的头像 发表于 09-09 08:14 858次阅读
    通过慢速跳频减少无线<b class='flag-5'>通信中</b>的干扰