【UVM】【UVM Class Reference Manual 1.2】uvm analysis port

Analysis port

对于多个组件对同一个数据进行运算处理,采用analysis_port.

从一个initiator到多个target端的连接方式。

在initiator端调用write() 函数时,实际上是通过循环的方式将所有连接的target端内置的write()函数进行了调用。函数具有立即返回的特点,无论连接了多少个target端,initiator端调用write()总是可以立即返回。 与单一端口函数调用不同,即使没有target与之相连,调用write()函数时不会发生错误?

analysis port 包含: uvm_analysis_port ( broadcasts transaction toimp), uvm_analysis_imp ( receives transaction by port ), uvm_analysis_export (export to imp).


uvm_analysis_port   (initiator)

    实现对所有订阅者(uvm_analysis_imp)广播一个值 :T

本质为参数化的类:

class uvm_analysis_port # (
type T = int
) extends uvm_port_base # (uvm_tlm_if_base #(T,T))

其包含一个function: write 

// function write: Send specified value to all connected interface

 function void write ( 
     input T t
 )    

uvm_analysis_imp   (target)

    接收uvm_analysis_port 广播的transaction:T。 作为analysis port 的终点。

    将调用父组件中的write(T)方法。write(T)方法的实现不能修改传递给它的值。  

本质为参数化的类:

class uvm_analysis_imp #(
type T = int,
type IMP = int
) extends uvm_port_base #(uvm_tlm_if_base #(T,T))

uvm_analysis_export  

    将较低级别的uvm_analysis_imp导出到其父目录。相当于中转站。

  

本质为参数化的类:

class uvm_analysis_export #(
type T = int
) extends uvm_port_base #(uvm_tlm_if_base #(T,T))

包含一个function: new

// function new: instantiate the export 

function new (
string name,
uvm_component parent = null
)

 


版权声明:本文为m0_38084579原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。