In reply to rgarcia07:
You don’t want to use the config_db() in this case. The best technique is to add a function in your base test which assigns ral_model to the sequence my_ral handle.
Again, you don’t want to instantiate every sequence in the base_test class. You should only use the required sequences in each derived test.
class my_base_seq extends uvm_sequence;
my_reg_model my_ral;
...
my_ral = my_reg_mode::type_id_create("my_ral", this);
...
endclass
class my_seq0_seq; extends my_base_seq;
...
virtual task body();
...
my_ral.DATA.read(status, rdata);
...
endclass
class my_seq1_seq extends my_base_seq;
...
virtual task body();
...
my_ral.DATA.read(status, rdata);
...
endclass
class my_seq2_seq extends my_base_seq;
...
virtual task body();
...
my_ral.DATA.read(status, rdata);
...
endclass
class my_base_test extends uvm_test;
...
// Only have environment & config objects
// Don't create any sequences in the base test - they are test specific
function void build_phase(uvm_phase phase);
...
endfunction
function assign_ral(my_base_seq seq);
seq.my_ral = ral_env.model;
endfunction
function void connect_phase(uvm_phase phase);
...
...
endfunction
endclass
class my_test1 extends my_base_test;
task run_phase(uvm_phase phase);
my_seq1_seq seq1 = my_seq1_seq::type_id::create("seq1");
my_seq2_seq seq2 = my_seq2_seq::type_id::create("seq2");
assign_ral(seq1);
assign_ral(seq2);
seq1.start(env.agent.seqr);
seq2.start(env.agent.seqr);
endtask
endclass