practice_templates/deep_02/debug_system_integration/README.md
深度实践 Debug 2-5: 系统集成 Bug 猎人 🐛
📚 背景
一个简化的 SOC 子系统(CPU + AHB 总线 + 2 个 APB 外设)在系统集成时出现了问题。
本练习模拟了真实项目中的系统集成调试场景,包含 6 个 Bug。
🎯 任务目标
rtl/soc_subsystem_buggy.sv 包含 6 个系统级 Bug:
| Bug 编号 | 难度 | 类型 | 提示 |
|---|---|---|---|
| Bug #1 | ⭐⭐ | 地址映射错误 | 外设基地址分配冲突 |
| Bug #2 | ⭐⭐ | 时钟连接 | APB 外设连到了错误的时钟 |
| Bug #3 | ⭐⭐ | 复位连接 | 某个模块复位极性连反 |
| Bug #4 | ⭐⭐⭐ | 信号位宽截断 | AHB→APB 桥数据位宽不匹配 |
| Bug #5 | ⭐⭐⭐ | 中断连接 | 中断信号连到了错误的外设 |
| Bug #6 | ⭐⭐⭐ | 总线仲裁 | 默认 slave 缺失导致 hang |
📁 文件结构
├── rtl/
│ ├── soc_subsystem_buggy.sv ← ⭐ 包含 6 个系统级 Bug
│ ├── soc_subsystem_golden.sv ← 参考正确实现
│ ├── simple_cpu.sv ← CPU 模型 (完整)
│ ├── ahb2apb_bridge.sv ← AHB-APB 桥 (完整)
│ ├── apb_uart.sv ← UART 外设 (完整)
│ └── apb_timer.sv ← Timer 外设 (完整)
├── tb/
│ └── tb_soc_subsystem.sv ← 系统级测试平台
├── Makefile
└── README.md
💡 调试策略
系统级 Bug 的调试需要不同的方法:
1. 地址映射: 检查每个外设的基地址和大小是否冲突
2. 连接检查: 逐个检查时钟、复位、数据、中断的连接
3. 波形分析: 在总线上追踪事务,确认数据路径
4. 分而治之: 先验证单个外设,再验证系统集成
📝 考核方式
| 考核项 | 分值 | 说明 |
|---|---|---|
| 找到 Bug 1-3 | 30 分 | 连接类 Bug |
| 找到 Bug 4-6 | 40 分 | 系统级 Bug |
| 调试过程文档 | 30 分 | 含波形分析 + 调试策略 |
| 合计 | 100 分 |
通过标准:≥ 60 分