Files
IC-Coder-Plugin/tools/iverilog/README.md
Roe-xin 22b9a0ed13 feat:接入iverilog工具
- 将iverilog可以随着插件的下载而下载
- 用户输入自然语言就可以控制生成对应的VCD文件
2025-12-15 11:09:03 +08:00

248 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Iverilog 工具集成说明
本插件**已集成** Icarus Verilog (iverilog) 工具,用于 Verilog 代码的编译和仿真,以及 VCD 波形文件的生成。
## 目录结构
```
tools/
└── iverilog/
├── bin/ # 可执行文件目录(已包含 iverilog 工具)
│ ├── iverilog.exe # Verilog 编译器 (Windows)
│ ├── vvp.exe # Verilog 仿真器 (Windows)
│ └── ... # 其他依赖文件
└── README.md # 本说明文件
```
## 工具说明
插件包中**已包含** Windows x64 版本的 iverilog 工具,无需额外安装。
- **版本**: Icarus Verilog 11.0 (或更高)
- **平台**: Windows x64
- **许可证**: GPL v2+
### Windows 安装
1. 访问 Icarus Verilog 官方网站http://bleyer.org/icarus/
2. 下载最新的 Windows 安装包例如iverilog-v11-20210204-x64_setup.exe
3. 运行安装程序,按照提示完成安装
4. 安装完成后,将以下文件复制到插件的 `tools/iverilog/bin/` 目录:
- `iverilog.exe`
- `vvp.exe`
- 以及相关的 DLL 文件(如果有)
**或者**,将 iverilog 安装目录添加到系统 PATH 环境变量中,插件会自动使用系统安装的版本。
### macOS 安装
使用 Homebrew 安装:
```bash
brew install icarus-verilog
```
安装完成后iverilog 会自动添加到系统 PATH 中,插件可以直接使用。
**可选**:如果想将 iverilog 打包到插件中,可以将以下文件复制到 `tools/iverilog/bin/`
- `/usr/local/bin/iverilog`
- `/usr/local/bin/vvp`
### Linux 安装
#### Ubuntu/Debian
```bash
sudo apt-get update
sudo apt-get install iverilog
```
#### Fedora/CentOS
```bash
sudo yum install iverilog
```
#### Arch Linux
```bash
sudo pacman -S iverilog
```
安装完成后iverilog 会自动添加到系统 PATH 中,插件可以直接使用。
## 使用方法
### 1. 准备 Verilog 项目
确保您的项目包含以下文件:
- **顶层模块文件**:包含您的设计代码(例如:`counter.v`
- **Testbench 文件**:包含测试代码,文件名通常包含 `tb``test`(例如:`counter_tb.v`
### 2. Testbench 要求
为了生成 VCD 波形文件,您的 testbench 必须包含以下语句:
```verilog
module counter_tb;
// ... 信号声明 ...
initial begin
// 生成 VCD 文件
$dumpfile("output.vcd"); // 指定 VCD 文件名
$dumpvars(0, counter_tb); // 记录所有信号
// ... 测试代码 ...
#1000 $finish; // 结束仿真
end
// ... 其他测试代码 ...
endmodule
```
### 3. 生成 VCD 文件
在 IC Coder 插件的聊天界面中,输入以下任一命令:
- `生成 VCD`
- `创建 VCD`
- `运行仿真`
- `执行仿真`
- `生成波形`
插件会自动:
1. 检查项目文件完整性
2. 使用 iverilog 编译所有 Verilog 文件
3. 使用 vvp 运行仿真
4. 在项目根目录生成 `output.vcd` 文件
### 4. 查看波形
生成的 VCD 文件可以使用以下工具查看:
- **GTKWave**(推荐):开源波形查看器
- Windows: http://gtkwave.sourceforge.net/
- macOS: `brew install gtkwave`
- Linux: `sudo apt-get install gtkwave`
- **其他工具**
- ModelSim
- Vivado
- 在线 VCD 查看器
## 示例项目
### counter.v顶层模块
```verilog
module counter (
input clk,
input rst_n,
output reg [3:0] count
);
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
count <= 4'b0000;
else
count <= count + 1;
end
endmodule
```
### counter_tb.vTestbench
```verilog
`timescale 1ns/1ps
module counter_tb;
reg clk;
reg rst_n;
wire [3:0] count;
// 实例化被测模块
counter uut (
.clk(clk),
.rst_n(rst_n),
.count(count)
);
// 生成时钟信号
initial begin
clk = 0;
forever #5 clk = ~clk; // 10ns 周期
end
// 测试序列
initial begin
// 生成 VCD 文件
$dumpfile("output.vcd");
$dumpvars(0, counter_tb);
// 初始化
rst_n = 0;
#20;
// 释放复位
rst_n = 1;
#200;
// 结束仿真
$finish;
end
// 监控输出
initial begin
$monitor("Time=%0t rst_n=%b count=%d", $time, rst_n, count);
end
endmodule
```
## 故障排除
### 问题:提示 "iverilog 不可用"
**解决方案**
1. 确认已安装 iverilog
2. 检查 iverilog 是否在系统 PATH 中:
- Windows: 在命令提示符中运行 `iverilog -V`
- macOS/Linux: 在终端中运行 `iverilog -V`
3. 或者将 iverilog 可执行文件复制到 `tools/iverilog/bin/` 目录
### 问题:提示 "项目文件不完整"
**解决方案**
1. 确保项目中至少有一个 `.v``.sv` 文件
2. 确保有 testbench 文件(文件名包含 `tb``test`
3. 确保 testbench 中包含 `$dumpfile``$dumpvars` 语句
### 问题:编译失败
**解决方案**
1. 检查 Verilog 代码语法错误
2. 查看错误输出信息
3. 确保所有模块都正确实例化
### 问题VCD 文件未生成
**解决方案**
1. 确保 testbench 中包含 `$dumpfile("output.vcd")` 语句
2. 确保 testbench 中包含 `$dumpvars` 语句
3. 确保仿真运行了足够的时间(使用 `#时间 $finish;`
## 版本信息
- 推荐 Icarus Verilog 版本v11.0 或更高
- 支持的 Verilog 标准Verilog-1995, Verilog-2001, Verilog-2005, SystemVerilog (部分)
## 相关链接
- Icarus Verilog 官网http://iverilog.icarus.com/
- GTKWave 官网http://gtkwave.sourceforge.net/
- Verilog 教程https://www.asic-world.com/verilog/
## 许可证
Icarus Verilog 是开源软件,遵循 GPL 许可证。