# Iverilog 测试示例 这个目录包含一个简单的 Verilog 项目示例,用于测试 IC Coder 插件的 VCD 生成功能。 ## 文件说明 - **counter.v** - 一个简单的 4 位计数器模块 - **counter_tb.v** - 计数器的测试平台(testbench) ## 功能说明 ### counter.v(顶层模块) 这是一个同步复位的 4 位计数器: - **输入**: - `clk` - 时钟信号 - `rst_n` - 低电平有效的复位信号 - **输出**: - `count[3:0]` - 4 位计数值(0-15) ### counter_tb.v(测试平台) 测试平台包含: - 时钟生成器(100MHz,周期 10ns) - 复位序列(初始复位 20ns) - VCD 波形文件生成 - 信号监控和显示 ## 使用方法 ### 方法 1:使用 IC Coder 插件(推荐) 1. 在 VS Code 中打开这个 `examples` 目录作为工作区 2. 打开 IC Coder 插件面板 3. 在聊天框中输入以下任一命令: - `生成 VCD` - `运行仿真` - `生成波形` 4. 插件会自动编译并运行仿真,生成 `output.vcd` 文件 ### 方法 2:手动运行(用于测试) 在命令行中执行: ```bash # 进入示例目录 cd "D:\IC Coder Plugin\ic-coder\tools\iverilog\examples" # 编译 Verilog 文件 "D:\IC Coder Plugin\ic-coder\tools\iverilog\bin\iverilog.exe" -o simulation.vvp counter.v counter_tb.v # 运行仿真 "D:\IC Coder Plugin\ic-coder\tools\iverilog\bin\vvp.exe" simulation.vvp # 查看生成的 VCD 文件 ls -lh output.vcd ``` ## 预期输出 ### 控制台输出 ``` Time=0 ns, rst_n=0, count=0 (0x0) Time=20 ns, rst_n=1, count=0 (0x0) Time=25 ns, rst_n=1, count=1 (0x1) Time=35 ns, rst_n=1, count=2 (0x2) Time=45 ns, rst_n=1, count=3 (0x3) ... Time=215 ns, rst_n=1, count=15 (0xf) Final count value: 15 ``` ### 生成的文件 - **simulation.vvp** - 编译后的中间文件(可以删除) - **output.vcd** - VCD 波形文件(约 2-5 KB) ## 查看波形 使用 GTKWave 查看生成的 VCD 文件: ```bash gtkwave output.vcd ``` 在 GTKWave 中: 1. 在左侧 SST 窗口选择 `counter_tb` 2. 将信号 `clk`、`rst_n`、`count[3:0]` 拖到波形窗口 3. 点击 "Zoom Fit" 查看完整波形 ## 波形说明 你应该能看到: - **clk** - 规则的时钟信号(10ns 周期) - **rst_n** - 初始 20ns 为低电平,然后保持高电平 - **count** - 从 0 开始递增到 15 的计数值 ## 故障排除 ### 问题:编译失败 **检查**: - 确认 iverilog.exe 在 `tools/iverilog/bin/` 目录中 - 确认所有 DLL 文件都已复制 ### 问题:VCD 文件未生成 **检查**: - testbench 中是否包含 `$dumpfile("output.vcd");` - testbench 中是否包含 `$dumpvars(0, counter_tb);` - 仿真是否正常结束(有 `$finish;`) ### 问题:路径错误 **解决**: - 确保在正确的工作区目录中运行 - 检查路径中是否有特殊字符 ## 扩展练习 你可以修改这个示例来学习: 1. **修改计数器位宽**:将 4 位改为 8 位 2. **添加使能信号**:只在使能时计数 3. **添加加载功能**:可以加载初始值 4. **创建递减计数器**:向下计数 5. **添加溢出标志**:计数到最大值时输出标志 ## 参考资料 - Verilog 语法:https://www.asic-world.com/verilog/ - Icarus Verilog 文档:http://iverilog.icarus.com/ - GTKWave 使用:http://gtkwave.sourceforge.net/