Menu
Coddy logo textTech

Dumpfile And Dumpvars

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

파형은 시간에 따른 신호 변화를 시각적으로 나타낸 것입니다. 파형은 시뮬레이션 중 신호(clk, a, b, out 등)가 어떻게 변화하는지 보여 줍니다. 가로축은 시간을 나타내고, 세로축은 신호 값(0, 1, X, Z)을 나타냅니다.
 

$dumpfile$dumpvars는 GTKWave와 같은 파형 뷰어에서 볼 수 있는 waveform file(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);
매개변수의미
level덤프할 계층 수준 수(0 = 모든 수준)
module_name신호를 덤프할 모듈

참고: 계층 구조란 다른 모듈 안에 있는 모듈을 의미합니다. 0을 사용하면 최상위 모듈과 그 안의 모든 모듈에서 모든 signals를 덤프하고, 1을 사용하면 최상위 모듈의 signals만 덤프합니다.

일반적인 사용법

initial begin
  $dumpfile("dump.vcd");
  $dumpvars(0, testbench);
end
  • $dumpfile("dump.vcd")dump.vcd라는 이름의 파일을 생성합니다
  • $dumpvars(0, 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 문을 추가하여 waveform 파일을 생성하세요.

할 일:

  1. waveform.vcd라는 파일을 생성하도록 $dumpfile을 추가하세요.
  2. testbench 모듈의 모든 signals를 dump하도록 $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
quiz icon실력 점검

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

기초의 모든 레슨

직접 연습해 보세요: 온라인 Verilog 컴파일러