Menu
Coddy logo textTech

Dumpfile과 Dumpvars

Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 76번째.

파형은 시간에 따른 신호 변화의 시각적 표현입니다. 파형은 시뮬레이션 중에 신호(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는 파형 파일에 기록할 신호를 지정합니다.

구문:

$dumpvars(level, module_name);
매개변수의미
level덤프할 계층 수준의 수 (0 = 모든 수준)
module_name신호를 덤프할 모듈

참고: 계층 구조(Hierarchy)는 다른 모듈 내부에 있는 모듈을 의미합니다. 0을 사용하면 최상위 모듈과 그 내부의 모든 모듈에서 모든 신호를 덤프하며, 1은 최상위 모듈의 신호만 덤프합니다.

일반적인 사용법

initial begin
  $dumpfile("dump.vcd");
  $dumpvars(0, testbench);
end
  • $dumpfile("dump.vcd")dump.vcd라는 이름의 파일을 생성합니다
  • $dumpvars(0, testbench)testbench 모듈 및 모든 하위 모듈의 모든 신호를 덤프합니다

테스트벤치(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

Dumpvars 레벨 예시

레벨덤프되는 내용
0모듈 및 모든 하위 모듈의 모든 신호
1지정된 모듈의 신호만 (하위 모듈 제외)
challenge icon

챌린지

파형 파일을 생성하기 위해 누락된 $dumpfile$dumpvars 문을 추가하세요.

수행할 작업:

  1. waveform.vcd라는 이름의 파일을 생성하도록 $dumpfile을 추가합니다.
  2. testbench 모듈의 모든 신호를 덤프하도록 $dumpvars를 추가합니다.

치트 시트

initial 블록 내에서 $dumpfile$dumpvars를 사용하여 GTKWave와 같은 도구에서 볼 수 있는 VCD (Value Change Dump) 파형 파일을 생성합니다:

initial begin
  $dumpfile("dump.vcd");   // VCD 파일을 생성합니다
  $dumpvars(0, testbench); // testbench 및 하위 모듈의 모든 신호를 덤프합니다
end

$dumpvars(level, module_name) 레벨:

  • 0 — 모듈 모든 하위 모듈의 모든 신호
  • 1 — 지정된 모듈의 신호만 (하위 모듈 제외)

직접 해보기

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
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