我是靠谱客的博主 无私鞋子,最近开发中收集的这篇文章主要介绍(4)UVM TLM通信之FIFO上的端口及调试FIFO上的端口及调试FIFO和IMP的取舍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

TLM通信之FIFO上的端口及调试

  • FIFO上的端口及调试
  • FIFO和IMP的取舍

FIFO上的端口及调试

在这里插入图片描述
上图中所有以圆圈表示的EXPORT虽然名字中有export,但是本质上都是IMP。这里面包含了12种IMP,用于分别和相应的PORT及EXPORT连接。

peek端口与get相似,其数据流、控制流都相似,唯一的区别在于当get任务被调用时,FIFO内部缓存中会少一个transaction,而peek被调用时,FIFO会把transaction复制一份发送出去,其内部缓存中的transaction数量并不会减少

除了这12个IMP外,上图中还有两个analysis_port:put_ap和get_ap。当FIFO上的blocking_put_export或者put_export被连接到一个blocking_put_port或者put_port上时,FIFO内部被定义的put任务被调用,这个put任务把传递过来的transaction放在FIFO内部的缓存里,同时,把这个transaction通过put_ap使用write函数发送出去。FIFO的put任务定义如下:

什么时候会触发FIFO中的这个get任务呢?一个blocking_get_port连接到了FIFO上,当它调用get任务获取transaction时就会调用FIFO的get任务。除此之外,FIFO的get_export、get_peek_export和blocking_get_peek_export被相应的PORT或者EXPORT连接时,也能会调用FIFO的get任务

FIFO的类型有两种,一种是上节介绍的uvm_tlm_analysis_fifo,另外一种是uvm_tlm_fifo。这两者的唯一差别在于前者有一个analysis_export端口,并且有一个write函数,而后者没有。除此之外,本节上面介绍的所有端口同时适用于这两者。

FIFO中的众多端口方便了用户的使用,同样的,UVM也提供了几个函数用于FIFO的调试。
used函数用于查询FIFO缓存中有多少transaction。is_empty函数用于判断当前FIFO缓存是否为空。与is_empty对应的是is_full,用于判断当前FIFO缓存是否已经满了。作为一个缓存来说,其能存储的transaction是有限的。那么这个最大值是在哪里定义的呢?FIFO的new函数原型如下:

function new(string name,uvm_component parent=null,int size=1);

FIFO在本质上是一个component,所以其前两个参数是uvm_component的new函数中的两个参数。第三个参数是size,用于设定FIFO缓存的上限,在默认的情况下为1。若要把缓存设置为无限大小,将传人的size参数设置为0即可。通过size函数可以返回这个上限值。

FIFO的复位函数,这个函数用于清空FIFO缓存中的所有数据:

virtual function void flush();

FIFO和IMP的取舍

在用FIFO通信的方法中,完全隐藏了IMP这个UVM中特有、而TLM中根本就没有的东西。用户可以完全不关心IMP。因此,对于用户来说,只需要知道analysis_port、blocking_get_port即可。简化了工作量。尤其是在scoreboard面临多个IMP,且需要为IMP声明一个后缀时,这种优势更加明显

FIFO连接的方式增加了env中代码的复杂度,满满的看上去似乎都是与FIFO相关的代码。尤其是当要连接的端口数量众多时,这个缺点更加明显。

对于使用端口数组的情况,FIFO要优于IMP。假如参考模型中有16个类似端口要和scoreboard中相应的端口相互通信,如此多数量的端口,在参考模型中可以使用端口数组来实现.

这篇笔记参考《UVM实战》、《芯片验证漫游指南》和某验证视频整理而成,仅作学习心得交流,如果涉及侵权烦请请告知,我将第一时间处理。

最后

以上就是无私鞋子为你收集整理的(4)UVM TLM通信之FIFO上的端口及调试FIFO上的端口及调试FIFO和IMP的取舍的全部内容,希望文章能够帮你解决(4)UVM TLM通信之FIFO上的端口及调试FIFO上的端口及调试FIFO和IMP的取舍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部