Dumpfile ve Dumpvars
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 76 / 90.
Dalga formları, zaman içindeki sinyal değişimlerinin görsel temsilidir. Bir dalga formu, sinyallerin (clk, a, b, out gibi) simülasyon sırasında nasıl değiştiğini görüntüler. Yatay eksen zamanı, dikey eksen ise sinyal değerlerini (0, 1, X, Z) gösterir.
$dumpfile ve $dumpvars, GTKWave gibi bir dalga formu görüntüleyicide (waveform viewer) görüntüleyebileceğiniz bir dalga formu dosyası (VCD dosyası) oluşturmak için kullanılan sistem görevleridir. VCD, Value Change Dump anlamına gelir. Simülasyon sırasındaki tüm sinyal değişikliklerini kaydeden bir dosyadır. Sinyalleri görsel olarak görmek için bu dosyayı bir dalga formu görüntüleyicide açabilirsiniz.
$dumpfile
$dumpfile oluşturulacak dalga formu dosyasının adını belirtir.
Sözdizimi:
$dumpfile("filename.vcd");Örnek:
$dumpfile("my_waveform.vcd");Bu, my_waveform.vcd adında bir dosya oluşturur.
$dumpvars
$dumpvars, dalga formu dosyasına hangi sinyallerin kaydedileceğini belirtir.
Sözdizimi:
$dumpvars(level, module_name);| Parametre | Anlam |
|---|---|
level | Kaç hiyerarşi seviyesinin döküleceği (0 = tüm seviyeler) |
module_name | Sinyallerin hangi modülden döküleceği |
Not: Hiyerarşi, diğer modüllerin içindeki modüller anlamına gelir. 0 kullanmak, en üst modüldeki ve içindeki her modüldeki tüm sinyalleri döker, 1 ise yalnızca en üst modüldeki sinyalleri döker.
Yaygın Kullanım
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
end$dumpfile("dump.vcd")→dump.vcdisimli dosyayı oluşturur$dumpvars(0, testbench)→testbenchmodülündeki ve tüm alt modüllerdeki tüm sinyalleri kaydeder
Testbench ile Örnek
module or_gate (
input x,
input y,
output z
);
assign z = x | y;
endmodule
module testbench;
reg x, y;
wire z;
or_gate dut (
.x(x),
.y(y),
.z(z)
);
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
$display("Creating waveform file...");
x = 0; y = 0; #10;
x = 0; y = 1; #10;
x = 1; y = 0; #10;
x = 1; y = 1; #10;
$finish;
end
endmoduleDumpvars Seviye Örnekleri
| Seviye | Neler Dökülür |
|---|---|
0 | Modüldeki ve tüm alt modüllerdeki tüm sinyaller |
1 | Yalnızca belirtilen modüldeki sinyaller (alt modüller hariç) |
Görev
Bir dalga formu dosyası oluşturmak için eksik olan $dumpfile ve $dumpvars ifadelerini ekleyin.
Ne yapmalı:
waveform.vcdadında bir dosya oluşturmak için$dumpfileekleyintestbenchmodülündeki tüm sinyalleri dökmek (dump) için$dumpvarsekleyin
Kopya kağıdı
GTKWave gibi araçlarda görüntülemek üzere bir VCD (Value Change Dump) dalga formu dosyası oluşturmak için bir initial bloğu içinde $dumpfile ve $dumpvars kullanın:
initial begin
$dumpfile("dump.vcd"); // VCD dosyasını oluşturur
$dumpvars(0, testbench); // testbench ve alt modüllerdeki tüm sinyalleri döker
end$dumpvars(level, module_name) seviyeleri:
0— modüldeki ve tüm alt modüllerdeki tüm sinyaller1— yalnızca belirtilen modüldeki sinyaller (alt modüller hariç)
Kendin dene
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmodule
module testbench;
reg a, b;
wire c;
and_gate dut (
.a(a),
.b(b),
.c(c)
);
initial begin
// TODO: "waveform.vcd" oluşturmak için $dumpfile ekleyin
// TODO: testbench'teki tüm sinyalleri dökmek için $dumpvars ekleyin
// İpucu: $dumpvars(0, testbench);
if ($test$plusargs("vcd")) begin
$display("VCD file created successfully");
end
$display("Simulation running...");
a = 0; b = 0; #10;
a = 0; b = 1; #10;
a = 1; b = 0; #10;
a = 1; b = 1; #10;
$display("Simulation complete. Open waveform.vcd");
$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ığı