How to set_sequencer & adapter for the default maps present in the sub-blocks, which is instanced inside top level register blocks?

In reply to desperadorocks:

Hello Folks,

I tried the below configuration to set separate sequencer & adapter for each sub-block inside the top level register block, so that I can launch register write/read tests parallely across multiple-sub blocks.


for (int i = 0; i < `NO_OF_AGT; i++) begin  
  if(top_reg_block.get_parent() == null) begin
   case(i)
     0: top_reg_block.sub_reg_block0.default_map.set_sequencer(each_reg_agt[i].each_reg_sqr, each_r2b_adapter[i]);
     1: top_reg_block.sub_reg_block1.default_map.set_sequencer(each_reg_agt[i].each_reg_sqr, each_r2b_adapter[i]);
     2: top_reg_block.sub_reg_block2.default_map.set_sequencer(each_reg_agt[i].each_reg_sqr, each_r2b_adapter[i]);
     3: top_reg_block.sub_reg_block3.default_map.set_sequencer(each_reg_agt[i].each_reg_sqr, each_r2b_adapter[i]);
   endcase
  end 
  
  if(each_reg_cfg.auto_predict[i] == UVM_ACTIVE) begin
   case(i) 
     0: top_reg_block.sub_reg_block0.default_map.set_auto_predict(1);
     1: top_reg_block.sub_reg_block1.default_map.set_auto_predict(1);
     2: top_reg_block.sub_reg_block2.default_map.set_auto_predict(1);
     3: top_reg_block.sub_reg_block3.default_map.set_auto_predict(1);
   endcase 
  end 
end

a. When I tried explicit register write/read to the explicit registers inside the blocks I received the below error:

""neither the item’s sequencer nor dedicated sequencer has been supplied to start item in reg_acc_seq sequence “”

b. And then when I launched the bit-bash sequence on a particular sequencer,

The transaction item that I received at the driver end is null-object pointer.

Can’t we not set the sequencer and adapter to the sub-blocks inside the top level block ? Or after setting the sub-blocks, do we need to set any top level sequencer & adapter for the top level register mode ? Kindly help me out on this issue.

Regards,
Desperado