Test Sınıfları
Gün 7: Bitirme Projesi - Bölüm 2 | Farklı test senaryoları: Random, Corner, Stress
Kaynak Kod
// =============================================================================
// GUN 7 - Konu 4: Test Siniflari - Farkli Test Senaryolari
// =============================================================================
class ALU_Base_Test;
ALU_Environment env;
virtual alu_if.driver drv_vif;
virtual alu_if.monitor mon_vif;
string test_name;
function new(virtual alu_if.driver drv_vif, virtual alu_if.monitor mon_vif,
string name = "Base_Test");
this.drv_vif = drv_vif;
this.mon_vif = mon_vif;
this.test_name = name;
endfunction
virtual task run();
$display("\n##########################################################");
$display(" TEST: %s", test_name);
$display("##########################################################\n");
// Environment olustur
env = new(drv_vif, mon_vif, get_num_transactions());
env.build();
env.reset();
env.run();
env.report();
endtask
virtual function int get_num_transactions();
return 100;
endfunction
endclass
// Rastgele test
class ALU_Random_Test extends ALU_Base_Test;
function new(virtual alu_if.driver drv_vif, virtual alu_if.monitor mon_vif);
super.new(drv_vif, mon_vif, "Random_Test");
endfunction
virtual function int get_num_transactions();
return 200;
endfunction
endclass
// Kose durumu testi
class ALU_Corner_Test extends ALU_Base_Test;
function new(virtual alu_if.driver drv_vif, virtual alu_if.monitor mon_vif);
super.new(drv_vif, mon_vif, "Corner_Case_Test");
endfunction
virtual task run();
ALU_Corner_Generator alu_c_gen;
env = new(drv_vif, mon_vif, get_num_transactions());
env.build();
alu_c_gen = new(env.gen2drv_mbx, get_num_transactions());
env.gen = alu_c_gen;
// 3. Run simulation
env.reset();
env.run();
env.report();
endtask
endclass