01
Verilog仿真环境概览
什么是仿真、为什么需要仿真、工具介绍 (Icarus, GTKWave, VCS, ModelSim) 及学习路径
入门概览
02
工欲善其事:安装与配置
Windows/Linux 下 Icarus Verilog 与 GTKWave 安装配置
环境工具链
03
第一个仿真程序
编写门电路,iverilog编译,生成VCD,GTKWave查看波形
实战波形
04
Testbench基础
Testbench结构、module/initial/always、DUT实例化
TB结构
05
时间尺度与延迟
`timescale、#延迟单位/精度、惯性延迟与传输延迟
时序基础
06
initial 块详解
initial特点、多initial并行、生成时钟和复位
initial时钟
07
always 块详解
敏感列表、电平/边沿敏感、组合与时序逻辑建模
always敏感列表
08
赋值语句深入
连续赋值assign、阻塞=、非阻塞<= 区别与应用
赋值阻塞
09
系统任务与函数 (上)
$display, $write, $monitor, $strobe 用法与区别
系统函数打印
10
系统任务与函数 (下)
$time, $realtime, $random, $fopen, $fwrite, $fclose
文件IO随机
11
VCD文件详解
$dumpfile, $dumpvars, $dumpoff, $dumpon 控制波形转存
VCD波形
12
编写高效的Testbench
模块化、`include、parameter/localparam传递
TB优化参数化
13
任务(task)与函数(function)
定义使用task/function,自动任务与静态任务
taskfunction
14
仿真中的循环与条件
for, while, repeat, forever 在Testbench中的应用
循环控制流
15
多维数组与存储器建模
reg [7:0] mem [0:255]、$readmemh/$readmemb
存储器数组
16
有限状态机(FSM)仿真
三段式状态机Testbench,覆盖所有状态跳转
FSM状态机
17
仿真中的竞争与冒险
Verilog调度机制、Delta Cycle、避免竞争
竞争Delta
18
使用Makefile管理仿真
一键编译、运行、清理,传递参数
Makefile自动化
19
脚本化仿真 (Python/Shell)
Python调用iverilog,批量运行,日志解析
脚本Python
20
覆盖率基础
代码覆盖率、翻转覆盖率、FSM覆盖率收集与分析
覆盖率验证
21
断言(SVA)入门
立即断言与并发断言,assert功能检查
断言SVA
22
随机化测试
$random生成随机激励,约束随机化,提高效率
随机约束
23
总线模型仿真 (APB/AXI4-Lite)
APB/AXI4-Lite 简单读写Testbench搭建
总线APB
24
UART接口仿真
UART发送与接收Testbench,验证波特率与数据帧
UART串口
25
SPI接口仿真
SPI主从模式Testbench,验证CPOL/CPHA模式
SPI接口
26
I2C接口仿真
起始/停止条件、读写操作Testbench仿真
I2C协议
27
仿真性能优化
减少波形dump、编译选项、优化Testbench结构
性能优化
28
调试技巧
GTKWave高级功能:信号分组、数学运算、缩放、日志分析
调试GTKWave
29
回归测试
搭建回归测试框架,自动运行所有Testbench并汇总结果
回归自动化
30
课程总结与项目实战
综合运用,完成FIFO等IP的完整仿真验证
项目FIFO