EDA365电子论坛网

标题: 这篇详细介绍了DDR布线的规则和过程 [打印本页]

作者: mytomorrow    时间: 2019-12-20 10:14
标题: 这篇详细介绍了DDR布线的规则和过程

. ^" f' ~* W6 z$ ?+ ~9 \" v* r' O多年前,无线时代发布了一篇文章关于DDR布线指导的一篇文章,当时在网络上很受欢迎,有很多同行参与了转载。如今看来,那篇文章写得不够好,逻辑性不强,可操作性也不强。在近几年的硬件产品开发中,本人总结出了一套DDR布线方法,具有高度的可行性,于是本人再次编写一份这样的文章,除了讲述DDR布线规则,还想讲述一下布线过程,采用本人的布线过程可以少走很多弯路。本文即将讲到的所有方法,无线时代都经过实际检验。4 Z) N% O& B2 c6 F3 T- l
' T" Z9 k* N' a8 Q4 O
DDR布线通常是一款硬件产品设计中的一个重要的环节,也正是因为其重要性,网络上也有大把的人在探讨DDR布线规则,有很多同行故弄玄虚,把DDR布线说得很难,我在这里要反其道而行之,讲一讲DDR布线最简规则与过程。2 S. h# T7 D% s. F
% Q: i. g" n% \2 P/ x' Y
如果不是特别说明,每个步骤中的方法同时适用于DDR1,DDR2和DDR3。PCB设计软件以Cadence Allgro 16.3为例。
4 c& U, y" t+ U4 N/ U; L( l  ^
% o1 A  ~/ m) u8 `- h( F' Y第一步,确定拓补结构(仅在多片DDR芯片时有用)
1 |) z% D5 G( f/ R0 N1 l

) z! Z/ p  y( W2 U' P  \首先要确定DDR的拓补结构,一句话,DDR1/2采用星形结构,DDR3采用菊花链结构。
* P# V( c9 e; W  L& {8 `3 E$ R- e! y. t3 C5 q' o- T* V
拓补结构只影响地址线的走线方式,不影响数据线。以下是示意图。
# S# Y  P, B) A# {  [3 k
) r# j( o# l) g: ~; }
$ ]" Q1 s; w* M+ `/ }/ m! P: [7 C. _3 P+ X) _
星形拓补就是地址线走到两片DDR中间再向两片DDR分别走线,菊花链就是用地址线把两片DDR“串起来”,就像羊肉串,每个DDR都是羊肉串上的一块肉,哈哈,开个玩笑。
0 z; S, W: l0 _* E  U) o/ N9 ^6 B! f3 f1 z- J: G' q) b
" |( x9 k3 i$ P1 H: d6 Z' Q6 b
& u! I3 N6 V* ?
第二步,元器件摆放
/ s3 Y3 ?& T1 {9 ~3 A. g) j
0 u; w4 O* [% u" r# Q确定了DDR的拓补结构,就可以进行元器件的摆放,有以下几个原则需要遵守:
" }0 |8 j' h% r5 J6 ~0 k+ q9 X0 {9 p$ P( [5 N" F
原则一,考虑拓补结构,仔细查看CPU地址线的位置,使得地址线有利于相应的拓补结构
& t) O! W5 M+ \* _$ S! S; ^5 n2 l6 g" c
原则二,地址线上的匹配电阻靠近CPU
6 Z& n$ C+ H' I& ^
/ v0 f! S, b4 @( F原则三,数据线上的匹配电阻靠近DDR6 f0 D$ P3 ~+ V; f; A

+ E0 F& W8 z# D8 _9 k" O" L  R原则四,将DDR芯片摆放并旋转,使得DDR数据线尽量短,也就是,DDR芯片的数据引脚靠近CPU
+ c" x7 ]# [+ \( `3 c
/ V: G9 Y7 R+ M' \原则五,如果有VTT端接电阻,将其摆放在地址线可以走到的最远的位置。一般来说,DDR2不需要VTT端接电阻,只有少数CPU需要;DDR3都需要VTT端接电阻。
. Z/ Z% b; p! @* f. @/ w7 M$ p) A+ d/ |7 T' L% \/ |# b" ~/ h8 G
原则六,DDR芯片的去耦电容放在靠近DDR芯片相应的引脚
6 M! U/ s! U/ g# \' O" z" D6 i) g% U# J' e2 y/ Z8 h. X
以下是DDR2的元器件摆放示意图(未包括去耦电容),可以很容易看出,地址线可以走到两颗芯片中间然后向两边分,很容易实现星形拓补,同时,数据线会很短。, d' v+ G3 H# m2 H4 q# u

! [) u# _! d! I- [! I, S4 ` ! w1 h6 g. b4 A$ k7 w7 R+ ^

# c, s& H. N" U以下是带有VTT端接电阻的DDR2元器件摆放示意图,在这个例子中,没有串联匹配电阻,VTT端接电阻摆放在了地址线可以到达的最远距离。
) Q5 M# T/ p6 r, A# i! C% e/ Q* }; K" Q
# M1 h! d& [8 N! M

