uvm_analysis端口之间的差异

hay*_*ykp 7 uvm

您能否帮助了解以下功能和明显区别:

  1. uvm_analysis_export
  2. uvm_analysis_port
  3. uvm_analysis_imp

我在互联网上搜索过,有一些解释,例如:

但我仍然觉得需要更多解释。有人可以帮忙吗。

小智 6

uvm_analysis_port是发布者,他们广播交易

uvm_analysis_imp是订阅者,它们接收事务并在定义它们的类中调用名为“write”的函数。

uvm_analysis_export可能更令人困惑,它们用于在层次结构的更高级别公开“imp”端口。例如,如果您有一个代理,其中包含一个带有 analysis_imp 的组件,并且您想让该“imp”在代理的界面级别可用。在这种情况下,您在代理类中声明并实例化 analysis_export,然后在 connect_phase 中将代理的 analysis_export 连接到内部组件的 analysis_imp。

值得注意的是,导出是针对订阅方的,但在发布方,可以以相同的方式使用常规的 uvm_analysis_port。因此代理可以实例化 analysis_ports 并将它们连接到内部组件的 analysis_port。

这很好,因为它允许您在连接组件时避免深入层次结构(这使维护更容易):

坏的:

bus_agent.internal_monitor.packet_port.connect(checker.ref_model.packet_imp) 
Run Code Online (Sandbox Code Playgroud)

好的:

bus_agent.packet_port.connect(checker.packet_export)
Run Code Online (Sandbox Code Playgroud)

熟悉宏也不错uvm_analysis_imp_decl()。它允许您在一个组件中使用多个 analysis_imp。