00353 iverilog 仿真示例


前言

本文介绍了 iverilog 仿真示例。

操作系统:Windows 11 家庭中文版

iverilog如何跑tb

使用 Icarus Verilog (iverilog) 跑 testbench (tb) 的基本步骤如下:

1. 准备 Verilog 源文件和 Testbench

假设有两个文件:

  • 设计文件:design.v
  • 测试平台(testbench):tb.v

2. 编译 Verilog 代码

使用 iverilog 将设计文件和 testbench 文件编译成可执行仿真文件(如 a.out 或自定义名称):

iverilog -o testbench.vvp tb.v design.v

其中 -o testbench.vvp 指定输出仿真文件名,tb.v 必须包含 initial 块和对 DUT 的实例化。

3. 运行仿真

vvp 运行编译好的仿真文件:

vvp testbench.vvp

4. 查看仿真输出

  • 仿真过程中,testbench 里的 $display$monitor 等语句输出会显示在终端。
  • 如果你有生成波形(如 dump.vcd),可用 GTKWave 等工具查看:
initial begin
    $dumpfile("dump.vcd");
    $dumpvars;
end

运行完仿真后:

gtkwave dump.vcd

总结流程

  1. 编辑 Verilog 文件和 testbench
  2. 编译:iverilog -o tb.vvp tb.v design.v
  3. 仿真:vvp tb.vvp
  4. (可选)用 GTKWave 查看波形

如有多个文件,可以用空格分开或用 *.v 方式通配。例如:

iverilog -o tb.vvp *.v

完整示例

下面是在 Ubuntu 上安装和配置 Icarus Verilog 与 GTKWave(用来仿真和查看波形)的详细步骤。你只需按顺序在终端执行下面这些命令即可。


1. 安装 Icarus Verilog 和 GTKWave

sudo apt update
sudo apt install iverilog gtkwave

2. 创建工作目录

mkdir ~/verilog_test
cd ~/verilog_test

3. 新建设计文件和测试平台

3.1 创建 adder.v

cat > adder.v << 'EOF'
module adder(
    input  [3:0] a,
    input  [3:0] b,
    output [4:0] sum
);
    assign sum = a + b;
endmodule
EOF

3.2 创建 tb_adder.v

cat > tb_adder.v << 'EOF'
`timescale 1ns/1ps
module tb_adder;
    reg  [3:0] a;
    reg  [3:0] b;
    wire [4:0] sum;

    adder uut (
        .a(a),
        .b(b),
        .sum(sum)
    );

    initial begin
        $dumpfile("adder_tb.vcd");
        $dumpvars(0, tb_adder);

        a = 4'd3;  b = 4'd5;  #10;
        $display("a=%d, b=%d, sum=%d", a, b, sum);

        a = 4'd7;  b = 4'd8;  #10;
        $display("a=%d, b=%d, sum=%d", a, b, sum);

        a = 4'd15; b = 4'd15; #10;
        $display("a=%d, b=%d, sum=%d", a, b, sum);

        $finish;
    end
endmodule
EOF

4. 编译仿真

iverilog -o adder_tb.vvp tb_adder.v adder.v

5. 运行仿真

vvp adder_tb.vvp

你会看到类似如下输出:

a=3, b=5, sum=8
a=7, b=8, sum=15
a=15, b=15, sum=30

6. 查看波形(可选)

gtkwave adder_tb.vcd

会弹出 GTKWave,可以看到所有信号的波形。


总结

  1. 安装工具
  2. 编写 Verilog 源码和 testbench
  3. 编译
  4. 仿真
  5. 可选:看波形

结语

第三百五十三篇博文写完,开心!!!!

今天,也是充满希望的一天。


文章作者: LuYF-Lemon-love
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuYF-Lemon-love !
  目录