Hi,
class user_env extends uvm_env;
axi_slave_env m_slave_env;
axi_slave_env_cfg m_slave_env_cfg;
..
..
// Inside Build phase of user_env //
m_slave_env = axi_slave_env::type_id::create("slave_env");
m_slave_env_cfg = axi_slave_env_cfg::type_id::create("slave_env_cfg");
if (!uvm_config_db#(axi_slave_env_cfg)::get(this, "*", "uvc_cfg", m_slave_env_cfg))
$display("ERROR");
endclass
class axi_slave_env extends uvm_env;
axi_slave slave_uvc;
axi_slave_env_cfg m_slave_cfg;
// Inside Build phase of axi_slave_env //
axi_slave_env_cfg.is_MASTER == MASTER;
..
..
slave_uvc = axi_slave::type_id::create("slave_uvc");
uvm_config_db#(axi_slave_env_cfg)::set(this, "*.slave_uvc", "uvc_cfg", slave_uvc_cfg);
endclass
I have few questions is it like buid_phase of user_env is triggered first → it completes and then axi_slave_env is build is triggered ?
per my understanding uvm_config we can get/set from anywhere in UVM hier may i know what is the issue ?
uvm_config_db#(axi_slave_env_cfg)::set(this, "*.slave_uvc", "uvc_cfg", slave_uvc_cfg);
—> is this correct way of restricting uvm_config db acess till m_user_env.m_slave_env.slave_uvc ?