我们在DDR 的信号测试中,有时也会遇到DDR 的” 双眼皮”. 如图1:
图1
如图,用泰克DDRA(DDR分析软件)对DDR3-1066的信号累积得到的眼图。因为DQS是差分信号,而DQ是单端的,因此幅度比较大的,有明显的双眼皮的是DQS信号,幅度比较小的是DQ信号。并且这个是一个Write的眼图。
这让我感到非常困惑,理论上DDR信号应该不会出现双眼皮,因为双眼皮意味着它有两种不同的电压。而且这个眼图不仅被割了“双眼皮”,还给割了“眼袋”。
我让客户把原始的.wfm波形发过来,对它做进一步的分析。如图2:
图2
可以看到,这一屏幕的若干个DDR3 burst,除了正常的1.5V幅度的burst以外,还间隔地混杂着幅度只有正常的一半的burst信号。和客户交流后,得知它的DUT是双插槽的双内存条( high loading)。因此我们可以断定,这些欠幅的burst一定来源于待测内存以外的那个内存。
如图3,DDR3使用的是dynamic ODT, 也就是动态的片内终端电阻(on-die termination). 在平时的时候,ODT是disable的,当write command发出后,ODT被打开为normal(值较小), 当DQ数据进来,ODT被置为Write_ODT(较大)。 所以,当另外一条内存在写数据时,待测内存的DQ的ODT其实还处于关闭的状态,没有任何的终端匹配,因此,因此另外一根的内存的write信号”串门”到了没有终端匹配的DUT上,造成图二所示的一系列幅度较低的写信号。
图3
那我们应该如何把这些别的内存的,闯进来的write burst去掉,如何把双眼皮去掉。
-
1. 第一种方法:
在DDRA软件上的”burst detection”, 把默认的“Auto“设置为“Manual”, 然后把Strobe(DQS)的电平拉高。拉高的目的是为了在burst搜索时候避开那些矮脉冲。
图4
-
2. 第二种方法:
同样在Burst Detection的Advanced界面,把hysteresis比例拉高。例如这里由默认的10%拉高到17%。不仅在DDRA,在别的很多泰克软件方案上也有Hysteresis这一选项。Hysteresis的作用主要是去掉波形中位于幅度中央的一些杂波和磁滞,而不把这些波形用于分析。此时拉高Hysteresis目的是为了去掉那些矮脉冲。
图5
-
3. 第三种方法:
也是比较准确和比较方便的一中方法。就是把第一种方法和第二种方法结合起来用,在多内存信号中能得到非常精确的burst分离和辨别。 -
4. 第四种方法:
应该来说是最精准的一种方法,但是也是相对比较麻烦点的方法。我们可以在原来的DQS和DQ的两通道信号输入的情况下,加入CS#信号的输入。我们知道,有效的DQ写入前,必然有个write command, 而write command必然是CS#为低作为该Rank(bank)信号的选通。因此,通过CS#的分辨,能得到非常精准的多内存信号读写分离。如图6:
图6
通过上述的四种方法的任意一种,我们都能把多Rank内存作准确的burst分离,把别的Rank的信号filter掉。如图7,DDRA只Mark到待测内存的burst, 而把别的Rank的内存混进来的信号给精准地去除。还原最原始的,最真实的单眼皮眼图(如图8)。
图7
图8