Quantcast
Channel: UVM Forums RSS Feed
Viewing all articles
Browse latest Browse all 756

problem about configuring sub-sequencers of virtual sequencer using uvm_config_db

$
0
0

Hi, all,

I met one problem when i configure sub-sequencers of virtual sequencer using uvm_config_db. Here are the codes and VCS reports:

-------codes-------

class my_subenv extends uvm_env;

   ...

   function void build_phase(uvm_phase phase);

      ...

      v_sqr = vsequencer::type_id::create($sformatf("v_sqr%0d", subenv_ID), this);
      // configuration, set default_sequence as the virtual sequencer
      uvm_config_db#(uvm_object_wrapper)::set(this, "v_sqr.run_phase", "default_sequence", vsequence::type_id::get());
      ...
   endfunction : build_phase
 
   function void connect_phase(uvm_phase phase);
      ...
      uvm_config_db#(uvm_sequencer)::set(this, "v_sqr", "cfg_sqr", this.cfg_agt.cfg_sqr);
      uvm_config_db#(uvm_sequencer)::set(this, "v_sqr", "str_sqr", this.str_agt.str_sqr);
      ...
   endfunction : connect_phase
   ...
endclass : my_subenv
 
-------VCS reports--------
Error-[ICTTFC] Incompatible complex type usage
../sv/00_top/my_subenv.sv, 101
  Incompatible complex type usage in task or function call.
  The following expression is incompatible with the formal parameter of the  
  function. The type of the actual is 'class my_pkg::my_config_sequencer',
  while the type of the formal is 'class uvm_pkg::uvm_sequencer#(class 
  uvm_pkg::uvm_sequence_item,class uvm_pkg::uvm_sequence_item)'. Expression: 
  this.cfg_agt.cfg_sqr
  Source info: 
  vcs_paramclassrepository::__vcs_dummy_uvm_pkg_uvm_config_db_3133241903_.set(this,  "v_sqr", "cfg_sqr", this.cfg_agt.cfg_sqr)
Error-[ICTTFC] Incompatible complex type usage
../sv/00_top/my_subenv.sv, 102
  Incompatible complex type usage in task or function call.
  The following expression is incompatible with the formal parameter of the
  function. The type of the actual is 'class my_pkg::my_str_sequencer',
  while the type of the formal is 'class uvm_pkg::uvm_sequencer#(class
  uvm_pkg::uvm_sequence_item,class uvm_pkg::uvm_sequence_item)'. Expression:
  this.str_agt.str_sqr
  Source info:
  vcs_paramclassrepository::__vcs_dummy_uvm_pkg_uvm_config_db_3133241903_.set(this,
  "v_sqr", "str_sqr", this.str_agt.str_sqr)
 
By the way, my_config_sequencer and my_str_sequencer are classes derived from uvm_sequencer, so I think the complex type should be compatible. And the codes are wriiten according chapter 4.8 of the uvm_users_guide_1.1.pdf document. Should there be some phrases like uvm_config_db#(uvm_sequencer)::get() in my_subenv or other places?
 
Thanks
 
regards
mrforever

Viewing all articles
Browse latest Browse all 756

Trending Articles