Dumpfile과 Dumpvars
Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 76번째.
웨이브폼(Waveforms)은 시간에 따른 신호 변화를 시각적으로 나타낸 것입니다. 웨이브폼은 시뮬레이션 동안 신호(예: clk, a, b, out)가 어떻게 변화하는지 보여줍니다. 가로축은 시간을 나타내고, 세로축은 신호 값(0, 1, X, Z)을 나타냅니다.
$dumpfile 및 $dumpvars는 GTKWave와 같은 파형 뷰어에서 볼 수 있는 파형 파일(VCD 파일)을 생성하는 데 사용되는 시스템 작업입니다. VCD는 Value Change Dump의 약자입니다. 시뮬레이션 중에 발생하는 모든 신호 변경 사항을 기록하는 파일입니다. 파형 뷰어에서 이 파일을 열어 신호를 시각적으로 확인할 수 있습니다.
$dumpfile
$dumpfile은 생성할 파형 파일의 이름을 지정합니다.
문법:
$dumpfile("filename.vcd");예시:
$dumpfile("my_waveform.vcd");이것은 my_waveform.vcd라는 파일을 생성합니다.
$dumpvars
$dumpvars는 waveform 파일에 기록할 signals를 지정합니다.
구문:
$dumpvars(level, module_name);| Parameter | Meaning |
|---|---|
level | 덤프할 계층 구조 레벨 수 (0 = 모든 레벨) |
module_name | 신호를 덤프할 모듈 |
참고: 계층 구조는 모듈이 다른 모듈 내에 포함되어 있음을 의미합니다. 0을 사용하면 최상위 module과 그 내부의 모든 module에서 모든 signals를 dump하며, 1을 사용하면 최상위 module의 signals만 dump합니다.
일반적인 사용법
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
end$dumpfile("dump.vcd")→dump.vcd라는 이름의filecreates$dumpvars(0, testbench)→moduletestbench및 모든sub-modules의allsignalsdumps
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
endmoduleDumpvars Level Examples
| Level | What Gets Dumped |
|---|---|
0 | All signals in the module and all sub-modules |
1 | Only signals in the specified module (not sub-modules) |
챌린지
웨이브폼 파일을 생성하기 위해 누락된 $dumpfile 및 $dumpvars 구문을 추가하세요.
수행할 작업:
waveform.vcd라는 이름의 파일을 생성하기 위해$dumpfile을 추가하세요.testbench모듈의 모든 신호를 덤프하기 위해$dumpvars를 추가하세요.
직접 해보기
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"를 생성하려면 $dumpfile 추가
// TODO: testbench의 모든 신호를 덤프하려면 $dumpvars 추가
// 힌트: $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이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.