Menu
CoddyTech

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);
ParametreAnlamı
levelDökülecek hiyerarşi düzeyi sayısı (0 = tüm düzeyler)
module_nameSinyallerin 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.vcd adlı dosyayı oluşturur
  • $dumpvars(0, testbench) → testbench modü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
endmodule

Dumpvars Seviyesi Örnekleri

SeviyeHangi Sinyaller Dökülür
0Modüldeki ve tüm alt modüllerdeki sinyaller
1Yalnızca belirtilen modüldeki sinyaller (alt modüllerdekiler değil)
challenge icon

Görev

Bir waveform dosyası oluşturmak için eksik $dumpfile ve $dumpvars ifadelerini ekle.

Yapman gerekenler:

  1. Adı waveform.vcd olan bir dosya oluşturmak için $dumpfile ekle
  2. testbench modülündeki tüm sinyalleri dökmek için $dumpvars ekle

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
endmodule
quiz iconKendini test et

Bu 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

Kendi başına pratik yap: Online Verilog derleyicisi