求助:如何在UVM的class中传递register model?
时间:10-02
整理:3721RD
点击:
各位:
最近在跟UVM的register model死磕,还请各位帮帮忙。
我想把register sequence放到virtual sequence中,再把这个virtual sequence设置为virtual sequencer的default_sequence,这样就可以将register_sequence跟其他sequence结合起来使用了。我具体操作如下:
1.virtual sequencer:
- class vsequencer extends uvm_sequencer;
- `uvm_component_utils(vsequencer)
- apb_master_sequencerapb_seq;
- my_reg_blockregmodel;
- function new(string name,uvm_component parent);
- super.new(name,parent);
- endfunction
- endclass:vsequencer
- classvsequenceextends uvm_sequence;
- `uvm_object_utils(vsequence)
- `uvm_declare_p_sequencer(vsequence)
- my_reg_seqreg_seq;
- functionnew(string name="vsequence");
- super.new(name);
- endfunction : new
- virtualtaskbody();
- reg_seq=my_reg_seq::type_id::create("reg_seq");
- reg_seq.regmodel=p_sequencer.regmodel;
- reg_seq.start(null);
- endtask : body
- endclass : vsequence
- classmy_reg_testextendsuvm_test;
- `uvm_component_utils(my_reg_test)
- reg_tbreg_tb0;
- function new(string name,uvm_component parent);
- super.new(name,parent);
- endfunction : new
- virtual function build_phase(uvm_phase phase);
- super.build_phase(phase);
- reg_tb0=reg_tb::type_id::create("reg_tb0",this);
- vsqr=vsequencer::type_id::create("vsqr",this):
- uvm_config_db#(uvm_object_wrapper)::set(this,"vsqr.run_phase","default_sequence",vsequence::type_id::get());
- endfunction : build_phase
- virtual function connect_phase(uvm_phase phase);
- vsqr.regmodel=reg_tb0.regmodel;
- endfunction : connect_phase
- endclass : my_reg_test
reg_seq.regmodel=p_sequencer.regmodel;
|
nc_vlog:*E,NOTCLM(./my_reg/reg_seq_lib.sv,49|44):regmodel is not a class item.
因此,我觉得,可能是我不该这样传递regmode,但是我又不知道该怎么修改,请问,有知道的么?
`uvm_declare_p_sequencer(vsequence)这句话是不是错了,该改为
`uvm_declare_p_sequencer(vsequencer)
确实是。谢谢!
