01
调试基础
什么是仿真调试,调试的核心目的与价值,调试在开发流程中的位置。
入门概念
02
调试工具链
常用仿真器介绍(VCS, Modelsim, Iverilog),工具链的搭建与配置。
工具环境
03
波形调试入门
波形文件格式(VCD, FSDB),如何生成波形,波形查看器的基本使用。
波形VCD
04
波形调试进阶
信号追踪技巧,利用波形定位Bug,波形分组与颜色标记。
进阶技巧
05
日志调试
$display与$monitor的使用,格式化输出,日志级别管理。
日志SystemVerilog
06
文件IO调试
从文件读取测试向量,将调试信息写入文件,文件操作常见陷阱。
文件IO
07
断点调试
如何在仿真器中设置断点,条件断点,步进执行与单步调试。
断点调试
08
层次化调试
跨模块信号追踪,层次路径引用,$test$plusargs的使用。
层次模块
09
调试策略
二分法定位Bug,假设驱动调试法,复现与最小化测试用例。
策略方法论
10
常见Bug类型
竞争冒险、亚稳态、位宽不匹配、状态机死锁,实战案例分析。
Bug案例
11
断言基础
什么是断言,断言的目的(验证而非调试),断言与假设的区别。
断言SVA
12
立即断言
立即断言语法,在initial/always块中使用,简单应用场景。
立即断言语法
13
并发断言基础
并发断言语法,断言时钟域,断言触发条件。
并发时钟
14
序列与属性
sequence定义,property定义,序列的拼接与重复。
sequenceproperty
15
蕴含操作符
蕴含操作符(|->, |=>),重叠与非重叠蕴含,应用实例。
蕴含操作符
16
内建函数
$rose, $fell, $stable, $past, $onehot等内建函数的使用。
函数内建
17
断言覆盖率
cover property的使用,覆盖率收集,如何分析断言覆盖率报告。
覆盖率cover
18
断言绑定
bind语句的用法,将断言绑定到设计模块,模块复用与断言分离。
bind模块
19
断言宏
`assert, `assume, `cover宏,宏定义的最佳实践。
宏预处理
20
断言调试
断言失败时的信息输出,$fatal, $error, $warning的使用。
调试信息
21
形式化验证入门
形式化验证与动态仿真的区别,形式化工具简介。
形式化验证
22
断言在形式化中的应用
如何为形式化编写断言,约束与假设的平衡。
形式化约束
23
实战项目一:FIFO验证
使用断言检查FIFO满空标志,读写指针回绕。
FIFO项目
24
实战项目二:状态机验证
使用断言检查状态转换合法性,非法状态检测。
FSM状态机
25
实战项目三:APB协议验证
使用断言检查APB协议时序。
APB总线
26
实战项目四:握手协议验证
valid-ready握手协议断言编写。
握手valid-ready
27
自动化回归测试
回归测试脚本编写,断言结果自动解析,报告生成。
回归自动化
28
调试与断言协同
如何用断言指导调试,调试过程中临时添加断言。
协同技巧
29
性能优化
仿真性能分析,断言开关控制,编译选项优化。
性能优化
30
综合实战
从零搭建一个带断言验证的仿真环境,完整流程演练。
综合实战