feat:接入iverilog工具

- 将iverilog可以随着插件的下载而下载
- 用户输入自然语言就可以控制生成对应的VCD文件
This commit is contained in:
Roe-xin
2025-12-15 11:09:03 +08:00
parent 94225a3525
commit 22b9a0ed13
71 changed files with 2020 additions and 87 deletions

247
tools/iverilog/README.md Normal file
View File

@ -0,0 +1,247 @@
# 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 许可证。