! y: D7 ?) H) }- L% V3 D0 U以下是DDR3元器件摆放示意图,请注意,这里使用的CPU支持双通道DDR3,所以看到有四片(参考设计是8片)DDR3,其实是每两个组成一个通道,地址线沿着图中绿色的走线传递,实现了菊花链拓补。地址线上的VTT端接电阻摆放在了地址线可以到达的最远的地方。同样地,数据线上的端接电阻也放置在了靠近DDR3芯片的位置,数据线到达CPU的距离很短。同时,可以看到,去耦电容放置在了很靠近DDR3相应电源引脚的地方。
: z, v7 b2 g/ R7 n6 V
9 _$ S' ?9 y+ r" j0 V  s & v. t2 ]6 C8 X5 j- u& [4 V& K
" z4 c7 t+ z+ ^. k) u
第三步,设置串联匹配电阻的仿真模型
: k; D; x8 o$ `9 a7 u% |) e+ M( ]# s% G8 _3 A  g0 s3 |+ H
摆放完元器件,建议设置串联匹配电阻的仿真模型,这样对于后续的布线规则的设置是有好处的。
& b8 O+ o5 ]+ \3 C% k5 l; j) b. |- m6 d: a! n& T1 u0 B
点击AnalyzeSI/EMI SimModel Assignment,如下图。8 a9 r1 P# c, l2 Z2 @0 ^
5 \: ^0 ]6 Q/ Q5 I' a7 v) `+ P, j
$ S  q) d9 {) K4 _
1 g0 V9 J7 A# t) X# t+ W
然后会出来Model Assignment的界面,如下图) H' ?% ]4 g) `- i0 S5 f# v9 V* g

& O' Q/ N8 g$ i+ |- @2 h+ l& r
7 {8 W5 i* L; X% b9 E! {
* L: d: t7 f  H9 c, R: J然后点击需要设置模型的器件,通常就是串联匹配电阻,分配或创建合适的仿真的模型,如果不知道如何创建,请在互联网上搜索或发邮件给无线时代。! j/ Q1 ]; t$ x0 U+ T3 P7 g

5 x  A2 m8 P, v% x) ` 2 |& L2 X, o( v& H, p0 A

' k. d3 l: e2 C7 \) i分配好仿真模型之后的网络,使用Show Element命令,可以看到相关的XNET属性,如下图。0 `0 }+ W0 B- p* K+ W; C. t# R
9 p8 _( e# Y. p  A- b) b" q

+ d3 g6 J+ k. Q/ |$ o2 n7 P+ `5 |; e' {* }' C) j
第四步,设置线宽与线距! _$ Z1 g5 n8 G) k
1 }% X, o+ i; r0 C" p6 @. [4 i( ?% n* H
1. DDR走线线宽与阻抗控制密切相关,经常可以看到很多同行做阻抗控制。对于纯数字电路,完全有条件针对高速线做单端阻抗控制;但对于混合电路,包含高速数字电路与射频电路,射频电路比数字电路要重要的多,必须对射频信号做50欧姆阻抗控制,同时射频走线不可能太细,否则会引起较大的损耗,所以在混合电路中,本人往往舍弃数字电路的阻抗控制。到目前为止,本人设计的混合电路产品中,最高规格的DDR是DDR2-800,未作阻抗控制,工作一切正常。
: a* A) W& v: r/ \) A( p
" Z1 Y! t3 Q/ M9 i0 t9 A2. DDR的供电走线,建议8mil以上,在Allegro可以针对一类线进行物理参数的同意设定,我本人喜欢建立PWR-10MIL的约束条件,并为所有电源网络分配这一约束条件,如下图。
! B9 m' N$ V5 w7 t, D7 q7 p* M( d; [

" N6 u, ?1 S3 g9 K1 a% J3 c9 r& w
- W- m, a% |) [; t; Y5 z( D1 R8 N3. 线距部分主要考虑两方面,一是线-线间距,建议采用2W原则,即线间距是2倍线宽,3W很难满足;二是线-Shape间距,同样建议采用2W原则。对于线间距,也可以在Allegro中建立一种约束条件,为所有DDR走线(XNET)分配这样的约束条件,如下图。
9 ]. d7 m& [) O7 o; {
7 d" e: Z8 p5 X" l3 J8 T3 J6 c0 X+ y0 C4 ]5 Q
4. 还有一种可能需要的规则,就是区域规则。Allegro中默认的线宽线距都是5mil,在CPU引脚比较密集的时候,这样的规则是无法满足的,这就需要在CPU或DDR芯片周围设定允许小间距,小线宽的区域规则,如下图。6 m; z9 X/ L8 Y3 X% X4 K8 f
3 |7 j" I3 y" v! {+ ~

( ^3 A3 S+ t- T; A% V/ S4 r
" p$ R& c4 r% R6 b. H# s" C) m- E7 h  B第五步,走线! |) l% ?$ h6 _+ K8 D
# C9 R1 T( J7 V9 Z1 v. C
走线就需要注意的内容比较多,这里只做少许说明。% M9 L8 e: ]. w/ P$ P! ~

' A# e- P' I- p. W$ }1 {  S1 m; W6 W6 t; c+ S8 F
下图是完成的DDR走线,但尚未绕等长。
. G9 _' j- N  @* \: T& O. i; G. k! o0 S$ O
" q& z0 @: E; D0 T
* \! \8 O! Q/ @2 k
第六步,设置等长规则, {1 X: w& B" c7 j

6 L9 ^1 w# b& B' l# w, n对于数据线,DDR1/2与DDR3的规则是一致的:每个BYTE与各自的DQS,DQM等长,即DQ0:7与DQS0,DQM。等长,DQ8:15与DQS1,DQM1等长,以此类推。% d! R6 e' T6 A7 W1 a4 r

  r, B. x5 R; }# P- _DDR2数据线等长规则举例
! M, h5 j. V2 X8 _3 g" o4 [- m0 p% x+ |5 d3 A
7 V( G. @9 _, A# S% l2 f
8 C7 n' \9 v7 [* ?
DDR3数据线等长规则举例
' K* Y) [$ q# l$ T" E: g2 X8 `+ ]9 P3 k% d# S2 M

