This is a basic question on UVM.
I am looking into correct usage of Virtual sequencer and i see that in virtual sequencer, sub-sequencer's handle are not created in build phase.
It is specified by environment using configuration database.
Why it is not build as done in commented out build_phase?
class vsequencer extends uvm_sequencer;
tb_ahb_sequencer ahb_sqr; //subsequencer handle
tb_eth_sequencer eth_sqr; //subsequencer handle
function new(string name, uvm_component parent);
//function void build_phase(uvm_phase phase); //Why not build like this?
// ahb_sqr = tb_ahb_sequencer::type_id::create("ahb_sqr");
// eth_sqr = tb_eth_sequencer::type_id::create("eth_sqr");
function void end_of_elaboration_phase(uvm_phase phase);
if (!uvm_config_db#(tb_ahb_sequencer)::get(this, "", "ahb_sqr", ahb_sqr))
`uvm_fatal("VSQR/CFG/NOAHB", "No ahb_sqr specified for this instance");
if (!uvm_config_db#(tb_eth_sequencer)::get(this, "", "eth_sqr", eth_sqr))
`uvm_fatal("VSQR/CFG/NOETH", "No eth_sqr specified for this instance");