既然需要发送,自然就要用到TLM端口,因此需要创建对应的变量;需要统计获得的transaction数目,因此需要创建一个int型变量;由于有i_agt和o_agt之分,因此需要一个变量来控制monitor中的监测行为,因为输入端和输出端部分所需要的数据并不完全相同。 点击查看代码 `ifndefAMP_MONITOR_SV `defineAMP_MONITOR_SV classamp_moni...
super.new(name);endfunction//Function: reg2bus///Converts a <uvm_reg_bus_op> struct to a <uvm_tlm_gp> item.virtualfunctionuvm_sequence_item reg2bus(const ref uvm_reg_bus_op rw); uvm_tlm_gp gp= uvm_tlm_gp::type_id::create("tlm_gp",, this.get_full_name());intnbytes = (r...
从上面的图中可以看到,在UVMC可以实现SV与SC之间的TLM1或者TLM2通信。考虑到基于UVMC的TLM1和TLM2连接方式类似,我们在下面的例码中只分析TLM2的连接。对于SV和SC,UVMC库提供类似的函数来完成相应的TLM port的注册: 上面的参数中,SV需要额外的transaction类型参数,默认情况下它的类型是uvm_tlm_gp;port_handle/p...
classgp_Xs_extextendsuvm_tlm_extension#(gp_Xs_ext);byteXmask[];functionnew(stringname="");super.new(name);endfunction`uvm_object_utils_begin(gp_Xs_ext)`uvm_field_int_array(Xmask,UVM_ALL_ON)`uvm_object_utils_endendclassgp_Xs_extXs=new();gp.set_extension(Xs); 提供了一些方法对扩展...