# Iverilog 工具安装指南

## 自动安装（推荐）

插件会自动使用打包在 `tools/iverilog/bin/` 目录中的 iverilog 工具。

## 手动安装步骤

如果需要手动更新或安装 iverilog 工具，请按照以下步骤操作：

### Windows x64

1. **下载安装包**
   - 访问：http://bleyer.org/icarus/
   - 下载：`iverilog-v12-20220611-x64_setup.exe` (18.2MB)
   - 或直接下载：http://bleyer.org/icarus/iverilog-v12-20220611-x64_setup.exe

2. **安装到临时目录**
   - 运行安装程序
   - 选择安装路径（例如：`C:\iverilog-temp`）
   - 完成安装

3. **复制必要文件**

   将以下文件从安装目录复制到 `tools/iverilog/bin/`：

   **核心可执行文件：**
   - `iverilog.exe` - Verilog 编译器
   - `vvp.exe` - Verilog 仿真器

   **依赖的 DLL 文件：**
   - `libgcc_s_seh-1.dll`
   - `libwinpthread-1.dll`
   - `libstdc++-6.dll`
   - 以及其他可能需要的 DLL 文件

   **库文件目录（重要）：**
   - 复制整个 `lib/ivl/` 目录到 `tools/iverilog/lib/ivl/`
   - 这个目录包含 iverilog 的标准库和模块

4. **目录结构**

   最终的目录结构应该是：
   ```
   tools/
   └── iverilog/
       ├── bin/
       │   ├── iverilog.exe
       │   ├── vvp.exe
       │   ├── libgcc_s_seh-1.dll
       │   ├── libwinpthread-1.dll
       │   └── libstdc++-6.dll
       ├── lib/
       │   └── ivl/
       │       ├── system.vpi
       │       ├── v2005_math.vpi
       │       └── ... (其他库文件)
       └── README.md
   ```

5. **清理**
   - 可以卸载临时安装的 iverilog
   - 删除临时安装目录

### 验证安装

在命令行中运行：

```bash
cd "D:\IC Coder Plugin\ic-coder\tools\iverilog\bin"
.\iverilog.exe -V
```

应该看到类似输出：
```
Icarus Verilog version 12.0 (stable) (s20220611-xxx)
```

## 文件清单

### 必需文件（约 5-10 MB）

**bin/ 目录：**
- iverilog.exe (~2MB)
- vvp.exe (~1MB)
- libgcc_s_seh-1.dll
- libwinpthread-1.dll
- libstdc++-6.dll

**lib/ivl/ 目录：**
- system.vpi
- v2005_math.vpi
- vhdl_sys.vpi
- vhdl_textio.vpi
- va_math.vpi
- 以及其他 .vpi 和 .vpl 文件

## 许可证

Icarus Verilog 使用 GPL v2+ 许可证。

- 官方网站：http://iverilog.icarus.com/
- 源代码：https://github.com/steveicarus/iverilog
- 许可证：https://github.com/steveicarus/iverilog/blob/master/COPYING

## 注意事项

1. **文件大小**：完整的 iverilog 工具约 5-10 MB（不包含 GTKWave）
2. **依赖项**：确保复制所有必需的 DLL 文件
3. **库文件**：lib/ivl/ 目录是必需的，包含 Verilog 标准库
4. **版本**：推荐使用 v12.0 或更高版本

## 故障排除

### 问题：运行时提示缺少 DLL

**解决方案**：
- 使用 Dependency Walker 或 Dependencies.exe 检查缺少的 DLL
- 从 iverilog 安装目录复制缺少的 DLL 到 bin/ 目录

### 问题：编译时提示找不到标准库

**解决方案**：
- 确保 lib/ivl/ 目录存在且包含所有 .vpi 文件
- 检查 iverilog 是否能找到库文件路径

### 问题：vvp 运行失败

**解决方案**：
- 确保 vvp.exe 和相关 DLL 都在 bin/ 目录中
- 检查是否有权限问题
