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

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

时间:2017-10-19 17:38:02      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:function   定义   通信   ima   blog   images   接口   2-2   类型   

uvm在各种port,export,impclass的声明,都是通过宏来定义的;

对于port的定义;有四种,put,get,peek,get_peek,

        每一种都分为blocking,non_blocking,和都包含的部分;

    技术分享

在这种的port中,发出与接收的trans都是相同的,也是就不需要resp,是单向的。

uvm也提供了双向的master,slave的需要resp的class;跟transport不同的是,它分别定义了put和get的function,而不是

    通过transport的方法;

    技术分享

    transport的三种function,block,non_block,transport_port;

    技术分享  

export类似;

imp中最重要的一部分是进行m_imp的重载,实现通信一方调用imp的parent的function;

    通信一方,拿到imp的指针,是在resolve_bindings中实现的。

    imp的class声明中,也会包括两个参数,第一个表示trans的类型,第二个表示声明该tmp的class;

    技术分享

    imp_common中主要实现new函数的声明,和一个imp parent变量的赋值;imp的parent设为this;

    技术分享

    BLOCKING_PUT_IMP函数,调用m_imp中的函数,所以在imp的parent那个class中,必须实现相应的方法;

    技术分享

  之上的imp,也是会实现put/get/peek/get_peek的imp,对于存在resp的imp,其中会定义两个m_imp,要求在imp所在的

    parent上的实现多个方法;两个m_imp指向的其实是同一个;

    技术分享

    技术分享     

 

以上这些函数在new的时候,都会设置min_szie和max_size都设置为1,所以,这些定义了之后有且只能连接一个;

 

analysis_port 在new时,一般min_size赋值为0,max_size不规定上限,

    技术分享     

      对于port和export,重载的write函数,会遍历其中的m_if接口,依次调用其中的write函数;

    技术分享

      imp函数,则只是调用m_imp中的write函数,m_imp也是imp parent的一个类型;

    技术分享

 

 

以上这些函数在声明时,都会定义uvm_port_base从uvm_tlm_if_base中进行扩展;

 

          

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

标签:function   定义   通信   ima   blog   images   接口   2-2   类型   

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

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