Menu

Icarus Verilog 安装教程:Windows、macOS 与 Linux(2026)

安装 Icarus Verilog 和 GTKWave,在本地编译和仿真 Verilog。也可以跳过安装,直接用浏览器编辑器,两种方式都能学完这套文档。

先说实话

学习 Verilog 不需要安装任何东西。这套文档中的每个交互式编辑器,都在沙盒里用 Icarus Verilog 运行真正的 Verilog,还自带波形查看器。如果你只是来学这门语言,可以跳过这一页,等到想在本地做一个更大的项目时再回来。

还是想在本地安装?那就继续往下看。

“安装 Verilog”到底指什么

Verilog 是一门语言,不是一个程序。要运行它,你需要:

  1. 一个仿真器:编译并运行 .v 文件的工具。对大多数学习者来说,就是 Icarus Verilog,它提供 iverilog 编译器和 vvp 运行时。
  2. 一个波形查看器:通常是 GTKWave,用来读取测试平台生成的 .vcd 文件。
  3. 一个文本编辑器:常见的选择是装了 Verilog 扩展的 VS Code,不过用什么都行。

厂商工具链(Xilinx Vivado、Intel Quartus、Synopsys VCS、Cadence Xcelium)是用于 FPGA 编程和 ASIC 开发的。它们体积庞大,通常需要许可证,用来学习就大材小用了。用 Icarus 就好。

在 macOS 上安装

最快的方式是用 Homebrew:

brew install icarus-verilog gtkwave

这会同时安装编译器和波形查看器。验证一下:

iverilog -V
gtkwave --version

你应该能看到两者的版本号。iverilog 会自动加入你的 PATH。GTKWave 会在 /Applications 下安装一个应用程序,同时提供一个可以在终端启动的 gtkwave 命令。

如果还没有安装 Homebrew,先按照 brew.sh 上的说明安装(只需一条 curl 命令),然后再回来。

在 Linux 上安装

在基于 Debian 的发行版上(Ubuntu、Mint、Pop!_OS):

sudo apt update
sudo apt install iverilog gtkwave

在 Fedora / RHEL 系的系统上:

sudo dnf install iverilog gtkwave

在 Arch 上:

sudo pacman -S iverilog gtkwave

然后用同样的方法验证:

iverilog -V
gtkwave --version

软件仓库中的版本有时会比上游落后一个版本。对大多数学习场景来说没有影响。如果你需要更新的版本,可以从源码编译:项目的 GitHub 仓库里有说明,只需执行 ./configure && make && sudo make install。

在 Windows 上安装

最简单的方法是使用 iverilog 社区在 bleyer.org 上维护的预编译安装程序(搜索“iverilog Windows”)。它打包了 Icarus Verilog、GTKWave,以及 Icarus 内部需要的 GCC 工具链。

  1. 下载最新的安装程序(通常是 iverilog-vXX-setup.exe)。
  2. 运行它。除非有特别的理由,否则全部使用默认选项。
  3. 安装程序询问时,保持“Add to PATH”处于勾选状态。
  4. 打开一个新的 PowerShell 或命令提示符窗口,验证安装:
iverilog -V
gtkwave --version

如果忘了添加到 PATH,程序通常位于 C:\iverilog\bin\iverilog.exe 这样的位置。你可以在“系统属性”中把 C:\iverilog\bin 添加到用户 PATH,或者重新运行安装程序并勾选该选项。

在 Windows 上,WSL2 也是不错的选择:从 Microsoft Store 安装 Ubuntu,然后在其中按照 Linux 的说明操作。这样你会得到一个更熟悉的类 Unix 工作流。

编译并运行你的第一个文件

安装完成后,工作流程是这样的。把下面的代码保存为 hello.v:

module hello;
    initial begin
        $display("hello from verilog");
        $finish;
    end
endmodule

把它编译成一个仿真程序:

iverilog -o hello hello.v

