Icarus Verilog and GTKWave 사용 방법

Verilog 코드를 simulation 해보고 waveform을 보고 싶을 때 사용할 수 있는 무료 툴 설치 및 실행 방법을 정리합니다.

시뮬레이션은 Icarus Verilog를 사용하고, waveform은 GTKWave를 통해 확인합니다.

Installation Guide

Icarus Verilog

Linux

git clone https://github.com/steveicarus/iverilog.git
cd iverilog
git checkout --track -b v12-branch origin/v12-branch
sh autoconf.sh
./configure
# ./configure --prefix=/my/special/directory
make
make install

macOS

맥에서는 brew를 이용해 간단히 설치할 수 있습니다.

brew install icarus-verilog

GTKWave

macOS

2024년 5월 기준으로, macOS 14 Sonoma에서는 gtkwave가 제대로 설치되지 않는 현상이 있습니다. 따라서 아래와 같이 설치합니다.

brew install --HEAD randomplum/gtkwave/gtkwave

해당 이슈에 대한 더 자세한 내용은 다음 링크에서 확인할 수 있습니다. - Unable to launch GTKWave on macOS Sonoma

Getting Started With Icarus Verilog and GTKWave

터미널에서 아래의 내용을 순서대로 따라 해 주세요.

  1. Make counter.v file
    tee > counter.v << EOF
    module counter(out, clk, reset);
       
      parameter WIDTH = 8;
       
      output [WIDTH-1 : 0] out;
      input            clk, reset;
       
      reg [WIDTH-1 : 0]   out;
      wire            clk, reset;
       
      always @(posedge clk)
        out <= out + 1;
       
      always @reset
        if (reset)
          assign out = 0;
        else
          deassign out;
       
    endmodule // counter
    EOF
    
  2. Make counter_tb.v file
    tee > counter_tb.v << EOF
    module test;
       
      /* Make a reset that pulses once. */
      reg reset = 0;
      initial begin
         \$dumpfile("test.vcd");
         \$dumpvars(0,test);
       
         # 17 reset = 1;
         # 11 reset = 0;
         # 29 reset = 1;
         # 5  reset =0;
         # 513 \$finish;
      end
       
      /* Make a regular pulsing clock. */
      reg clk = 0;
      always #1 clk = !clk;
       
      wire [7:0] value;
      counter c1 (value, clk, reset);
       
      initial
         \$monitor("At time %t, value = %h (%0d)", \$time, value, value);
    endmodule // test
    EOF
    
  3. Compile
    iverilog -o dsn counter_tb.v counter.v
    
  4. Run
    vvp dsn
    
  5. Open waveform
    gtkwave test.vcd &
    

Updated:

Leave a comment