在大多数情况下,我的实验室工作主要是对一个组件或系统进行特性分析或验证。但是,当碰到设计团队遇到非常难解决的重大问题,当他们的设计不能运行的时候,我偶尔也会去到某个实验室。
现在,我不介意DUT始终不工作的情况。(在这种情况下,失败的)根本原因是可重现的,并且通常是显而易见的原因。让我觉得痛苦的一种情况是,客户对我说:“系统会间歇性地锁定”。
在上个月的某一天下午我就遇到了这样的事。也许让你了解我们调试这一系统所采取的步骤和在此过程中学到的经验会是件有趣的事。
第1课:当我听到“偶尔失效”或“就在我说话的时候发生了”这样的话时,首先要做的第一件事情是拿起电话,重新安排我第二天晚上的航班,再预定一个房间并确定会在晚一点的时候登记入住。
在安排好第二天晚上的行程后,接下来就要去了解被测的设备出了什么问题。
第2课:当你开始调试的时候,客户的板卡是从来不会有任何问题的。问题总是出在我的测试设备上—“我觉得问题在于你的设备有漏洞或其它问题。”
下一步是将排除DUT中的模块或子系统存在故障。我们使用的方法是更换子系统,直到我们找到发生故障的单元。经过2小时的折腾,在更换处理器板、DSP加速器模块、自定义显示屏ASIC、内存DIMM、电源、连接器和电缆后,问题…..依然存在,只是故障发生的频率没有那么频繁了。
第3课:有时,问题在于防火墙,而不是硬件。在经过仔细研究操作手册之后,我们下载补丁、对FPGA重新编程,然后,哇,系统锁定的情况也好转了。
再回到更换模块。当我们用黄金参考模块换掉参考时钟分频模块后,问题消失了。
第4课:许多高速连接器不能接受重复性地插入和拔出。
下一步是要让DUT的时钟分频模块持续失败,这样我们才可能找到根本原因。我们无法再直接仿真模块,因为它有自己的晶体振荡器,并且实验室没有温控烘箱。因此,对它用的是冷、热风枪。好消息:随着PLL分频计数器的温度升高,故障重新出现!
坏消息和第5课:热风枪是设计用于回流焊接剂的,不能用其取代温控烘箱。
在找到合适的技术资源来取代BGA之后,已经是吃晚饭的时间了。并且我们不用走很远。如果你晚上9点后呆在实验室,小吃和饮料都是免费的!
第6课:巴甫洛夫是对的---将食物作为一种奖励。
既然我们不能再重复强迫故障发生,那我们现在必须要物理性地探测各个时钟节点,并重复操作以捕获故障的发生。