前言
本文介绍了 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
总结流程
- 编辑 Verilog 文件和 testbench
- 编译:
iverilog -o tb.vvp tb.v design.v
- 仿真:
vvp tb.vvp
- (可选)用 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,可以看到所有信号的波形。
总结
- 安装工具
- 编写 Verilog 源码和 testbench
- 编译
- 仿真
- 可选:看波形
结语
第三百五十三篇博文写完,开心!!!!
今天,也是充满希望的一天。