In reply to shrawan_vaidya:
Calling type_id::create() constructs the class when called. It doesn’t care when it gets called. However, the uvm_component base class constructor has a check that produces an error if a component gets constructed after the build_phase ends. The build_phase() of any children constructed by a parent does not get called until after the build_phase of the parent has returned.
The main thing you have to make sure of is that you call uvm_config_db::set() before anybody tries to do a uvm_config_db::get(). If the set()s and get()s are called in the build_phase of the respective components, that should be taken care of for you. But we need to see how er_j204_env makes the call to get().