跳转到内容
新建笔记

FPGA 调试清单

flowchart TD
A["电源与器件温度"] --> B["JTAG / 配置状态"] --> C["输入时钟与锁定"]
C --> D["各域复位释放"] --> E["物理接口"] --> F["协议与数据流"] --> G["持续吞吐与异常恢复"]

不要一开始就抓业务深处波形。底层前提未成立时,上层现象通常没有诊断价值。

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

调试记录应明确区分“仿真通过”“实现通过”“基础链路实测”和“完整业务实测”,避免把阶段性结果扩大成产品结论。