Menu
Coddy logo textTech

Dumpfile And Dumpvars

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

Waveform'lar zaman içindeki sinyal değişikliklerinin görsel gösterimidir. Bir waveform, simulation 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 waveform viewer'da görüntüleyebileceğin bir waveform file (VCD file) oluşturmak için kullanılan sistem görevleridir. VCD, Value Change Dump anlamına gelir. Bu, simülasyon sırasında gerçekleşen tüm signal değişikliklerini kaydeden bir file'dır. signal'ları görsel olarak görmek için bu file'ı bir waveform viewer'da 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, waveform dosyasında hangi sinyallerin kaydedileceğini belirtir.

Sözdizimi:

$dumpvars(level, module_name);
ParametreAnlamı
levelDump edilecek hiyerarşi düzeyi sayısı (0 = tüm düzeyler)
module_nameSinyallerin hangi modülden dump edileceği

Not: Hiyerarşi, diğer modüllerin içindeki modüller anlamına gelir. 0 kullanıldığında üst modüldeki ve onun içindeki her modüldeki tüm signals dökülürken, 1 kullanıldığında yalnızca üst modüldeki signals dökü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

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 Seviyesi Örnekleri

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

Görev

Bir waveform file oluşturmak için eksik $dumpfile ve $dumpvars ifadelerini Add.

Yapılacaklar:

  1. waveform.vcd adlı bir file oluşturmak için $dumpfile Add
  2. testbench module içindeki all signals değerlerini dump etmek için $dumpvars Add

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

Kendi başına pratik yap: Online Verilog derleyicisi