Dumpfile ve Dumpvars
Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 76 / 90.
Dalga biçimleri, sinyallerin zaman içindeki değişimlerinin görsel gösterimidir. Bir dalga biçimi, 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 biçimi görüntüleyicisinde görüntüleyebileceğin bir dalga biçimi dosyası (VCD dosyası) oluşturmak için kullanılan sistem görevleridir. VCD, Value Change Dump ifadesinin kısaltmasıdır. Simülasyon sırasında gerçekleşen tüm sinyal değişikliklerini kaydeden bir dosyadır. Sinyalleri görsel olarak görmek için bu dosyayı bir dalga biçimi görüntüleyicisinde açabilirsin.
$dumpfile
$dumpfile, oluşturulacak dalga biçimi dosyasının adını belirtir.
Sözdizimi:
$dumpfile("filename.vcd");Örnek:
$dumpfile("my_waveform.vcd");Bu, my_waveform.vcd adlı bir dosya oluşturur.
$dumpvars
$dumpvars, dalga biçimi dosyasına hangi sinyallerin kaydedileceğini belirtir.
Sözdizimi:
$dumpvars(level, module_name);| Parametre | Anlamı |
|---|---|
level | Dökülecek hiyerarşi düzeyi sayısı (0 = tüm düzeyler) |
module_name | Sinyallerin döküleceği modül |
Not: Hiyerarşi, diğer modüllerin içindeki modüller anlamına gelir. 0 kullanıldığında en üst modüldeki ve onun içindeki tüm modüllerdeki sinyaller döküm dosyasına yazılırken, 1 kullanıldığında yalnızca en üst modüldeki sinyaller döküm dosyasına yazılır.
Yaygın Kullanım
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
end$dumpfile("dump.vcd")→dump.vcdadlı dosyayı oluşturur$dumpvars(0, testbench)→testbenchmodülündeki ve tüm alt modüllerdeki sinyalleri döker
Test düzeneği örneği
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 Seviyesi Örnekleri
| Seviye | Hangi Sinyaller Dökülür |
|---|---|
0 | Modüldeki ve tüm alt modüllerdeki sinyaller |
1 | Yalnızca belirtilen modüldeki sinyaller (alt modüllerdekiler değil) |
Görev
Bir waveform dosyası oluşturmak için eksik $dumpfile ve $dumpvars ifadelerini ekle.
Yapman gerekenler:
- Adı
waveform.vcdolan bir dosya oluşturmak için$dumpfileekle testbenchmodülündeki tüm sinyalleri dökmek için$dumpvarsekle
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" dosyasını oluşturmak için $dumpfile ekleyin
// TODO: testbench içindeki 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.
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