找回密码
 注册
关于网站域名变更的通知
查看: 971|回复: 7
打印 上一主题 下一主题

这篇详细介绍了DDR布线的规则和过程

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-12-20 10:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
  v: m+ o; w* V+ S: f% p
多年前,无线时代发布了一篇文章关于DDR布线指导的一篇文章,当时在网络上很受欢迎,有很多同行参与了转载。如今看来,那篇文章写得不够好,逻辑性不强,可操作性也不强。在近几年的硬件产品开发中,本人总结出了一套DDR布线方法,具有高度的可行性,于是本人再次编写一份这样的文章,除了讲述DDR布线规则,还想讲述一下布线过程,采用本人的布线过程可以少走很多弯路。本文即将讲到的所有方法,无线时代都经过实际检验。
% X& j' e/ c, v4 j; }0 o: a% m7 r( u2 c0 i
DDR布线通常是一款硬件产品设计中的一个重要的环节,也正是因为其重要性,网络上也有大把的人在探讨DDR布线规则,有很多同行故弄玄虚,把DDR布线说得很难,我在这里要反其道而行之,讲一讲DDR布线最简规则与过程。
- U! P7 a- I, {+ P9 |" m6 w0 R0 v, s" I7 y! z9 d7 O
如果不是特别说明,每个步骤中的方法同时适用于DDR1,DDR2和DDR3。PCB设计软件以cadence Allgro 16.3为例。
! f# [2 R  j8 d3 K, F" g# X" M+ r. e0 |3 ?5 o
第一步,确定拓补结构(仅在多片DDR芯片时有用)
- _( I" p8 B1 H  D/ ?; Q
4 i2 R. L6 w, h9 j" |5 C0 Z0 F0 w
首先要确定DDR的拓补结构,一句话,DDR1/2采用星形结构,DDR3采用菊花链结构。9 w' R. X) e" X$ Y: Q* ]) W

, Y0 @3 ], U, V% q8 u拓补结构只影响地址线的走线方式,不影响数据线。以下是示意图。
; {+ M% H5 r4 Q( K9 x! U3 j, S& B& H4 W  t9 k

1 [+ N) L) a3 M: N5 W
6 g+ ?4 m) i' Z9 i* b星形拓补就是地址线走到两片DDR中间再向两片DDR分别走线,菊花链就是用地址线把两片DDR“串起来”,就像羊肉串,每个DDR都是羊肉串上的一块肉,哈哈,开个玩笑。5 g/ y& V+ A5 f

, J9 e, v: ]2 f% V  W0 A3 I* B
3 R; m+ B- b$ u% s& M5 L4 ~. e: {+ q
" M* n: y1 ?8 B% f! k第二步,元器件摆放4 d  B* e5 D" Q5 |

- R% X# R" U9 R' b7 r: M5 z6 s1 P5 ]确定了DDR的拓补结构,就可以进行元器件的摆放,有以下几个原则需要遵守:
& A  p$ B7 ~" Y/ z6 H2 z: q) \% ]5 k7 j9 [
原则一,考虑拓补结构,仔细查看CPU地址线的位置,使得地址线有利于相应的拓补结构
  B* S% s6 U4 O+ L4 W5 k# {. Q; b0 b$ y, u0 O( i
原则二,地址线上的匹配电阻靠近CPU7 V7 Z, N$ K: d% z6 X( O. N

. _  ~9 l; j5 r. r+ Q4 s9 r$ R原则三,数据线上的匹配电阻靠近DDR
  ^7 \# D& O6 n: H" @/ |6 V
+ x( M! m; R, W1 \' Q5 f原则四,将DDR芯片摆放并旋转,使得DDR数据线尽量短,也就是,DDR芯片的数据引脚靠近CPU
" Y3 o/ o  x: j0 g$ @8 S4 X# _  z5 \6 L& N3 {/ ?/ ?4 S6 \
原则五,如果有VTT端接电阻,将其摆放在地址线可以走到的最远的位置。一般来说,DDR2不需要VTT端接电阻,只有少数CPU需要;DDR3都需要VTT端接电阻。
( A- c4 N( ^5 V- r; w6 R9 X, e3 c2 t, T4 n# R
原则六,DDR芯片的去耦电容放在靠近DDR芯片相应的引脚0 J; W9 d; A8 q! l4 o+ ~/ |
1 ~% N2 W8 q; o2 D( B" A
以下是DDR2的元器件摆放示意图(未包括去耦电容),可以很容易看出,地址线可以走到两颗芯片中间然后向两边分,很容易实现星形拓补,同时,数据线会很短。
& o6 _9 B2 n% n* C4 \6 E- H4 _
( r2 M- }( G& R+ e' x: V) _! a 1 B# I2 S! f# S

( I/ e4 K( E* z0 y. ^( A以下是带有VTT端接电阻的DDR2元器件摆放示意图,在这个例子中,没有串联匹配电阻,VTT端接电阻摆放在了地址线可以到达的最远距离。+ b. n) L8 W# n; S$ l1 q; Q" a5 K

' c+ K$ R% l: | : O7 ?0 N" o& [* q
- n  g$ M' N# i2 l  Z  ]
以下是DDR3元器件摆放示意图,请注意,这里使用的CPU支持双通道DDR3,所以看到有四片(参考设计是8片)DDR3,其实是每两个组成一个通道,地址线沿着图中绿色的走线传递,实现了菊花链拓补。地址线上的VTT端接电阻摆放在了地址线可以到达的最远的地方。同样地,数据线上的端接电阻也放置在了靠近DDR3芯片的位置,数据线到达CPU的距离很短。同时,可以看到,去耦电容放置在了很靠近DDR3相应电源引脚的地方。0 L0 n0 Y3 ?& K% N- |

1 s' S' N" _  b7 g3 A7 d " ]2 |. Z2 f3 Y$ B/ Y  U$ t0 ^

( [. u; O& N1 w5 d0 l第三步,设置串联匹配电阻的仿真模型* l; A1 f6 K2 S. H$ Z+ }

( R2 {. J0 |; J; O! a% K0 s: W摆放完元器件,建议设置串联匹配电阻的仿真模型,这样对于后续的布线规则的设置是有好处的。9 M( p9 C0 D' x' U8 ]
+ b/ Y, K! T9 o  O6 l7 R! E
点击AnalyzeSI/EMI SimModel Assignment,如下图。- ?% Z# M3 K/ K: S, U! m/ E( A
* G! n3 v1 X- a5 A( L$ n5 X
  k. n8 L  {4 O/ o  Q5 o' A

4 {* n4 {8 }" o! t5 \然后会出来Model Assignment的界面,如下图, s4 a6 z% m! ]
; k: V8 T7 a9 L# D8 |  h7 _8 {  {
% Z! n1 r0 s3 y" K$ A9 q6 B

* K0 }( C% X6 ~然后点击需要设置模型的器件,通常就是串联匹配电阻,分配或创建合适的仿真的模型,如果不知道如何创建,请在互联网上搜索或发邮件给无线时代。* R# _- K! Z+ y; w. Y; \
7 F1 }/ ]* B6 @9 I# i' Z) C3 W

9 F2 r8 q2 `) i+ [- h' j& p2 a+ |- \$ k6 o6 g" k
分配好仿真模型之后的网络,使用Show Element命令,可以看到相关的XNET属性,如下图。& N! E9 M6 _, P0 q" X1 p
% L5 l0 `8 C1 p$ N8 u& h3 o3 n8 }. c
1 T. w1 X8 M' E1 J7 ~( t
5 ~  {3 c. l" ~
第四步,设置线宽与线距: a( v; T! Y' x6 }; U2 h- _8 M% F

" @3 y- m; R) \, E. x1. DDR走线线宽与阻抗控制密切相关,经常可以看到很多同行做阻抗控制。对于纯数字电路,完全有条件针对高速线做单端阻抗控制;但对于混合电路,包含高速数字电路与射频电路,射频电路比数字电路要重要的多,必须对射频信号做50欧姆阻抗控制,同时射频走线不可能太细,否则会引起较大的损耗,所以在混合电路中,本人往往舍弃数字电路的阻抗控制。到目前为止,本人设计的混合电路产品中,最高规格的DDR是DDR2-800,未作阻抗控制,工作一切正常。
0 Q7 E) h+ v# V5 g& ?7 P. T% S. N# [4 K- H
2. DDR的供电走线,建议8mil以上,在allegro可以针对一类线进行物理参数的同意设定,我本人喜欢建立PWR-10MIL的约束条件,并为所有电源网络分配这一约束条件,如下图。% `8 W/ ?9 P8 o

5 N( P0 G# ~9 d& P- s- p
! g$ X6 [/ D8 [( ^( `3 G' [2 F" b; e. i  y+ Q3 t
3. 线距部分主要考虑两方面,一是线-线间距,建议采用2W原则,即线间距是2倍线宽,3W很难满足;二是线-Shape间距,同样建议采用2W原则。对于线间距,也可以在Allegro中建立一种约束条件,为所有DDR走线(XNET)分配这样的约束条件,如下图。
/ U1 R! Q0 a6 x2 u2 N6 [, P
3 F; W( Q: h5 z; e& X. Q( _6 Y
, Y  V1 Q. R. H' Z4. 还有一种可能需要的规则,就是区域规则。Allegro中默认的线宽线距都是5mil,在CPU引脚比较密集的时候,这样的规则是无法满足的,这就需要在CPU或DDR芯片周围设定允许小间距,小线宽的区域规则,如下图。+ ^6 P9 I  r& ?/ v

. H! Z, _% J3 L" C6 c& K
" r, m! \3 n! o" }
! z5 d3 c8 `0 T5 U第五步,走线- r7 K/ u! o  c

# `9 ~$ ?2 N9 y1 C: }$ L2 m走线就需要注意的内容比较多,这里只做少许说明。
! o8 ]" T+ K2 r% I: K: ^( S7 M3 p% j$ E( W4 b! ?
  • 所有走线尽量短
  • 走线不能有锐角
  • 尽量少打过孔
  • 保证所有走线有完整的参考面,地平面或这电源平面都可以,对于交变信号,地与电源平面是等电位的
  • 尽量避免过孔将参考面打破,不过这在实际中很难做到
  • 走完地址线和数据后,务必将DDR芯片的电源脚,接地脚,去耦电容的电源脚,接地脚全部走完,否则在后面绕等长时会很麻烦的# _. X! F& V& ?
0 q. v% @9 v, Q- p
下图是完成的DDR走线,但尚未绕等长。
) ?4 z3 p+ D9 r8 N/ ~& W/ d
7 Y  r% \0 K( [* J
5 v3 O8 w9 M# b3 C- s2 [
( W# f/ L9 b! h0 m; P: N! ~! q% i$ W第六步,设置等长规则
5 ~, k9 v) F+ Z' S1 e3 P) A6 k$ V8 b
对于数据线,DDR1/2与DDR3的规则是一致的:每个BYTE与各自的DQS,DQM等长,即DQ0:7与DQS0,DQM。等长,DQ8:15与DQS1,DQM1等长,以此类推。
! \* k; ~" C3 _6 m$ h; S; W5 C( b0 Q/ m
DDR2数据线等长规则举例8 ?: L0 {+ @7 x, `0 I
! P5 \* {( M% F

+ C$ H/ D/ ^( j3 e) o
0 W4 \- q* A9 e6 [( ?" k: VDDR3数据线等长规则举例" ]2 E3 ?( |0 S
1 d4 z4 E$ S* L3 [" B

- }8 s0 ^6 a% `8 z- c' y/ o, V2 m' I, g. C% e& X
地址线方面的等长,要特别注意,DDR1/2与DDR是很不一样的。
$ g! y5 n9 w( Z2 \
+ ]( C. O' v+ b4 k对于DDR1/2,需要设定每条地址到达同一片DDR的距离保持等长,如下图。
# Q# q3 S6 b9 [4 k, M
% q0 p' D. b! e, R1 u
4 i+ D! H) N% h9 K* |7 H4 S7 H" ?% H9 E9 j# t+ g0 m9 z3 ^
对于DDR3,地址线的等长往往需要过孔来配合,具体的规则均绑定在过孔上和VTT端接电阻上,如下图。可以看到,CPU的地址线到达过孔的距离等长,过孔到达VTT端接电阻的距离也等长。
/ \' Z2 N  M' o) K; `/ ^* Q5 b4 S/ \0 k- {- i
7 M4 @, P; O4 D+ Y; R( y* \

& U. t' o& g5 J2 w3 h# w. \补充一点,很多时候,地址线的等长要求不严格,这一点我还没有尝试过。在本人设计的这些产品中,地址线,数据线都做了25mil的Relative Propagation Delay的等长规则设定。关于等长规则设定的细节在这里不再赘述,有兴趣的话,可以发邮件给无线时代。- `& E8 j% s; u- q

* K3 Y2 S$ o5 ?! n第七步,绕等长
/ ~7 p7 p; z. m* O- _9 y: a4 f$ a, f3 W) {9 E5 f  j5 w! v
完成等长规则的设定后,最后一步也是工作量最大的一步:绕等长。
9 _* [* A7 y7 J, l& l* P- P) b+ w+ P5 F$ H& F0 ?
在这一步,我认为只有一点规则需要注意:尽量采用3倍线宽,45度角绕等长,如下图。
2 |$ T- J1 z! P1 f4 c% e1 C" j: G  {; ]# o' r6 C( r
7 z' s) }* G+ [) c7 R5 J3 M3 K
  l$ }. R0 R& E
绕等长完成后,最好把DDR相关网络锁定,以免误动。1 p( W- w! g6 Q% x$ `4 N

. ^9 @6 H5 z4 K
. n6 @6 f# _% \$ t' Y# X$ {' Y  w8 n5 T
到这里,DDR走线就已经完成了,在本人设计过的三,四十种产品中,都是按照上面的规则与过程完成的,DDR2最高规格是DDR2-800,512MB,DDR3最高规格是DDR3-1600,1GB,都可以很稳定的工作,无论性能还是可靠性,都未曾出过问题。4 Q* L8 B* u2 L* O8 G
: w. A9 A3 k6 D- {
, n  D2 k$ i% F' }4 g1 V8 u8 R8 c

评分

参与人数 1威望 +2 收起 理由
koncc + 2

查看全部评分

  • TA的每日心情

    2020-1-3 15:00
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    2#
    发表于 2019-12-20 11:20 | 只看该作者
    好好学习   天天向上
  • TA的每日心情
    开心
    2024-5-31 15:00
  • 签到天数: 1000 天

    [LV.10]以坛为家III

    3#
    发表于 2019-12-20 14:07 | 只看该作者
    專業講解 感謝分享
  • TA的每日心情
    无聊
    2021-3-11 15:40
  • 签到天数: 24 天

    [LV.4]偶尔看看III

    4#
    发表于 2019-12-20 15:08 | 只看该作者
    讲的很容易理解,感谢分享

    该用户从未签到

    5#
    发表于 2019-12-20 15:37 | 只看该作者
    讲解明确,容易理解,好文章

    该用户从未签到

    6#
    发表于 2019-12-25 12:47 | 只看该作者
    学习学习

    “来自电巢APP”

  • TA的每日心情
    郁闷
    2019-11-19 16:50
  • 签到天数: 1 天

    [LV.1]初来乍到

    7#
    发表于 2020-7-27 09:41 | 只看该作者
    学习DDR绘制
    7 y7 P9 a. r' l0 \2 N8 s
      K9 g: K, @1 V1 V- `5 L: j" ]
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-12 17:51 , Processed in 0.140625 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表