Bootstrap

iverilog工具的使用


前言

最近在一个项目中发现了一个挺有意思的小工具——iverilog,一个verilog编译器,这款verilog编译器的编译速度超快,很适合用于一些小型项目中,也不用特地去安装quartus或者是vivado,像我这样的小白,是真滴香!!!


一、获取Iverilog

从该网址进入,Iverilog官网,选择最新版的Iverilog软件进行下载,教程使用的是windows操作系统。

二、安装

这个软件跟着流程安装就行,不过在安装的时候需要注意一下下面这一步,勾选下面两个勾勾。

在这里插入图片描述

检测软件有无安装好,可以在命令行中分别输入下述代码:

where iverilog
where vvp
where gtkwave

运行成功后,命令行会分别显示三个工具的路径。

三、命令行方法

1、编译文件(使用iverilog)

iverilog -o [生成的文件名] [verilog文件]...

对于不在同一目录中的文件,可以使用-y [文件绝对路径]替代文件名,具体将在后述演示中说明。

2、生成波形文件(使用vvp)

vvp -n [上一步编译的文件名] -lxt2

testbench中需要加上下述代码才能够生成波形文件

initial begin            
    $dumpfile("生成波形文件命名.vcd");       
    $dumpvars(0, testbench名称);    
end

3、绘制波形文件(使用gtkwave)

gtkwave [上一步生成的波形文件,需要加上后缀]

四、演示

1、verilog代码

module test (
    input clk,
    output dout
);
    assign dout = ~clk;
endmodule

2、testbench代码

/*
    incentive document
*/
`timescale 1ns / 1ns
module testbench();
    reg clk;
    /* define the wire below */
    wire dout;

    parameter CYCLE    = 2;
    parameter END_TIME = 200;
    /* init the module below */

    test mod(
        .clk    (clk),
        .dout   (dout)
    );

/***************************************************/
    initial begin            
        $dumpfile("wave.vcd");        //生成的vcd文件名称
        $dumpvars(0, testbench);    //tb模块名称
    end 
/***************************************************/
    /* init the state */
    initial begin
        clk = 0;
    end
/***************************************************/
    /* genrate clock */
    always begin
        #(CYCLE / 2) clk = ~clk;
    end
/***************************************************/
    /* stop the simulation */
    initial begin
        #END_TIME;
        $stop;
    end

endmodule

3、步骤

a.下面两种编译方式均可。

在这里插入图片描述

使用了-y [文件绝对路径]

在这里插入图片描述

b.生成波形文件

在这里插入图片描述

c.绘制波形图

在这里插入图片描述

在这里插入图片描述

**

快捷操作:1、命令行可以使用tab键快速补全文件的名称;
2、命令行中可以使用上下键切换曾经使用的命令。

**


总结

happy去吧!!

;