微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 求助:如何在UVM的class中传递register model?

求助:如何在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:

  1. class vsequencer extends uvm_sequencer;
  2. `uvm_component_utils(vsequencer)
  3. apb_master_sequencerapb_seq;
  4. my_reg_blockregmodel;
  5. function new(string name,uvm_component parent);
  6. super.new(name,parent);
  7. endfunction
  8. endclass:vsequencer

复制代码

2.virtual sequence:

  1. classvsequenceextends uvm_sequence;
  2. `uvm_object_utils(vsequence)
  3. `uvm_declare_p_sequencer(vsequence)
  4. my_reg_seqreg_seq;
  5. functionnew(string name="vsequence");
  6. super.new(name);
  7. endfunction : new
  8. virtualtaskbody();
  9. reg_seq=my_reg_seq::type_id::create("reg_seq");
  10. reg_seq.regmodel=p_sequencer.regmodel;
  11. reg_seq.start(null);
  12. endtask : body
  13. endclass : vsequence

复制代码

3.test:

  1. classmy_reg_testextendsuvm_test;
  2. `uvm_component_utils(my_reg_test)
  3. reg_tbreg_tb0;
  4. function new(string name,uvm_component parent);
  5. super.new(name,parent);
  6. endfunction : new
  7. virtual function build_phase(uvm_phase phase);
  8. super.build_phase(phase);
  9. reg_tb0=reg_tb::type_id::create("reg_tb0",this);
  10. vsqr=vsequencer::type_id::create("vsqr",this):
  11. uvm_config_db#(uvm_object_wrapper)::set(this,"vsqr.run_phase","default_sequence",vsequence::type_id::get());
  12. endfunction : build_phase
  13. virtual function connect_phase(uvm_phase phase);
  14. vsqr.regmodel=reg_tb0.regmodel;
  15. endfunction : connect_phase
  16. endclass : my_reg_test

复制代码

但是,这样写出的代码,用irun跑的时候,出现错误,如下:
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)

确实是。谢谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top