practice_templates/basic_03/eda_waveform/README.md
基础实践 3-3: EDA 波形分析与调试实践
📚 知识点
| 知识点 | 说明 |
|---|---|
| Verdi 基础操作 | 打开波形、添加信号、缩放、标记 |
| 波形分析方法 | 时序关系、协议握手、数据流追踪 |
| 信号搜索 | 在设计层次中定位信号 |
| 调试技巧 | 断点、单步、前向/后向追踪 |
| 波形对比 | 对比正确和错误波形找差异 |
🎯 任务目标
任务 1: Verdi 基本操作 (25 分)
运行仿真并用 Verdi 打开波形:
- [ ] 使用 make run 编译运行仿真
- [ ] 使用 make wave 打开波形
- [ ] 在波形窗口添加以下信号: clk, rst_n, rxd, rx_dv, txd, tx_en
- [ ] 缩放到第一个数据传输窗口
- [ ] 使用 Marker 标记关键时间点
- [ ] 截图提交
任务 2: 协议时序分析 (25 分)
分析 DUT 的输入输出时序:
- [ ] 确认 rx_dv 和 rxd 的时序关系
- [ ] 确认 tx_en 和 txd 的延迟
- [ ] 测量从输入到输出的时延 (clock cycles)
- [ ] 验证数据取反功能是否正确
- [ ] 填写 reports/timing_analysis.md 模板
任务 3: 信号追踪 (25 分)
使用 Verdi 的信号追踪功能:
- [ ] 从 txd 信号反向追踪到 rxd
- [ ] 找到数据在哪个时钟沿被采样
- [ ] 找到数据在哪个时钟沿被输出
- [ ] 使用 nTrace 窗口追踪信号驱动源
- [ ] 在 Schematic 视图中查看信号路径
任务 4: 错误波形分析 (25 分)
运行 make run_buggy 会产生有 bug 的仿真:
- [ ] 对比正确波形和错误波形
- [ ] 找出 3 处信号异常
- [ ] 分析异常原因
- [ ] 填写 reports/debug_report.md
📁 文件结构
├── rtl/
│ ├── dut.sv ← 正确的 DUT
│ └── dut_buggy.sv ← 有 bug 的 DUT(用于任务4)
├── env/ ← 完整验证环境
├── reports/
│ ├── timing_analysis.md ← ⭐ TODO: 填写时序分析报告
│ └── debug_report.md ← ⭐ TODO: 填写调试报告
├── Makefile
└── README.md
📝 考核方式
| 考核项 | 分值 | 评估方法 |
|---|---|---|
| Verdi 基本操作 | 25 分 | 提交截图 + 操作演示 |
| 协议时序分析 | 25 分 | timing_analysis.md 内容正确 |
| 信号追踪 | 25 分 | 演示追踪流程 + 说明路径 |
| 错误波形分析 | 25 分 | debug_report.md 找出 3 处异常 |
| 合计 | 100 分 |
通过标准:≥ 60 分
考核流程
- 学员打开 Verdi 演示基本操作
- 现场讲解时序分析结果
- 演示信号追踪方法
- 讲解错误波形的分析过程
- 提交 2 份报告文档