class axi_env extends uvm_env; `uvm_component_utils(axi_env) // Components axi_master master; axi_slave slave; axi_scoreboard scb; env_config env_cfg; // function new(string name, uvm_component parent); super.new(name, parent); endfunction //new() // Function: build_phase extern function void build_phase(uvm_phase phase); // Function: connect_phase extern function void connect_phase(uvm_phase phase); endclass //axi_env extends uvm_env function void axi_env::build_phase(uvm_phase phase); /* note: Do not call super.build_phase() from any class that is extended from an UVM base class! */ /* For more information see UVM Cookbook v1800.2 p.503 */ //super.build_phase(phase); master = axi_master::type_id::create("master", this); slave = axi_slave::type_id::create("slave", this); scb = axi_scoreboard::type_id::create("scb", this); endfunction: build_phase function void axi_env::connect_phase(uvm_phase phase); super.connect_phase(phase); master.ap.connect(scb.m_ap_imp); slave.ap.connect(scb.s_ap_imp); endfunction: connect_phase