iverilog 是编译器,-o hello 指定输出文件名,hello.v 是你的源文件。

运行仿真:

vvp hello

你应该会看到:

hello from verilog

本地的完整流程就是这样。接下来,你可以把设计拆分到多个文件中(iverilog -o sim *.v),用 -g2012 参数启用 SystemVerilog-2012 特性,或者把输出交给你自己的脚本处理。

生成并查看波形

在测试平台中加入 $dumpfile 和 $dumpvars,运行它,然后在 GTKWave 中打开生成的 VCD:

initial begin
    $dumpfile("dump.vcd");
    $dumpvars(0, test);
    // ...
end

vvp sim 执行完后,你的源文件旁边会多出一个 dump.vcd。打开它:

gtkwave dump.vcd

GTKWave 加载文件后,会在左侧显示信号树。把你关心的信号拖到右侧的波形区域。Dumpfile 与 VCD 中有详细讲解。

常见错误

iverilog: command not found:程序不在你的 PATH 中。在 Windows 上,这通常意味着运行安装程序时没有启用 PATH 更新。在 macOS/Linux 上,通常是 Homebrew/apt 没有执行完,或者你所在的 shell 还没有重新加载 PATH(关闭终端再重新打开)。

看起来正确的行报 syntax error:检查一下你是不是在普通 Verilog 模式下用了 SystemVerilog 的特性。给 iverilog 加上 -g2012 来启用 SystemVerilog-2012:

iverilog -g2012 -o sim main.v

编译时提示 Unknown module:要么是模块的源文件没有传给 iverilog,要么是实例化时写的模块名和 module 声明不完全一致。Verilog 区分大小写。

GTKWave 中的波形是空的:你的测试平台没有调用 $dumpfile 和 $dumpvars,或者仿真在任何信号变化之前就执行到了 $finish。至少加一个 $dumpvars(0, top),并让仿真运行足够长的时间,产生信号跳变。

接下来

无论你是在本地安装了,还是继续使用浏览器,下一篇文档都会带你从零开始写出第一个完整的模块:模块声明、端口、一小段组合逻辑,以及围绕它的测试平台。

常见问题

如何安装 Verilog?

并没有一个叫“Verilog”的程序:它是一门语言,你要安装的是编译器/仿真器。学习时的标准选择是 Icarus Verilog(iverilog 和 vvp 命令),搭配用来查看波形的 GTKWave。macOS 上用 brew install icarus-verilog gtkwave;Debian/Ubuntu 上用 apt install iverilog gtkwave;Windows 上从 Bleyer 网站下载预编译的安装程序。

学习 Verilog 必须安装软件吗?

不必。本页的编辑器会在云端用 iverilog 和 vvp 运行你的代码,并直接在页面中显示 VCD 波形。不安装任何东西,你也能学完这套教程的每一篇文档。当你想保存文件、用版本控制管理项目,或者设计规模大到浏览器编辑器装不下时,本地安装才会派上用场。

iverilog 和 vvp 有什么区别?

iverilog 是编译器,它把 .v 源文件编译成一个仿真程序。vvp 是执行这个程序的运行时。典型的命令顺序是先 iverilog -o sim main.v test.v,再 vvp sim。大多数工作流脚本会把这两步包装在一起。

Icarus Verilog 是免费的吗?

是的。Icarus Verilog 是基于 GPL/LGPL 的开源软件。没有许可证服务器,没有试用期,学习和商业用途都可以使用。商业替代品(ModelSim、VCS、Xcelium)都是付费的;对于这套文档涉及的所有内容,Icarus 就够用了。

如何查看 iverilog 的版本?

打开终端,运行 iverilog -V。你应该会看到类似 Icarus Verilog version 12.0 的版本号。如果提示“command not found”,说明这个程序不在你的 PATH 中:重新运行安装程序,或者把 bin 目录添加到 shell 配置中。

Coddy 编程语言插图

和 Coddy 一起学编程

开始