码迷,mamicode.com
首页 > 其他好文 > 详细

tlm源码分析——tlm_fifo

时间:2017-10-19 17:40:36      阅读:506      评论:0      收藏:0      [点我收藏+]

标签:方法   一个   技术分享   es2017   function   images   width   行数据   idt   

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

标签:方法   一个   技术分享   es2017   function   images   width   行数据   idt   

原文地址:http://www.cnblogs.com/-9-8/p/7611850.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!