OVM使用中层次化连接的问题,求教
时间:10-02
整理:3721RD
点击:
sequencer-1与sequencer-2要进行层次化连接,将sequencer-1的输出对象通过seq_item_export传递入sequencer-2中,并最终传递到sequence-2中,在sequence-2的pre_do函数中使用,实现层次化sequence
先在sequencer-2中,定义一个“port”
ovm_seq_item_pull_port #(sequence_item, sequence_item) vcat_req_port;
function new ( …);
…;
vcat_req_port = new("vcat_req_port",this);
endfunction : new
再在sequence-2 中,也定义一个“port”,用来指向sequencer-2中的“port”
ovm_seq_item_pull_port #( sequence_item, sequence_item) vcat_req_port;
sequence_item vcat_req;
sequence_item vcat_rsp;
…..
Virtual task pre_do(…)
…..
vcat_req_port.get(vcat_req);
在ENV中利用connect函数将sequencer-1的seq_item_export与在sequencer-2中定义的“port”连接起来
但是,利用questasim在vsim阶段总报如下的错误,含义应该是解析sequence-2中的“port”的时候,认为是一个空对象,如下:
** Fatal: (vsim-131) ../sv/sdh_tx_sequence.sv(92): Null instance encountered when dereferencing '/eos_tb_top/sdh_tx_sequence::pre_do/this*.vcat_req_port'
这是何解呢,请各位达人赐教
先在sequencer-2中,定义一个“port”
ovm_seq_item_pull_port #(sequence_item, sequence_item) vcat_req_port;
function new ( …);
…;
vcat_req_port = new("vcat_req_port",this);
endfunction : new
再在sequence-2 中,也定义一个“port”,用来指向sequencer-2中的“port”
ovm_seq_item_pull_port #( sequence_item, sequence_item) vcat_req_port;
sequence_item vcat_req;
sequence_item vcat_rsp;
…..
Virtual task pre_do(…)
…..
vcat_req_port.get(vcat_req);
在ENV中利用connect函数将sequencer-1的seq_item_export与在sequencer-2中定义的“port”连接起来
但是,利用questasim在vsim阶段总报如下的错误,含义应该是解析sequence-2中的“port”的时候,认为是一个空对象,如下:
** Fatal: (vsim-131) ../sv/sdh_tx_sequence.sv(92): Null instance encountered when dereferencing '/eos_tb_top/sdh_tx_sequence::pre_do/this*.vcat_req_port'
这是何解呢,请各位达人赐教
望各位大侠不吝赐教