function new (string name, uvm_component parent); super.new(name, parent); seq_item_port = new("seq_item_port", this); rsp_port = new("rsp_port", this); seq_item_prod_if = seq_item_port; endfunction // new const static string type_name = "uvm_driver #(REQ,RSP)"; virtual ...
seq_item_port::get_next_item()中实现的,我们这里讨论的前提是sequence的请求没有设置被的仲裁算法,以及没有lock,grab操作,同时只有一个sequence挂载到sequencr上...finish_item在driver中负责接收item的方法是seq_item_port::get_next_item()seq_item_port::item_done()两个方法。下面看一下是如何发生 ...
driver这里充当的是一个initiator和consumer的作用,发起get_next_item()的通信方法并获取数据,因而我们知道get_next_item()一定是在充当target的sequencer中实现的,并且数据也是在sequencer中产生。 driver中seq_item_port是一个port类型,而sequencer中的seq_item_export是一个imp类型 自定义的driver和sequencer中构造函数...
1.A是 PORT,B与 C 是EXPORT,B还有IMP: 2.A.B 和之前相同 C: 3:env EXPORT 与EXPORT 的连接也可以无限层。