一、seq_item_port和seq_item_export seq_item_port和seq_item_export在agent的connect_phase中完成了连接。 my_drv.seq_item_port.connect(my_seqr.seq_item_export); 我们从seq_item_port入手。 seq_item_port是driver的成员变量。在uvm_driver.svh中的声明如下: uvm_seq_item_pull_port#(REQ, RSP) seq...
seq_item_port是uvm_driver中的成员变量。 seq_item_export是uvm_sequencer中的成员变量。 my_sequence向my_sequencer发送my_transaction: 前面提到, my_sequence中的`uvm_do不能做到自动连接my_sequencer并将my_trans直接传送给my_sequencer,所以需要额外启动连接,以在当前顶层my_env中手工启动为例(一般都是在顶层启...
driver的seq_item_port是uvm_seq_item_pull_port#(REQ,RSP)类型,是一种双向端口。 sequencer的seq_item_export是uvm_seq_item_pull_imp #(REQ, RSP, this_type)类型。 seq_item_port其包含了以下的内建方法 task get_next_item(output REQ) task try_next_item(output REQ) function void item_done(inpu...
uvm_seq_item_pull_imp #(REQ, RSP, this_type) seq_item_export(名字叫export,实际上是imp类型) uvm_analysis_export #(RSP) rsp_export(代表中间节点,因为sequencer里面有个rsp tlm fifo,export连接到内部的imp端口。没有req的端口,不会对request缓存) //连接 driver::seq_item_port.connect(sequencer::se...
1)在uvm_driver 中有变量seq_item_port: 2)在uvm_sequencer 中有变量seq_item_export: 在这两者中建立通道。 5.在my_agent中的connect 把两者连接到一起: function void my_agent::connect_phase(uvm_phase phase); super.connect_phase(phase);
seq_item_export是uvm_sequencer中的成员变量。 my_sequence向my_sequencer发送my_transaction: 前面提到, my_sequence中的`uvm_do不能做到自动连接my_sequencer并将my_trans直接传送给my_sequencer,所以需要额外启动连接,以在当前顶层my_env中手工启动为例(一般都是在顶层启动): ...
uvm_seq_item_pull_port #(REQ,RSP) seq_item_port; ... endclassclassuvm_sequencer#(typeREQ=uvm_sequence_item,typeRSP=REQ)extendsuvm_sequencer_para_base#(REQ,RSP); uvm_seq_item_pull_imp #(REQ,RSP) seq_item_export; ... endclass ...
如果不使用uvm_do宏,也可以直接使用start_item与finish_item的方式产生transaction。 sequencer负责协调sequence和driver的请求 sequencer和driver之间 将两者连接:drv.seq_item_port.connect(sqr.seq_item_export); 在driver中通过get_next_item任务来得到一个新的req,并且驱动它,驱动完成后调用item_done通知sequencer(完...
而uvm_seq_item_pull_port是一个uvm专用的tlm口同样,在uvm_sequencer中有 uvm_seq_item_pull_imp 19、#(REQ, RSP, this_type)seq_item_export;而在上层的uvm_agent中有 virtual function voidconnect_phase(uvm_phase phase); drv.seq_item_port.connect(sqr.seq_item_export); endfunction这里drv跟sqr...
virtualfunctionvoidresponse_handler(uvm_sequence_item response);return; endfunction response_handler对uvm_driver没有任何影响,也就是不可见,uvm_driver仍然用之前的put_response机制就行。 2. response_handler背后机制 sequence里的response_handler(xxx)函数在uvm_driver调用seq_item_export.put_response(rsp)的时...