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 function int get_num_transactions();
    return 50;  // Generator kendi kose durumlarini ekleyecek
  endfunction
endclass

// Yogun toplama testi
class ALU_Add_Stress_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, "Add_Stress_Test");
  endfunction

  virtual function int get_num_transactions();
    return 150;
  endfunction
endclass