Menu
CoddyTech

Dumpfile dan Dumpvars

Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 76 dari 90.

Bentuk gelombang adalah representasi visual dari perubahan sinyal seiring waktu. Bentuk gelombang menampilkan bagaimana sinyal (seperti clk, a, b, out) berubah selama simulasi. Sumbu horizontal menunjukkan waktu, dan sumbu vertikal menunjukkan nilai sinyal (0, 1, X, Z).
 

$dumpfile dan $dumpvars adalah tugas sistem yang digunakan untuk membuat file waveform (file VCD) yang bisa kamu lihat di penampil waveform seperti GTKWave. VCD adalah singkatan dari Value Change Dump. File ini mencatat semua perubahan sinyal selama simulasi. Kamu bisa membuka file ini di penampil waveform untuk melihat sinyal secara visual.

$dumpfile

$dumpfile menentukan nama file waveform yang akan dibuat.

Sintaks:

$dumpfile("filename.vcd");

Contoh:

$dumpfile("my_waveform.vcd");

Ini membuat file bernama my_waveform.vcd.

$dumpvars

$dumpvars menentukan sinyal yang akan direkam dalam file waveform.

Sintaks:

$dumpvars(level, module_name);
ParameterArti
levelBerapa banyak tingkat hierarki yang akan ditampilkan (0 = semua tingkat)
module_nameDari module mana sinyal akan ditampilkan

Catatan: Hierarki berarti module di dalam module lainnya. Menggunakan 0 mencatat semua sinyal dari module teratas dan setiap module di dalamnya, sedangkan 1 hanya mencatat sinyal dari module teratas.

Penggunaan Umum

initial begin
  $dumpfile("dump.vcd");
  $dumpvars(0, testbench);
end
  • $dumpfile("dump.vcd") → membuat file bernama dump.vcd
  • $dumpvars(0, testbench) → merekam semua sinyal dalam module testbench dan semua sub-module

Contoh dengan Testbench

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

Contoh Level Dumpvars

LevelYang Dicatat
0Semua sinyal dalam module dan semua sub-module
1Hanya sinyal dalam module yang ditentukan (bukan sub-module)
challenge icon

Tantangan

Tambahkan pernyataan $dumpfile dan $dumpvars yang hilang untuk membuat file waveform.

Yang harus dilakukan:

  1. Tambahkan $dumpfile untuk membuat file bernama waveform.vcd
  2. Tambahkan $dumpvars untuk membuang semua sinyal dalam module testbench

Coba sendiri

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: Tambahkan $dumpfile untuk membuat "waveform.vcd"
    
    
    // TODO: Tambahkan $dumpvars untuk merekam semua sinyal di testbench
    // Petunjuk: $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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Verilog online