, u, K. h! i; X
6 I& Z0 m2 L8 s. A/ K- J7 c地址线方面的等长,要特别注意,DDR1/2与DDR是很不一样的。
. M$ @8 u& a1 K: z; ?4 \, d! m& _5 y, m0 Q
对于DDR1/2,需要设定每条地址到达同一片DDR的距离保持等长,如下图。: g; [: S" ]9 G# z

2 u) J3 w+ k' v2 k$ q$ n( Y % s3 `! w; X- k5 p! \6 C/ h

! N3 I' Z( Y% e" M9 i, _$ \/ w对于DDR3,地址线的等长往往需要过孔来配合,具体的规则均绑定在过孔上和VTT端接电阻上,如下图。可以看到,CPU的地址线到达过孔的距离等长,过孔到达VTT端接电阻的距离也等长。
7 W# i6 s0 z1 s& x) D' ~
, @4 f# ?, I8 |6 b. ? 9 {6 j% y' w4 U+ A4 r( T
3 I6 Z& {) s& q8 X
补充一点,很多时候,地址线的等长要求不严格,这一点我还没有尝试过。在本人设计的这些产品中,地址线,数据线都做了25mil的Relative Propagation Delay的等长规则设定。关于等长规则设定的细节在这里不再赘述,有兴趣的话,可以发邮件给无线时代。& `- F' T; I) h! |0 E8 \

% }1 G8 i. ?0 S第七步,绕等长
1 Z, ^3 D% J- W7 }% z/ h& v* c
完成等长规则的设定后,最后一步也是工作量最大的一步:绕等长。
: `3 }4 u4 o# N) {/ |5 q. |! Y
  a: z0 ?) o' H在这一步,我认为只有一点规则需要注意:尽量采用3倍线宽,45度角绕等长,如下图。
) n  `6 S0 ^+ o8 {2 V- s
% ?' S# N# q1 q! N- Y * B/ Y9 Q! }% O* u: n

2 v- h  b4 U$ b" h绕等长完成后,最好把DDR相关网络锁定,以免误动。
, q& L/ Y, d: f# f- @0 `0 D. V1 G
$ d9 K; z/ x' W9 h! z4 z' X5 U
4 p0 P/ I8 p4 z, ^3 V% w8 I0 r! w8 e  p1 n- T/ n: h" _
到这里,DDR走线就已经完成了,在本人设计过的三,四十种产品中,都是按照上面的规则与过程完成的,DDR2最高规格是DDR2-800,512MB,DDR3最高规格是DDR3-1600,1GB,都可以很稳定的工作,无论性能还是可靠性,都未曾出过问题。' ]2 i( }; {9 o$ c9 s7 H

7 v9 v' F. N; d( U5 g+ J* n
" e4 {5 l1 F' v* ?3 T
作者: 2682439952    时间: 2019-12-20 11:20
好好学习   天天向上
作者: koncc    时间: 2019-12-20 14:07
專業講解 感謝分享
作者: Layout妞修养    时间: 2019-12-20 15:08
讲的很容易理解,感谢分享
作者: wangdalei123    时间: 2019-12-20 15:37
讲解明确,容易理解,好文章
作者: 木屋飘香    时间: 2019-12-25 12:47
学习学习
作者: swensong    时间: 2020-7-27 09:41
学习DDR绘制: a4 z* \: n  y2 f+ e

5 }, q/ R4 V. o" H+ T. L
作者: wyl577399    时间: 2025-6-18 15:13
学习,学习!




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2