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_dvrxd 的时序关系
- [ ] 确认 tx_entxd 的延迟
- [ ] 测量从输入到输出的时延 (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 分

考核流程

  1. 学员打开 Verdi 演示基本操作
  2. 现场讲解时序分析结果
  3. 演示信号追踪方法
  4. 讲解错误波形的分析过程
  5. 提交 2 份报告文档