Testbench Nedir?
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 73 / 90.
Bir testbench, başka bir modülü test etmek için kullanılan özel bir Verilog modülüdür. Tasarımınıza girişler 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, onun doğru çalıştığından emin olmanız gerekir. Bir testbench şunları yapmanıza olanak tanır:
- Modülünüze farklı giriş değerleri uygulamak
- Çıkışları gözlemlemek
- Çıktıların beklediğinizle eşleşip eşleşmediğini kontrol edin
- Bunu manuel test yapmadan otomatik olarak yapın
Testbench vs Tasarım Modülü
| Tasarım Modülü | Testbench | |
|---|---|---|
| Amaç | Donanımı uygular | Tasarım modülünü test eder |
| Portları var mı? | Evet (girişler ve çıkışlar) | Hayır (kendi kendine yeten) |
| Sentezlenebilir mi? | Evet | Hayır (yalnızca simülasyon) |
Basit Testbench Örneği
module testbench; // Port yok!
// Girişler ve çıkışlar test ettiğimiz modülden (DUT) gelir.
reg a, b; // girişler için reg
wire c; // çıkış için wire
// Bu modül örneklemesidir (instantiation) — and_gate modülünün bir kopyasını oluşturur ve onu dut olarak adlandırır
and_gate dut ( // DUT'u örnekle
.a(a),
.b(b),
.c(c)
);
// Bu, test edilen modülün girişlerine 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
endmoduleAnahtar Noktalar
- Testbench'in hiçbir portu yoktur
regdeğişen sinyaller (DUT girişleri) için kullanılırwireDUT'tan gelen sinyaller (çıkışlar) için kullanılır
- Test edilen modüle DUT (Design Under Test) denir
$finishsimülasyonu sonlandırır
İlerleyen derslerde stimulus oluşturma, sonuçları görüntüleme ve diğer testbench özelliklerini ele alacağız.
Görev
Size bir AND kapısı modülü verilmiştir. Göreviniz, testbench'ine eksik kısımları eklemektir.
Neler yapılmalı:
Testbench'e aşağıdaki kısımları ekleyin:
avebgirişleri içinregtanımlayıncçıkışı içinwiretanımlayınand_gatemodülünüdutismiyle örneklendirin ve portları bağlayın
Kopya kağıdı
Bir testbench, başka bir modülü (DUT - Design Under Test / Test Edilen Tasarım) test etmek için kullanılan bir Verilog modülüdür. Portu yoktur ve sadece simülasyon amaçlıdır.
module testbench; // Port yok!
reg a, b; // girişler için reg (değişen sinyaller)
wire c; // DUT çıkışları için wire
and_gate dut ( // DUT'ı örneklendir (Instantiate)
.a(a),
.b(b),
.c(c)
);
initial begin // Test değerlerini uygula
a = 0; b = 0; #10;
a = 1; b = 1; #10;
$finish; // Simülasyonu bitir
end
endmoduleinitialbloklarında sürülen sinyaller (DUT girişleri) içinregkullanın- DUT'tan gelen sinyaller (çıkışlar) için
wirekullanın $finishsimülasyonu sonlandırır
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 tanımlayın
// Görev 2: c çıkışı için wire tanımlayın
// Görev 3: and_gate modülünü dut adıyla örnekleyin
// .a(a), .b(b), .c(c) bağlantılarını yapın
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
endmoduleBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları14Testbench Temelleri
Testbench Nedir?Stimulus OluşturmaDisplay ve MonitorDumpfile ve DumpvarsSistem Görevlerini KullanmaÖzet - Tam Testbench3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı