探索TDR的神奇妙用:
说到阻抗测试,那一定对TDR(时域反射计)不会陌生。是的,IPC-TM-650 规范正是推荐的这种阻抗测试方法。包括Intel早期也是推荐的泰克的TDR方案。
TDR是一种在时域中运行的仪器。它由一个高速示波器和一个采样模块组成,用于产生电压阶跃。电压阶跃沿着所研究的传输线向下传播。入射阶跃和反射电压波以代数方式相加,并由示波器在线路上的特定点进行监测。
其核心方法是差分TDR测试设备同时打出两个幅度相等、方向相反的阶跃脉冲,并通过这对差分信号的相互作用直接测出差分走线的阻抗。
原理:信号在某一传输路径传输,当传输路径中发生阻抗变化时,一部分信号会被反射,另一部分信号会继续沿传输路径传输。TDR是通过测量反射波的电压幅度,从而计算出阻抗的变化;同时,只要测量出反射点到信号输出点的时间值,就可以计算出传输路径中阻抗变化点的位置。
但是,泰克的TDR有一个很大的弊端,就是80E04模块非常容易被静电打坏,必须要专人专用,尽一切可能做好静电防护。一般PCB板厂可能会部署。否则坏一次就是2W美金,修到你不如买一台全新的。
现在常用的都是网分(VNA),以是德、罗德这两家为主。考虑到 TDR 和 VNA 都是昂贵的仪器,有时同一个实验室买不起两者,问题是:“对于所需的时域测量,哪种仪器更好?换言之,对于使用 VNA 的连接器制造商来说:“使用 VNA 进行的时域测量是否与使用 TDR 进行的相同测量具有可比性?
VNA是测量DUT的 S 参数,并在频域中显示结果。信号源发出一个连续扫频的正弦波,同时测量入射电压和反射电压的矢量比,获得DUT对频率函数的响应,然后进行IFFT逆傅里叶变换,得到时域上的冲激函数,把冲激函数积分,即可得到阶跃的TDR信号。
此前对同一块主板不同阻值的单端信号、差分信号分别使用泰克TDR(DSA8200)、Keysight(E5071C)、R&S(ZNB20)做过对比测试,三台仪器测试结果曲线趋势完全一致,高低值误差在2ohm以内。哪怕是同一家的两台仪器,也是有可能有这个误差值的。所以测试阻抗,选任何一家都是可以的。
前面简单介绍了一下阻抗测试,但这不是今天的主题。除了阻抗测试,TDR功能还能干什么呢?
以下通过一个真实的案例,来看看它的神奇妙用。
现象描述:某主板含8个DIMM内存槽。首批焊接的主板,出现固定一个槽位DIMM内存训练失败问题,直接表现现象为该槽插入内存则不开机。此板由上一版本改版过来,内存部分原理和线路完全没动,但是变更了叠层。上一版本已批量没有问题。
排查思路及过程:
遇到这个问题,首先肯定是要看内存训练的log,看看训练失败到底卡在哪里。
从log的指向来看,提示内存训练过程中没有找到DQS的上升边沿,怀疑是信号问题。
于是,开始测试DQS与DQ训练阶段信号,发现此异常槽DQS信号持续低电平,无法满足训练。(蓝色DQS,粉色DQ)异常。
对比测试正常的板子训练时DQS是和DQ一样有脉冲信号的,这确实符合log的提示,无法找到DQS的上升边沿。
再量测故障板DIMM槽DQS信号电压,两根P和N ,一个0.6V,一个1.2V,也确实是异常。
为确定是否真的是DQS异常,显然上述证据链还不够完善,量测故障板DIMM槽DQS对地阻抗,与正常槽位完全一致,说明在硬件通路上是没有问题的,软件完全一致,根据这个信息,确定DQS可以排除主板的异常。至于为什么DQS没有信号,怀疑是训练还没到DQS的Training就已经出现的异常,也有可能是主芯片问题,这个概率极低,先放下。
不是DQS,会不会是其他信号质量不行?如是做了一个最基本的操作:降频验证。软件降频到DDR4最低速率1600Mbps,现象依旧,可以排除SI信号质量问题。
重新检查原理与Layout设计,确认与上一版没有差异。
接着验证时钟信号,为什么要验证时钟信号?因为log指向DQS,毕竟DQS是参考时钟的,如果时钟有问题,说不定DQS也会有问题,从这个层面讲,还真是有关联的。测试后发现异常槽位的时钟信号有干扰,正常槽位没有。
此时,头脑一定要清醒,否则就又要怀疑时钟有问题了。那就走入了前面DQS没有信号一样的怪圈。
为什么说头脑要清醒,因为你必须要去思考到底是Clock异常导致了训练失败,还是训练失败导致芯片发出了异常的Clock信号?
做一个很简单的实验,将内存条的DQS信号遮盖,插在正常槽位,模拟内存训练失败场景,测试结果同样有异常CLK波形,所以确定此干扰应该是内存训练失败CPU自身发出,排除此异常。
说了这么多,跟TDR毫无关系。确实,这个案例本身就跟SI没有关系,当然不是去拿TDR去测那几百根DDR走线的阻抗。就算阻抗做得超出范围,那也不会出现这个故障。而且对于已经焊接的板子,测试阻抗也是很麻烦的。用TDR具体做什么,后面会讲清楚,先继续排查问题。
虽然这个案例不像是电源纹波引起的,但是还是需要去排查一下的,如是测试了内存相关的4个电,均正常。
既然电源、信号都没有遇到问题,那有么有可能是芯片虚焊了,导致某个信号没有连通呢?如是回炉重造,等待见证奇迹的时刻。
奇迹没有出现,故障依旧。
排查至此,同步也在跟芯片厂商沟通。从结果来看,确实同步沟通芯片厂商是非常有必要的。因为芯片厂商给我们开发的log是精简的,更高级的细节是不会开发给客户的,也就是说我们看到的问题指向只是一个粗略并不准确的方向。
使用厂商的debug固件,发现了训练log中更细节的提示。此前我们只能看到第二个红框的提示,给人的误导是DQS信号问题。仔细看正常通道的training过程,1D的基本步骤如下:
step1 控制器初始化
step2 slice内的ADDR/CMD时序调整
step3 ADDR/CMD 与CLK的时序调整
step4 DQS与CLK的时序调整
step5 slice内DQ时序调整
step6 DQ与DQS时序调整
step7 读DQ/DQS眼图调整
step8 写DQ/DQS眼图调整
报错的部分step1 控制器初始化已经完成,step2 slice内的ADDR/CMD时序调整没有继续,也就是说问题是出在这里。根据此信息训练失败还没到DQS信号,应该是更早的地址和命令信号。
于是量测所有的ADDR/CMD信号阻抗,发现异常槽ACT_N管脚阻抗无穷大,有异常。无穷大说明就没负载,CPU和内存槽就没连上。
排查到这里,只能确定这个信号没有连接上,到底是CPU内部故障、主板断线、内存插槽虚焊的问题?
没办法确定。
因此,TDR就派上用场了,只不过不是用它来测试Trace的阻抗值,而是利用TDR时延的原理,TDR的脉冲走到走线的末端开路后,会全部反射回来,这样一个来回的时间相当于2倍走线的时延。
通过TDR测试这条走线的时延,就能基本判断断线的位置。
对比量测故障板和正常板ACT_N信号,全长5797mil,发现故障板传输时延异常,确定故障板ACT_N信号在CPU侧断开,主板断线。
异常板时延1.684ns/2=842ps,这里起点是从-100ps开始,去掉上升沿时间,因此总共大概是912ps。
5797mil的走线大致时延应该是966ps。
正常板时延2.397ns/2=1.2ns, 1.2ns不全是主板走线的时延,还包含了CPU里面的一小段。
966-912=54ps,这是普通板材,介电常数约等于4,大约离CPU 324mil的位置。
排查到这里,可谓是铁证如山。当你把这证据甩到PCB加工板厂脸上,他们如何抵赖?这一批板子全部报废,损失可不小。
为什么会断线?再核查发给板厂的Gerber,是没有问题的。
而板厂投板的确是另一个版本。
经量测,此位置距离CPU位置为374mil。
这个案例正好是在板厂生产的CAM文件中能查出来,如果遇到纯粹加工导致的短路断路问题,我们通过时延的测试方法定位到具体位置,这样切片也能查找到问题,挽回不必要的损失。