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 ş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);
ParametreAnlamı
levelDökümü alınacak hiyerarşi seviyesi sayısı (0 = tüm seviyeler)
module_nameSinyallerinin 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.vcd adında dosya oluşturur
  • $dumpvars(0, testbench)testbench modü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
endmodule

Dumpvars Level Örnekleri

LevelNeler Dökümlenir (Dump Edilir)
0Modüldeki ve tüm sub-module'lerdeki tüm signal'ler
1Yalnızca belirtilen module içindeki signal'ler (sub-module'ler hariç)
challenge icon

Görev

Bir dalga şekli (waveform) dosyası oluşturmak için eksik $dumpfile ve $dumpvars ifadelerini ekleyin.

Yapılacaklar:

  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

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.

Temeller bölümündeki tüm dersler