FPGA 调试清单
分层定位
跳转到“分层定位”flowchart TD A["电源与器件温度"] --> B["JTAG / 配置状态"] --> C["输入时钟与锁定"] C --> D["各域复位释放"] --> E["物理接口"] --> F["协议与数据流"] --> G["持续吞吐与异常恢复"]不要一开始就抓业务深处波形。底层前提未成立时,上层现象通常没有诊断价值。
上板前
跳转到“上板前”- Testbench 自检通过,覆盖复位、边界、背压和错误恢复。
- lint、CDC、DRC、建立/保持和未约束路径已检查。
- 顶层引脚、电平标准、时钟频率、差分极性和器件型号与原理图一致。
- 构建版本可追溯:Git SHA、工具版本、IP 参数和 bitstream 时间戳可记录。
上板顺序
跳转到“上板顺序”- 测电源轨、上电顺序、参考时钟和 JTAG 链。
- 确认
DONE/INIT_B等配置状态和实际加载镜像版本。 - 用简单计数器/心跳确认主时钟域工作,不生成逻辑分频时钟。
- 观察 PLL/MMCM lock 与各时钟域复位释放。
- 先用已知测试源/环回验证接口,再接真实 ADC、PCIe 或外设。
- 在每个边界记录输入计数、输出计数、丢包、溢出、下溢和最后错误码。
ILA 使用
跳转到“ILA 使用”- 按探针所属时钟域安排 ILA;需要跨域送入同一个采样域时,使用与信号语义匹配的 CDC。多位数据不能仅每位各打两拍就宣称是同一时刻的快照。
- 采样时钟应持续运行且满足 ILA 要求;触发计数以该时钟为基准。看到的离散样本不能直接显示模拟亚稳过程。
- 触发条件围绕异常前因,例如
valid && !ready持续、FIFO overflow、状态机进入 ERROR。 - 缓冲深度有限,优先抓控制、计数器和摘要,不要无目的抓整条宽总线。
MARK_DEBUG和 ILA 会改变布局与时序;加入探针后重新检查时序。
常见现象
跳转到“常见现象”| 现象 | 优先检查 |
|---|---|
| JTAG 可下发,断电后不启动 | 启动模式、Flash 型号/宽度、镜像地址、配置状态脚 |
| 偶发丢数 | CDC、valid/ready、FIFO 深度、背压和溢出处理 |
| 仿真正常、上板异常 | 未初始化状态、异步输入、约束、时序、I/O 电气 |
| 降低频率后恢复 | 建立时序或外部接口裕量;仍需读报告定位 |
| 复位后偶发卡死 | 异步释放、跨域复位、状态机/握手双方初始化顺序 |
调试记录应明确区分“仿真通过”“实现通过”“基础链路实测”和“完整业务实测”,避免把阶段性结果扩大成产品结论。