DDR 走线明明等长,为什么还会差 15 皮秒(ps)?

一根 DQ 和它对应的 DQS 都走了 37 mm。PCB 工具显示两者等长,算出来却是 DQ 早到 15 ps。差异来自两根线在外层和内层的分布。外层微带线与内层带状线的传播速度不同,同样的 37 mm,可以对应不同的到达时间。

15 ps 有多大?以 AMD《Zynq-7000 SoC PCB Design Guide》UG933 第 65 页为例,DDR3/DDR3L 的 DQ 对 DQS 延时匹配基准是 ±10 ps。按这个基准,两根几何等长的线已经超限。

DDR布线延时与时序裕量

一、先确定每根线该和谁比

DDR 接口上,数据、命令和时钟使用不同的采样基准。拿到走线报告,先确定接收端、参考信号和偏斜方向。

  • DQ/DM 对 DQS。每根数据线和适用的数据掩码线,都与本字节通道的 DQS 比较。一个通道里最早和最晚到达的数据位,会压缩所有数据位共同可用的采样窗口。
  • 命令、地址、控制对 CK。在每颗 DRAM 的接收端,将各受约束信号与同一颗器件接收到的 CK 比较。
  • 写 DQS 对 CK。对每个字节通道计算两者到达同一颗 DRAM 的时间差。这个时间差影响写入校准所需的调整量。
  • 差分对的 P 对 N。CK 和 DQS 各自的两支都要检查。即使两支延时的平均值合适,对内偏斜仍可能改变接收端的差分交越时刻。

在 fly-by 拓扑中,CK 和命令、地址主干依次经过多个负载。应分别提取到每颗 DRAM 的路径。主干末端到终端电阻的尾段属于仿真网络,会影响反射和接收波形。点到点线长则量到指定的 DRAM 焊球为止。

二、把线长换成皮秒

PCB 路径延时可以这样估算。

PCB 路径延时 = Σ(各层走线长度 × 该层单位长度延时)+ Σ(路径经过的过孔延时)

外层、内层的单位长度延时应根据实际叠层计算。初算时,至少掌握每段走线所在层、对应介质和参考平面。混层较多、偏斜预算较紧时,可以用场求解器提取各层传播延时,并建模过孔的实际穿越深度、焊盘和残桩。

封装也会引入逐引脚的传播延时。UG933 第 64 页明确要求在 DDR 延时匹配中计入封装延时。计算前先确定端点是芯片内部焊盘还是外部焊球,再按约束选取对应的封装项。使用已包含封装或过孔的模型时,直接采用相应端点的模型结果。

信号偏斜 = 信号路径延时 − 参考路径延时

按这个定义,正值表示信号比参考晚到,负值表示早到。

算一笔 37 mm 的账

假设外层为 6.0 ps/mm、内层为 7.0 ps/mm,两条路径计入的过孔与封装延时各合计 20 ps。

信号外层内层路径总延时
DQS10 mm27 mm269 ps
DQ25 mm12 mm254 ps

DQ 相对 DQS 的偏斜 = 254 − 269 = −15 ps

如果把 DQ 的 10 mm 外层走线移到内层,并假设过孔延时保持相同,DQ 总长仍是 37 mm,路径延时却增加到 264 ps,偏斜缩小为 −5 ps。实际改线涉及换层时,应重新提取过孔延时,再核算偏斜。

三、怎样读 AMD 的 ±10 ps

UG933 v1.13.1 表 5-9 给出的是 Zynq-7000 PS DDR 接口的延时匹配基准。

匹配项LPDDR2DDR2DDR3/DDR3L
同通道 DQ/DM 对 DQS±10 ps±20 ps±10 ps
地址/控制对 CK±10 ps±25 ps±10 ps

以 DDR3 为例,两根 DQ 分别比 DQS 早到 9 ps 和晚到 9 ps,各自都满足 ±10 ps,两根 DQ 之间却相差 18 ps。设置 PCB 约束时,要核对工具检查的是逐根信号相对 DQS 的偏斜,还是组内最早与最晚的时间差。

