Analysis Components & Techniques(从AnalysisPort开始)

上一篇 / 下一篇  2018-12-25 10:37:40

   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。

 

     


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2019-01-15  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 19486
  • 日志数: 75
  • 建立时间: 2018-09-03
  • 更新时间: 2018-12-29

RSS订阅

Open Toolbar
博评网