Menu
Coddy logo textTech

Testbench Nedir

Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 73 / 90.

testbench, başka bir modülü test etmek için kullanılan özel bir Verilog modülüdür. Tasarımınıza girdiler sağlar ve çıktıların doğru olup olmadığını kontrol eder.

Neden Bir Testbench'e İhtiyacımız Var?

Bir modül oluşturduğunuzda, doğru şekilde çalıştığından emin olmanız gerekir. Bir testbench şunları yapmanızı sağlar:

  • Modülünüze farklı giriş değerleri uygulama
  • Çıkışları gözlemleme
  • Çıktıların beklediğinizle eşleşip eşleşmediğini kontrol edin
  • Bunu manuel test yapmadan otomatik olarak gerçekleştirin

Testbench ve Tasarım Modülü

 Tasarım ModülüTestbench
AmaçDonanımı uygularTasarım modülünü test eder
Portları var mı?Evet (girdiler ve çıktılar)Hayır (kendi kendine yeterli)
Sentezlenebilir mi?EvetHayır (yalnızca simülasyon)

Basit Testbench Örneği

module testbench;              // Port yok!

  // Girdiler ve çıktılar, test ettiğimiz modülden (DUT) gelir.
  reg a, b;                    // girdiler için reg
  wire c;                      // çıktı için wire
  

  // Bu bir modül örneklendirmesidir — and_gate modülünün bir kopyasını oluşturur ve ona dut adını verir
  and_gate dut (               // DUT'u örneklendir
    .a(a),
    .b(b),
    .c(c)
  );

  // Bu, test edilen modülün girdilerine test değerleri uygulayan bir initial bloğudur.
  initial begin                // Test değerlerini uygula
    a = 0; b = 0; #10;
    a = 0; b = 1; #10;
    a = 1; b = 0; #10;
    a = 1; b = 1; #10;
    $finish;
  end
endmodule

Önemli Noktalar

  • Testbench’in portu yoktur
  • reg, değişen sinyaller (DUT girişleri) için kullanılır
  • wire, DUT’tan gelen sinyaller (çıkışlar) için kullanılır
  • Test edilen modüle DUT (Design Under Test) adı verilir
  • $finish simülasyonu sonlandırır

Sonraki derslerde uyarıcı oluşturmayı, sonuçları görüntülemeyi ve diğer testbench özelliklerini ele alacağız.

challenge icon

Görev

Size bir AND geçidi modülü verilmiştir. Göreviniz, testbench'ine eksik kısımları eklemektir.

Yapılacaklar:

Testbench'e aşağıdaki kısımları ekleyin:

  1. Girişler a ve b için reg tanımlayın
  2. Çıkış c için wire tanımlayın
  3. and_gate'i dut adıyla örnekleyin ve portları bağlayın

Kendin dene

module and_gate (
  input a,
  input b,
  output c
);
  assign c = a & b;
endmodule

module testbench;
  
  // Görev 1: a ve b girişleri için reg bildir
  
  
  // Görev 2: c çıkışı için wire bildir
  

  // Görev 3: and_gate'i dut adıyla örnekle
  // .a(a), .b(b), .c(c) bağla


  initial begin
    a = 0; b = 0; #10 $display("%d & %d = %d", a, b, c);
    a = 0; b = 1; #10 $display("%d & %d = %d", a, b, c);
    a = 1; b = 0; #10 $display("%d & %d = %d", a, b, c);
    a = 1; b = 1; #10 $display("%d & %d = %d", a, b, c);
    $finish;
  end
endmodule
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi