Bootstrap

win10下使用iverilog仿真+gtkwave/WaveDrom查看波形

简介

在win10环境下,使用iverilog进行简单的verilog编译仿真,使用gtkwave和WaveDrom查看仿真波形。
iverilog for windows提供了iverilog和gtkwave的捆绑安装程序,下载链接:https://bleyer.org/icarus/,下载安装后要配置环境变量。
WaveDrom是一个网页波形编辑器,链接:https://wavedrom.com/

被测试模块

用状态机写一个1101序列检测模块:

module test(
    input clk,
    input rst_n,
    input in,
    output out
);
    localparam IDLE = 1, H = 2, HH = 3, HHL = 4, HHLH = 5;
    reg [2:0] state;

    always @(posedge clk, negedge rst_n) begin
        if(!rst_n)
            state <= IDLE;
        else begin
            case(state)
                IDLE: state <= in ? H : IDLE;
                H   : state <= in ? HH : IDLE;
                HH  : state <= in ? HH : HHL;
                HHL : state <= in ? HHLH : IDLE;
                HHLH: state <= in ? H : IDLE;
                default: state <= IDLE;
            endcase 
        end
    end

    assign out = (state == HHLH);
endmodule

testbench

由于需要查看波形,所以调用系统函数$dumpfile(“wave.vcd”)将波形输出到wave.vcd文件,调用$dumpvars输出所有波形。写一个简单的tb,直接给出1101序列的激励:

`timescale 1ns/1ns
module test_tb;
    reg clk = 1;
    always #10 clk = ~clk;

    reg rst_n = 0;

    reg in = 0;
    wire out;

    initial begin            
        $dumpfile("wave.vcd"); // 指定用作dumpfile的文件
        $dumpvars; // dump all vars
    end

    initial begin
        #20 rst_n <= 1;
        #20 in <= 1;
        #20 in <= 1;
        #20 in <= 0;
        #20 in <= 1;
        #20 in <= 0;
        #40;
        $display("it works");
        $finish;
    end

    test inst_test (
        .clk   (clk), 
        .rst_n (rst_n), 
        .in    (in), 
        .out   (out)
    );
endmodule

编译仿真

使用iverilog命令进行编译,默认输出文件名为a.out:

 iverilog test.v test_tb.v

使用vvp命令对a.out执行仿真:

PS E:\WorkSpace\test> vvp a.out
VCD info: dumpfile wave.vcd opened for output.
it works

执行仿真后,波形文件输出到了wave.vcd文件中,可以用gtkwave软件和WaveDrom网页查看波形。

使用gtkwave查看波形

执行gtkwave命令查看波形:

 gtkwave wave.vcd

执行后会弹出gtkwave软件,不过没有波形,要手动选择左侧的tb,然后添加想要查看的波形即可:
在这里插入图片描述

使用WaveDrom查看波形

使用WaveDrom网页查看波形需要将vcd波形文件转化为wdrom文件,我使用sublime编辑器的verilog-Gadget插件实现该功能。
使用sublime编辑器打开wave.vcd文件,然后鼠标右键,选择VCD to WaveDrom,即可生成wdrom文件:
在这里插入图片描述
将这些代码复制到WaveDrom网页中,即可查看波形:
在这里插入图片描述

;