feat:接入iverilog工具
- 将iverilog可以随着插件的下载而下载 - 用户输入自然语言就可以控制生成对应的VCD文件
This commit is contained in:
247
tools/iverilog/README.md
Normal file
247
tools/iverilog/README.md
Normal 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.v(Testbench)
|
||||
|
||||
```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 许可证。
|
||||
Reference in New Issue
Block a user