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源码分析——uvm**port/export/imp class的实现