降速运行或使用更高额定速率的颗粒时,UG933 附录 A 提供了按配置放宽的限值。例如,SoC 额定 1333 MT/s、DDR3 颗粒额定 1600 MT/s、实际运行 1333 MT/s,表 A-1 给出的 DQ/DM 对 DQS 限值为 ±38 ps。制定其他 DDR 接口的约束时,应按对应控制器、PHY、拓扑和速率查表。

四、写入校准能补偿什么

在 DDR3/DDR3L 的 fly-by 布线中,CK 可能比写 DQS 更晚到达 DRAM。Zynq-7000 PS 的写入校准会逐字节通道延迟写 DQS,使其与 DRAM 接收端的 CK 对齐。UG933 因此要求 CK 走线长度至少与对应 DQS 相当。实际评审还应结合层别、封装和接收端来核算时间差。

以 PS7 的 DQS-to-CLK 字段为例,公开参考设计采用以下符号约定。

DQS-to-CLK = 到同一颗 DRAM 的 CK 路径延时 − 对应通道的 DQS 路径延时

假设 CK 为 288 ps、DQS 为 269 ps,差值为 +19 ps,换算后是 +0.019 ns。它描述训练前的互连偏斜。另一个字段 Board Delay 表示用于训练的单程延时估计。公开参考设计以通道内数据路径的代表值和对应 CK 路径延时取平均,实际填值时应核对工具版本、单位和封装项的输入位置。

写入校准完成后,还要检查 DQS 边沿是否落在 DQ 的有效窗口内。Zynq-7000 PS 支持配置写数据相对 DQS 的相位。能否用同一个采样边沿可靠捕获通道内各位,仍取决于逐位偏斜和接收波形。

五、怎样验收布线延时

先看约束报告。 对每颗 DRAM、每个字节通道列出路径延时、参考信号及有符号偏斜,核对相应限值。差分对同时记录 P、N 两支的延时。这样可以直接定位哪一根线、在哪个接收端、早到或晚到多少。

再看接收波形。 用实际叠层和互连模型,结合驱动强度、终端和器件 I/O 模型,对读、写和命令链路做仿真。依据适用的接收阈值和采样边沿,检查建立裕量和保持裕量。反射、串扰和边沿变缓都可能移动阈值交越时刻,压缩余量。

最后看实板结果。 在目标速率以及规定的温度、电压范围内,多次冷启动并记录训练结果,使用不同数据图样和地址范围进行持续读写。若 PHY 支持裕量扫描,可以进一步定位窗口最窄的字节通道。

布线评审最有用的一行记录是:哪颗器件的哪根线,相对哪个采样基准,早到或晚到多少,还剩多少建立和保持裕量。

参考资料

〔01〕AMD《Zynq-7000 SoC PCB Design Guide》(UG933),第 64–66 页及附录 A
https://docs.amd.com/api/khub/documents/emfVNNoDnc5paYCtwGzwPg/content#page=65

〔02〕AMD《Zynq 7000 SoC Technical Reference Manual》(UG585),DRAM Training
https://docs.amd.com/r/en-US/ug585-zynq-7000-SoC-TRM/DRAM-Training

〔03〕AMD《Zynq 7000 SoC Technical Reference Manual》(UG585),Write Data Eye Adjustment
https://docs.amd.com/r/en-US/ug585-zynq-7000-SoC-TRM/Write-Data-Eye-Adjustment

〔04〕AMD《Zynq 7000 SoC and 7 Series Devices Memory Interface Solutions User Guide》(UG586),Trace Lengths
https://docs.amd.com/r/en-US/ug586_7Series_MIS/Trace-Lengths

〔05〕《ZedBoard Hardware User’s Guide》,表 2,DDR3 延时计算
https://files.digilent.com/resources/programmable-logic/zedboard/ZedBoard_HW_UG_v2_2.pdf#page=9

〔06〕Texas Instruments《AM64x/AM243x DDR Board Design and Layout Guidelines》(SPRACU1A)
https://www.ti.com/lit/an/spracu1a/spracu1a.pdf

〔07〕Texas Instruments《AM62Ax, AM62Px, AM62Dx LPDDR4 Board Design and Layout Guidelines》(SPRAD66B),第 3 节,板级提取与系统仿真
https://www.ti.com/lit/an/sprad66b/sprad66b.pdf#page=19

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Are you human? Please solve:Captcha