Menu
Coddy logo textTech

Dumpfile ve Dumpvars

Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 76 / 90.

Dalga biçimleri, sinyal değişikliklerinin zaman içindeki görsel temsilidir. 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üleyicide 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üleyicide 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ı
levelAktarılacak hiyerarşi düzeyi sayısı (0 = tüm düzeyler)
module_nameSinyallerin aktarılacağı modül

Not: Hiyerarşi, diğer modüllerin içindeki modüller anlamına gelir. 0 kullanmak, üst modüldeki ve onun içindeki her modüldeki tüm sinyalleri dökerken 1 kullanmak yalnızca üst modüldeki sinyalleri döker.

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

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 Düzeyi Örnekleri

DüzeyHangi Veriler Dökülür
0Modüldeki ve tüm alt modüllerdeki bütün sinyaller
1Yalnızca belirtilen modüldeki sinyaller (alt modüller değil)
challenge icon

Görev

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

Yapılacaklar:

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

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
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