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版权协议,转载请附上原文出处链接和本声明。