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ı uygular | Tasarım modülünü test eder |
| Portları var mı? | Evet (girdiler ve çıktılar) | Hayır (kendi kendine yeterli) |
| Sentezlenebilir mi? | Evet | Hayı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ırwire, DUT’tan gelen sinyaller (çıkışlar) için kullanılır
- Test edilen modüle DUT (Design Under Test) adı verilir
$finishsimülasyonu sonlandırır
Sonraki derslerde uyarıcı oluşturmayı, sonuçları görüntülemeyi ve diğer testbench özelliklerini ele alacağız.
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:
- Girişler
avebiçinregtanımlayın - Çıkış
ciçinwiretanımlayın and_gate'idutadı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
endmoduleBu 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
4Operatörler Bölüm 1
Aritmetik OperatörlerMod Alma OperatörüKarşılaştırma OperatörleriTekrar - Basit MatematikBit Düzeyi Operatörleri7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND, OR ve NOT KapılarıXOR ve XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Verme
If İfadesiIf - ElseTekrar - Basit KarşılaştırıcıCase İfadesiCasex ve CasezTekrar - ALU Tasarımı2Veri Türleri
Wire TürüReg TürüTamsayı ve GerçelVektörlerDizilerParametrelerÖzet - Sinyalleri Tanımlama5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörTekrar - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüTekrar DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiTekrar - Döngü Kalıpları14Testbench Temelleri
Testbench NedirUyarıcı OluşturmaGörüntüleme ve İzlemeDumpfile ve DumpvarsSystem Task'lerini KullanmaTekrar - Tam Testbench3Sayı Sistemi
İkili GösterimBoyutlu SayılarBoyutsuz SayılarNegatif SayılarÖzel X ve Z DeğerleriTekrar - Sayı Biçimleri6Modüller
Modül YapısıGiriş ve Çıkış PortlarıÇift Yönlü PortlarModül ÖrneklendirmeAda Göre Port EşlemeSıraya Göre Port EşlemeTekrar - Bir Modül Oluşturma9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiBloklayıcı AtamaBloklamayan AtamaTekrar - Always ve Initial Karşılaştırması15Trafik Işığı Denetleyicisi
Durumları TanımlamaDurum Makinesi MantığıKendi başına pratik yap: Online Verilog derleyicisi