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
    +关注

    关注

    1629

    文章

    21729

    浏览量

    602977
  • 通信
    +关注

    关注

    18

    文章

    6024

    浏览量

    135949
  • TLM
    TLM
    +关注

    关注

    1

    文章

    32

    浏览量

    24747

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    通信中常听到的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次下载

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

    符号及术语SYMBOLS  
    发表于 03-29 16:59 5080次阅读

    LED照明常用术语

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

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

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

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

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

    数据通信中的模拟数据和数字数据

    在数据通信中,概念性的术语很多,只有弄清楚这些概念术语,才能真正地掌握数据通信的意义。
    发表于 08-26 11:50 1.1w次阅读

    科普:示波器常用术语解释

    科普:示波器常用术语解释
    发表于 07-15 18:55 3次下载
    科普:示波器<b class='flag-5'>常用</b>的<b class='flag-5'>术语</b>解释

    分享:单片机常用术语

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

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

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

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

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