ee_king的个人空间 https://blog.eetop.cn/1494617 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Analysis Components & Techniques(从AnalysisPort开始)

已有 570 次阅读| 2018-12-25 10:37 |系统分类:芯片设计

   AnalysisPort

  Overview   

       测试平台的分析部分的一个独特方面是,通常有许多独立的计算和评估都在同一条数据通路上运行。相比将所有这些评估行为都集中在一个地方,最好将它们分成独立的并发组件。这导致用于连接分析部分共有的组件的拓扑模式:一对多拓扑,其中一个连接点向读取和分析数据的许多连接组件传输信息。
       此连接拓扑实现行为适用于称为“observer pattern”的OOP设计模式。在这种模式中,感兴趣的“observers”使用单一信息源注册自己。没有最小或最大观察者数量(例如观察者的数量可以为零)。信息源执行单个操作以将数据传输给所有注册的观察者。UVM Analysis的另一个要求是“不要干扰DUT”。这意味着传输行为必须是非阻塞操作。UVM提供三个对象以满足观察者模式的要求以及无干扰要求:analysis ports, analysis exports, and analysis fifos。

   Detail  

        Analysis ports, analysis exports, 和analysis fifos遵循标准的UVM事务级通信定义。analysis port需要利用write()method来与它进行连接。analysis export提供了write()函数的实现。与其他UVM TLM端口一样,analysis ports是参数化类,其中参数是要传递的事务类型。Ports提供了一个本地对象,代码可以通过该对象调用函数。Exports是组件上的连接点,这些组件提供通过Ports调用的函数的实现。Ports和exports通过调用connect()函数来进行连接。

       【此处需插一幅图】

       Analysis port提供了一个名为write()的void函数来执行传输行为。当代码在analysis port上调用write()函数时,port然后通过在所有连接的exports上调用write()来使用其内部列表进行传输。这会导致write()函数在包含已连接exports的所有组件上执行。如果没有exports连接到analysis port,则在调用write()函数时不执行任何操作,并且不会发生错误。
       Analysis ports通过提供write()操作(是function而不是task)来遵守无干扰要求。 因为它是一个function,它不能阻塞(没有时序)。

        【此处需插一幅图】

  Analysis Exports

       通过将export作为参数传递给port的connect()函数,可以将analysis expor注册为analysis port的观察者。与其他TLM  exports一样,analysis export有两种类型:分层export或“imp” export。分层exports和“imp” exports都可以连接到port。“imp” export放置在实际直接实现write()函数的组件上。

       【此处需插一幅图】

       分层export用于分层连接,其中实现write()函数的组件是包含export的组件的分层子类。分层export将对write()的调用转发给子组件。

         【此处需插一幅图】

  Analysis Fifos

       UVM提供了一个名为分析fifo的预构建组件,它具有“imp”式export和write()实现,可将数据写入fifo缓冲区。缓冲区可以无限增长,以防止阻塞来继而遵守无干扰要求。分析fifo扩展了tlm_fifo类,因此它还具有tlm fifo的所有exports以及操作,例如阻塞get函数等。

  Implementing the write() function

       【此处需插一幅图

        analysis组件需要实现Monitor的analysis port调用的write()函数。对于具有单个输入流的analysis组件,您可以扩展uvm_subscriber类。对于具有多个输入流的组件,您可以直接实现“write()”函数并提供“imp” exports,也可以通过提供分层exports来公开分层子级的write()实现。决定使用哪个取决于组件的功能和您喜欢的编码风格。
       在上图中,Coverage Collector扩展于uvm_subscriber类,该类具有分析“imp”导出。 然后,扩展类实现write()函数。
       记分板有两个输入事务流,因此使用嵌入式Analysis FIFO来缓冲传入的事务流。在这种情况下,write()method在fifos中实现,因此Scoreboard使用分层analysis exports在外部公开write()method。

 

     


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 0

    获赞
  • 6

    评论
  • 访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-18 08:58 , Processed in 0.021085 second(s), 18 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部