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);| Parameter | Arti |
|---|---|
level | Berapa banyak tingkat hierarki yang akan ditampilkan (0 = semua tingkat) |
module_name | Dari 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 bernamadump.vcd$dumpvars(0, testbench)→ merekam semua sinyal dalam moduletestbenchdan 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
endmoduleContoh Level Dumpvars
| Level | Yang Dicatat |
|---|---|
0 | Semua sinyal dalam module dan semua sub-module |
1 | Hanya sinyal dalam module yang ditentukan (bukan sub-module) |
Tantangan
Tambahkan pernyataan $dumpfile dan $dumpvars yang hilang untuk membuat file waveform.
Yang harus dilakukan:
- Tambahkan
$dumpfileuntuk membuat file bernamawaveform.vcd - Tambahkan
$dumpvarsuntuk membuang semua sinyal dalam moduletestbench
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
endmodulePelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
1Pengantar
Apa Itu VerilogPerangkat Keras vs Perangkat LunakModul PertamamuKomentarTingkat Abstraksi Desain4Operator Bagian 1
Operator AritmetikaOperator ModuloOperator PerbandinganUlasan, Matematika SederhanaOperator Bitwise7Penugasan dan Gerbang
Penugasan KontinuPenugasan dengan OperatorPrimitif Gerbang BawaanGerbang AND, OR, NOTGerbang XOR, XNORUlasan: Rangkaian Gerbang Logika10Pengambilan Keputusan
Pernyataan IfIf - ElseRangkuman: Komparator SederhanaPernyataan CaseCasex dan CasezRangkuman: Desain ALU5Operator Bagian 2
Operator LogikaOperator ReduksiOperator GeserOperator PenggabunganOperator KondisionalRangkuman, Tantangan Operator14Dasar-Dasar Testbench
Apa Itu TestbenchMembuat StimulusDisplay dan MonitorDumpfile dan DumpvarsMenggunakan System TasksRekap: Testbench Lengkap3Sistem Bilangan
Representasi BinerBilangan BerukuranBilangan Tanpa UkuranBilangan NegatifNilai Khusus X dan ZRingkasan: Format Bilangan6Modul
Struktur ModulPort Input dan OutputPort InoutInstansiasi ModulPemetaan Port Berdasarkan NamaPemetaan Port Berdasarkan UrutanRangkuman: Bangun Modul9Blok Prosedural
Blok alwaysBlok initialDaftar SensitivitasPenugasan BlockingPenugasan Non-BlockingRangkuman: always vs initial15Pengendali Lampu Lalu Lintas
Menentukan StatusLogika Mesin StatusLatihan sendiri: Compiler Verilog online