前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UVM(十一)之各种port

UVM(十一)之各种port

作者头像
瓜大三哥
发布2018-02-26 11:45:10
1K0
发布2018-02-26 11:45:10
举报
文章被收录于专栏:瓜大三哥

UVM(十一)之各种port

UVM中内置了各种port,用于实现TLM级别的。

1. uvm_component之间的通信

如果要在两个uvm_component之间通信,如一个monitor和一个scoreboard之间通信:

最简单的方法就是使用全局变量,在monitor里对此全局变量进行赋值,在scoreboard里检测此全局变量值的改变。这种方法简单直接,不过就如前面一直强调的,要谨慎使用全局变量,要不然会造成灾难性的后果。

稍微复杂一点的方法,在scoreboard中有一个变量,这个变量设置为外部可以直接访问的,即非local类型的,然后在monitor中给这个变量赋值,如下图所示。要完成这个任务,那么要在monitor中有一个指向scoreboard的指针,否则虽然scoreboard把这个变量给设置为非local类型的,但是monitor依然无法该变。

这种方法的问题在于整个scoreboard里面的所有非local类型的变量都对monitor是可见的,而加入monitor的开发人员一不小心改变了scoreboard中的 一些变量,那么后果将会可能是致命的。

由于config机制的半全局变量的特性,我们可以相处第三种方法来。即专门的实例化一个config类,在此类中有monitor要传给scoreboard的变量。在base_test中,可以把这个config类set给scoreboard和monitor。当monitor要和scoreboard通信时,只要把此config类的相关变量的值改变既可。scoreboard中则检测变量值的改变,检测到之后做相应动作。这种方法比上面的两种方法都要好,但是仍然显得有些笨拙。一是要引入一个专门的config类,二是一定要有base_test这个第三方的参与。在大多数情况下,这个第三方是不会惹麻烦的。但是永远不能保证某一个从base_test派生而来的类会不会改变config类中某些变量的值。也就是说,依然存在一定的风险。而且,这种方法显得有些笨拙。

解决这个问题最好的方法就是在monitor和scoreboard之间专门建立一个通道,让信息只能在这个通道内流动,scoreboard也只能从这个通道中接收信息,这样几乎就可以保证scoreboard中信息只能从monitor中来,而不能从别的地方来。UVM中的各种port就可以实现这种功能。

2. TLM级别的通信

TLM是Transaction Level Modeling的缩写,所谓的transaction level是相对DUT中各个module之间信号线级别的通信来说的。TLM级别的通信中有几个常用的术语:

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

get操作:如下图所示,A向B索取一个transaction,在这个过程中,A依然是“发起者”,B依然是“目标”,A上的端口依然是PORT,而B上的端口依然是EXPORT。这个过程中,数据流是从B流向A的。无论是get操作还是put操作,其发起者拥有的都是PORT端口,而不是EXPORT。

transport操作:如下图所示,transport操作相当于一次put操作加一次get操作,这两次操作的“发起者”都是A,目标都是B。A上的口依然是PORT,而B上的端口依然是EXPORT。在这个过程中,数据流先从A流向B,再从B流向A。在现实世界中,相当于是A传递给了B一个REQUEST,而B返回给A一个RESPONSE。所以这种transport操作也常常被称作request-response操作。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜大三哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • UVM(十一)之各种port
    • 1. uvm_component之间的通信
      • 2. TLM级别的通信
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档