|
- class axi_base_test extends uvm_test;
- `uvm_component_utils(axi_base_test)
-
- // Components
- axi_env env;
- axi_write_seq#(.D_WIDTH(D_WIDTH), .A_WIDTH(A_WIDTH)) wr_seq;
- axi_read_seq#(.D_WIDTH(D_WIDTH), .A_WIDTH(A_WIDTH)) rd_seq;
-
- // variables
- env_config env_cfg;
- test_config test_cfg;
-
- function new(string name, uvm_component parent);
- super.new(name, parent);
- test_cfg = new("test_cfg");
- test_cfg.no_write_cases = 1;
- test_cfg.no_read_cases = 1;
- endfunction //new()
-
- // Function: build_phase
- extern function void build_phase(uvm_phase phase);
-
- // Function: end_of_elaboration_phase
- extern function void end_of_elaboration_phase(uvm_phase phase);
-
- // Function: run_phase
- extern task run_phase(uvm_phase phase);
-
- endclass //axi_base_test extends uvm_test
-
- function void axi_base_test::build_phase(uvm_phase phase);
- test_cfg.burst_type = 1;
- uvm_config_db#(test_config)::set(null, "uvm_test_top.seq", "config", test_cfg);
-
- wr_seq = new("wr_seq");
- rd_seq = new("rd_seq");
- env = axi_env::type_id::create("env", this);
- endfunction: build_phase
-
- function void axi_base_test::end_of_elaboration_phase(uvm_phase phase);
- super.end_of_elaboration_phase(phase);
- uvm_top.print_topology();
- endfunction: end_of_elaboration_phase
-
- task axi_base_test::run_phase(uvm_phase phase);
- phase.raise_objection(this);
- fork
- wr_seq.start(env.master.w_seqr);
- #200
- rd_seq.start(env.master.r_seqr);
- // end
- join
- phase.drop_objection(this);
- endtask: run_phase
-
-
- // ****************************************************************************************
- // Directed Test Cases
- // ****************************************************************************************
- class axi_write_test extends axi_base_test;
- `uvm_component_utils(axi_write_test)
-
- function new(string name, uvm_component parent);
- super.new(name, parent);
- endfunction //new()
-
- function void build_phase(uvm_phase phase);
- super.build_phase(phase);
- endfunction: build_phase
-
- function void end_of_elaboration_phase(uvm_phase phase);
- super.end_of_elaboration_phase(phase);
- endfunction: end_of_elaboration_phase
-
- task run_phase(uvm_phase phase);
- phase.raise_objection(this);
- wr_seq.start(env.master.w_seqr);
- phase.drop_objection(this);
- endtask: run_phase
- endclass //write_test extends axi_base_test
-
- class axi_read_test extends axi_base_test;
- `uvm_component_utils(axi_read_test)
-
- function new(string name, uvm_component parent);
- super.new(name, parent);
- endfunction //new()
-
- function void build_phase(uvm_phase phase);
- super.build_phase(phase);
- endfunction: build_phase
-
- function void end_of_elaboration_phase(uvm_phase phase);
- super.end_of_elaboration_phase(phase);
- endfunction: end_of_elaboration_phase
-
- task run_phase(uvm_phase phase);
- phase.raise_objection(this);
- wr_seq.start(env.master.w_seqr);
- // rd_seq.start(env.master.r_seqr);
- phase.drop_objection(this);
- endtask: run_phase
- endclass //write_test extends axi_base_test
-
- class axi_fixed_test extends axi_base_test;
- `uvm_component_utils(axi_fixed_test)
-
- function new(string name, uvm_component parent);
- super.new(name, parent);
- endfunction //new()
-
- function void build_phase(uvm_phase phase);
- test_cfg.burst_type = 0;
- uvm_config_db#(test_config)::set(null, "uvm_test_top.seq", "config", test_cfg);
-
- wr_seq = new("wr_seq");
- rd_seq = new("rd_seq");
- env = axi_env::type_id::create("env", this);
- endfunction: build_phase
-
- task run_phase(uvm_phase phase);
- super.run_phase(phase);
- endtask: run_phase
- endclass //axi_fixed_test extends axi_base_test
-
- class axi_incr_test extends axi_base_test;
- `uvm_component_utils(axi_incr_test)
-
- function new(string name, uvm_component parent);
- super.new(name, parent);
- endfunction //new()
-
- function void build_phase(uvm_phase phase);
- test_cfg.burst_type = 2;
- uvm_config_db#(test_config)::set(null, "uvm_test_top.seq", "config", test_cfg);
-
- wr_seq = new("wr_seq");
- rd_seq = new("rd_seq");
- env = axi_env::type_id::create("env", this);
- endfunction: build_phase
-
- task run_phase(uvm_phase phase);
- super.run_phase(phase);
- endtask: run_phase
- endclass //axi_fixed_test extends axi_base_test
-
- class axi_wrap_test extends axi_base_test;
- `uvm_component_utils(axi_wrap_test)
-
- function new(string name, uvm_component parent);
- super.new(name, parent);
- endfunction //new()
-
- function void build_phase(uvm_phase phase);
- test_cfg.burst_type = 2;
- uvm_config_db#(test_config)::set(null, "uvm_test_top.seq", "config", test_cfg);
-
- wr_seq = new("wr_seq");
- rd_seq = new("rd_seq");
- env = axi_env::type_id::create("env", this);
- endfunction: build_phase
-
- task run_phase(uvm_phase phase);
- super.run_phase(phase);
- endtask: run_phase
- endclass //axi_fixed_test extends axi_base_test
|