Menu
Coddy logo textTech

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);
ParametreAnlam
levelKaç hiyerarşi seviyesinin döküleceği (0 = tüm seviyeler)
module_nameSinyallerin 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.vcd isimli dosyayı oluşturur
  • $dumpvars(0, testbench)testbench modü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
endmodule

Dumpvars Seviye Örnekleri

SeviyeNeler Dökülür
0Modüldeki ve tüm alt modüllerdeki tüm sinyaller
1Yalnızca belirtilen modüldeki sinyaller (alt modüller hariç)
challenge icon

Görev

Bir dalga formu dosyası oluşturmak için eksik olan $dumpfile ve $dumpvars ifadelerini ekleyin.

Ne yapmalı:

  1. waveform.vcd adında bir dosya oluşturmak için $dumpfile ekleyin
  2. testbench modülündeki tüm sinyalleri dökmek (dump) için $dumpvars ekleyin

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 sinyaller
  • 1 — 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
endmodule
quiz iconKendini test et

Bu 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