tlm源码分析——tlm_fifo

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tlm源码分析——tlm_fifo相关的知识,希望对你有一定的参考价值。

virtual class uvm_tlm_fifo_base从uvm_component继承过来;

内部定义了两个imp,两个port,imp中的两个参数,一个表示trans的type,另一个指向该fifo_base;

      所以imp中的方法实现,是在该fifo实现的;

      技术分享

put_imp,实现trans的put,

get_peek_imp,实现trans的get或peek,

两个analysis_port主要用来将trans,write出去,put进来的,使用put_ap;

                                   get进来的,使用get_ap;

 

剩下定义的2个put_export是连接到put_imp上的,

  定义的6个get_peek是连接到get_peek_imp上的,

       技术分享

这些export供其他的component进行连接,注意每个export只能来接一个port或export。

 

定义各种function 原型;

fifo status类型;  flush,size,used,is_empty,is_full,

put类型;put,try_put,can_put,ok_to_put,

get和peek类似。

 

在fifo_base之上,扩展出了两个fifo,一个tlm_fifo,一个analysis_fifo

 

tlm_fifo,内部实现了一个类型为T的mailbox,来进行数据的保存;

      在new的时候,根据指定的size大小,指定mailbox的大小;

      技术分享

      技术分享

m_pending_blocked_gets,表示目前fifo中,被block住的个数;

put block 没有相应的标志

fifo status的function;

      技术分享

    flush的操作,在目前有block的get时,会报错;

      技术分享

put,get,peek task;写到mailbox的同时,使用analysis port write;

      技术分享

try_get,try_peek,try_put, function;try_peek没有动作很奇怪;

      技术分享

can_put,can_get,can_peek function;

      技术分享

 

tlm_analysis_fifo,其中主要支持了write function;

  新增加了一个analysis_imp的变量;

      技术分享

  调用tlm_fifo的try_put,调用put_ap进行write函数;

      技术分享

以上是关于tlm源码分析——tlm_fifo的主要内容,如果未能解决你的问题,请参考以下文章

tlm源码分析——sqr_if_base类型

tlm源码分析——uvm**port/export/imp class的实现

uvm设计分析——tlm

v73.02 鸿蒙内核源码分析(参考手册) | 阅读内核源码必备工具 | 百篇博客分析OpenHarmony源码

Mesos源码分析

Mybatis源码分析