第1章:iverilog工具链安装

1.1 iverilog简介与特点

说到Verilog仿真,我第一个想到的就是iverilog。这玩意儿,说白了就是个开源的Verilog仿真器。我在做项目的时候经常用它,为啥?因为它轻量、免费,而且跨平台。

iverilog的全称是Icarus Verilog,由Stephen Williams大神开发维护。它支持IEEE 1364-2005标准,也就是Verilog-2005。嗯,这里要注意,它不支持SystemVerilog的全部特性,但对我们做数字IC验证来说,大部分场景都够用了。

它的特点我总结了一下:

  • 开源免费:GPL协议,随便用,不用担心版权问题
  • 跨平台:Windows、Linux、macOS都能跑
  • 轻量级:安装包才几兆,不像VCS、QuestaSim那样动辄几个G
  • 与GTKWave配合:生成VCD文件后,用GTKWave看波形,完美组合
  • 支持PLI/VPI:可以写C代码扩展功能,这个我在项目中用过几次

我个人习惯:在项目早期阶段,用iverilog快速验证模块功能。等到了系统级验证,再切换到商业仿真器。这样既省钱又高效。

1.2 源码编译安装步骤

源码编译安装,听起来挺吓人,其实步骤不多。我当年第一次装的时候也怕,后来发现就几条命令的事。

先下载源码包:

wget https://github.com/steveicarus/iverilog/archive/v11_0.tar.gz
tar -xzf v11_0.tar.gz
cd iverilog-11_0

然后配置、编译、安装:

./configure
make
sudo make install

这里有个坑,我踩过。如果你系统里缺flex和bison,configure那步就会报错。解决办法:

# Ubuntu/Debian
sudo apt-get install flex bison

# CentOS/RHEL
sudo yum install flex bison

我曾经遇到过:在旧版Ubuntu上编译,make到一半报错,说gcc版本太老。后来我升级了gcc才搞定。所以建议用较新的系统来编译。

1.3 二进制包安装方法

如果你不想折腾编译,直接用二进制包安装就行。我个人更推荐这种方式,省时省力。

Ubuntu/Debian系:

sudo apt-get install iverilog

CentOS/RHEL系:

sudo yum install iverilog

macOS:

brew install iverilog

Windows:

去官网下载安装包,双击安装就行。记得把安装目录加到PATH环境变量里。

小技巧:装完后在终端输入 iverilog -V,如果能看到版本号,说明装成功了。我每次装完都先跑这条命令确认一下。

1.4 安装验证与常见问题

装完了怎么验证?写个最简单的testbench跑一下:

// counter.v
module counter (
    input clk,
    input rst_n,
    output reg [3:0] cnt
);
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n)
            cnt <= 4'b0;
        else
            cnt <= cnt + 1'b1;
    end
endmodule

// tb_counter.v
module tb_counter;
    reg clk;
    reg rst_n;
    wire [3:0] cnt;
    
    counter u_counter (.clk(clk), .rst_n(rst_n), .cnt(cnt));
    
    initial begin
        clk = 0;
        rst_n = 0;
        #20 rst_n = 1;
        #200 $finish;
    end
    
    always #5 clk = ~clk;
    
    initial begin
        $dumpfile("counter.vcd");
        $dumpvars(0, tb_counter);
    end
endmodule

编译和仿真:

iverilog -o counter counter.v tb_counter.v
vvp counter

如果没报错,并且生成了counter.vcd文件,那就说明iverilog安装成功了。

常见问题:

问题 原因 解决办法
iverilog: command not found 没装或者PATH没配好 重新安装,检查PATH
vvp: command not found iverilog没装全 重新安装iverilog
编译时报语法错误 代码有语法问题 检查Verilog代码
VCD文件为空 没加$dumpvars 在initial块里加上$dumpvars

我曾经遇到过:有次编译通过了,但仿真结果不对。折腾了半天,发现是代码里有个always块漏了敏感列表。所以仿真结果不对时,先检查代码逻辑。

1.5 GTKWave波形查看器安装

有了VCD文件,怎么看波形?GTKWave就是干这个的。它和iverilog是黄金搭档。

安装方法:

# Ubuntu/Debian
sudo apt-get install gtkwave

# CentOS/RHEL
sudo yum install gtkwave

# macOS
brew install gtkwave

# Windows
去官网下载安装包

装完后,用GTKWave打开VCD文件:

gtkwave counter.vcd

然后就能看到波形了。你可以添加信号、缩放、测量时间,操作很直观。

小技巧:GTKWave支持保存配置文件。你把信号排好序、设置好颜色后,保存为.sav文件。下次直接加载这个文件,省得重新配置。我每次做项目都会保存一份配置文件。

好了,iverilog和GTKWave的安装就讲完了。说白了,装这两个工具就是几条命令的事。你想想看,有了这套开源工具链,你就能在自己的电脑上跑Verilog仿真了,多方便。

iverilog工具链知识体系 iverilog工具链 简介与特点 源码编译安装 二进制包安装 安装验证与常见问题 GTKWave波形查看器 开源免费 跨平台 轻量级 PLI/VPI 编译仿真测试 VCD文件生成 波形查看 信号添加 缩放测量 配置文件保存与加载

可可精品资料库