Initial commit
* Bare skeleton implementation of everything * Testbench builds with Verilator * Test runs
This commit is contained in:
40
tb/tb_env.sv
Normal file
40
tb/tb_env.sv
Normal file
@@ -0,0 +1,40 @@
|
||||
// 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
|
Reference in New Issue
Block a user