// Testbench environment for UVM-based verification class tb_env extends uvm_env; axi_agent axi_m; axi_agent axi_s; `uvm_component_utils(tb_env) // ------------------------------------------------------------ function new(string name, uvm_component parent); super.new(name, parent); endfunction // ------------------------------------------------------------ virtual function void build_phase(uvm_phase phase); axi_m = axi_agent::type_id::create("axi_m", this); axi_s = axi_agent::type_id::create("axi_s", this); `uvm_info("tb_env", $sformatf("Building testbench environment: %s", get_full_name()), UVM_LOW) // Set agent types in AXI agents axi_m.set_agent_type(MANAGER); axi_s.set_agent_type(SUBORDINATE); endfunction // ------------------------------------------------------------ virtual function void connect_phase(uvm_phase phase); `uvm_info("tb_env", $sformatf("Connecting testbench environment: %s", get_full_name()), UVM_LOW) endfunction // ------------------------------------------------------------ virtual function void report_phase(uvm_phase phase); `uvm_info("tb_env", $sformatf("Reporting for testbench environment: %s", get_full_name()), UVM_LOW) // Add any specific report phase tasks here endfunction // ------------------------------------------------------------ function uvm_sequencer_base get_axi_m_sequencer(); return axi_m.sequencer; endfunction endclass : tb_env