Dumpfile ve Dumpvars
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 76 / 90.
Dalga şekilleri (waveform), zaman içindeki sinyal değişikliklerinin görsel temsilidir. Bir waveform, simülasyon sırasında sinyallerin (clk, a, b, out gibi) nasıl değiştiğini gösterir. Yatay eksen zamanı, dikey eksen ise sinyal değerlerini (0, 1, X, Z) gösterir.
$dumpfile ve $dumpvars, GTKWave gibi bir dalga şekli görüntüleyicide inceleyebileceğiniz bir waveform file (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 şekli görüntüleyicide açabilirsiniz.
$dumpfile
$dumpfile, oluşturulacak dalga şekli (waveform) dosyasının adını belirtir.
Sözdizimi:
$dumpfile("filename.vcd");Örnek:
$dumpfile("my_waveform.vcd");Bu işlem, my_waveform.vcd adında bir dosya oluşturur.
$dumpvars
$dumpvars, dalga şekli dosyasında hangi sinyallerin kaydedileceğini belirtir.
Sözdizimi:
$dumpvars(level, module_name);| Parametre | Anlamı |
|---|---|
level | Dökümü alınacak hiyerarşi seviyesi sayısı (0 = tüm seviyeler) |
module_name | Sinyallerinin dökümü alınacak modül |
Not: Hiyerarşi, modüllerin diğer modüllerin içinde yer alması anlamına gelir. 0 kullanmak, en üstteki module ve içindeki her bir module'e ait tüm signals değerlerini aktarırken, 1 yalnızca en üstteki module'e ait signals değerlerini aktarır.
Yaygın Kullanım
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
end$dumpfile("dump.vcd")→dump.vcdadında dosya oluşturur$dumpvars(0, testbench)→testbenchmodülündeki ve tüm alt modüllerdeki tüm sinyalleri döker
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 Level Örnekleri
| Level | Neler Dökümlenir (Dump Edilir) |
|---|---|
0 | Modüldeki ve tüm sub-module'lerdeki tüm signal'ler |
1 | Yalnızca belirtilen module içindeki signal'ler (sub-module'ler hariç) |
Görev
Bir dalga şekli (waveform) dosyası oluşturmak için eksik $dumpfile ve $dumpvars ifadelerini ekleyin.
Yapılacaklar:
waveform.vcdadında bir dosya oluşturmak için$dumpfileekleyintestbenchmodülündeki tüm sinyalleri dökmek (dump) için$dumpvarsekleyin
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 ekle
// TODO: testbench'teki tüm sinyalleri dökmek için $dumpvars ekle
// İ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ığı