F
做了十几年FPGA,最近带新人画DDR4板,发现很多人对等长的理解还停留在"数据线差多少mil以内",但其实里面的门道不少。
为什么要做等长?
DDR4是源同步接口,数据选通信号DQS和数据信号DQ是同步发送的。接收端用DQS来采样DQ。如果DQS和DQ之间的时延差太大,建立时间/保持时间就不够,采样就会出错。
所以等长的本质不是"线要一样长",而是"时延差要控制在预算内"。
常见的等长规则(Micron/JEDEC标准)
地址/命令/控制信号 vs 时钟(CK/CK#):
- 对内偏差:±5 mil
- 对CK组内:±25 mil(不同速率会有差异,3200Mbps一般是±25)
数据信号(DQ) vs 数据选通(DQS):
- 对内偏差:±1 mil(这个要求非常严!)
- DQ对DQS:±10 mil(组内)
为什么要做蛇形线?
很多人以为蛇形线是"为了等长而故意绕的",其实本质是:PCB上不同网络的走线长度不一样,短的那根需要"绕"一点,让它的时延和长的那根匹配。
但蛇形线不是随便绕的:
1. 间距要≥3倍线宽,否则平行耦合会引入额外的差分延迟
2. 不要在高速信号上做长段蛇形,过渡段的不连续会造成阻抗不连续
3. 优先调整短的那根,不要去剪长的——长的走线已经走完了,改起来代价大
一个容易踩的坑:过孔也算长度
很多人算等长只算表层走线,过孔的stub和孔内走线的时延完全忽略了。实际上:
- 一个10层板的过孔,等效时延大约10-15 mil
- 如果参考平面换了,回流路径变了,阻抗也变了
所以做等长的时候,过孔长度一定要算进去,尤其是高速DDR4/5。
实际经验
我们最近做的一个项目,DDR4-3200,8层板叠层是:
- L1 信号(50Ω/100Ω差分)
- L2 地
- L3 信号
- L4 信号
- L5 电源
- L6 地
- L7 信号
- L8 信号
DQ/DQS走L1和L7,换层的时候在引脚附近打过孔,回流地过孔紧跟旁边。等长做完之后,眼图测试 margin 还有 30% 以上。
大家做DDR4布线的时候,等长规则都是按什么标准来的?有没有踩过什么坑?
为什么要做等长?
DDR4是源同步接口,数据选通信号DQS和数据信号DQ是同步发送的。接收端用DQS来采样DQ。如果DQS和DQ之间的时延差太大,建立时间/保持时间就不够,采样就会出错。
所以等长的本质不是"线要一样长",而是"时延差要控制在预算内"。
常见的等长规则(Micron/JEDEC标准)
地址/命令/控制信号 vs 时钟(CK/CK#):
- 对内偏差:±5 mil
- 对CK组内:±25 mil(不同速率会有差异,3200Mbps一般是±25)
数据信号(DQ) vs 数据选通(DQS):
- 对内偏差:±1 mil(这个要求非常严!)
- DQ对DQS:±10 mil(组内)
为什么要做蛇形线?
很多人以为蛇形线是"为了等长而故意绕的",其实本质是:PCB上不同网络的走线长度不一样,短的那根需要"绕"一点,让它的时延和长的那根匹配。
但蛇形线不是随便绕的:
1. 间距要≥3倍线宽,否则平行耦合会引入额外的差分延迟
2. 不要在高速信号上做长段蛇形,过渡段的不连续会造成阻抗不连续
3. 优先调整短的那根,不要去剪长的——长的走线已经走完了,改起来代价大
一个容易踩的坑:过孔也算长度
很多人算等长只算表层走线,过孔的stub和孔内走线的时延完全忽略了。实际上:
- 一个10层板的过孔,等效时延大约10-15 mil
- 如果参考平面换了,回流路径变了,阻抗也变了
所以做等长的时候,过孔长度一定要算进去,尤其是高速DDR4/5。
实际经验
我们最近做的一个项目,DDR4-3200,8层板叠层是:
- L1 信号(50Ω/100Ω差分)
- L2 地
- L3 信号
- L4 信号
- L5 电源
- L6 地
- L7 信号
- L8 信号
DQ/DQS走L1和L7,换层的时候在引脚附近打过孔,回流地过孔紧跟旁边。等长做完之后,眼图测试 margin 还有 30% 以上。
大家做DDR4布线的时候,等长规则都是按什么标准来的?有没有踩过什么坑?

