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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

  G0 [; @! ?* Q' K2 ]多年前,无线时代发布了一篇文章关于DDR布线指导的一篇文章,当时在网络上很受欢迎,有很多同行参与了转载。如今看来,那篇文章写得不够好,逻辑性不强,可操作性也不强。在近几年的硬件产品开发中,本人总结出了一套DDR布线方法,具有高度的可行性,于是本人再次编写一份这样的文章,除了讲述DDR布线规则,还想讲述一下布线过程,采用本人的布线过程可以少走很多弯路。本文即将讲到的所有方法,无线时代都经过实际检验。/ G* X- E  Z4 U2 Z( u

6 b. g& d4 r. c' H- h: nDDR布线通常是一款硬件产品设计中的一个重要的环节,也正是因为其重要性,网络上也有大把的人在探讨DDR布线规则,有很多同行故弄玄虚,把DDR布线说得很难,我在这里要反其道而行之,讲一讲DDR布线最简规则与过程。; Y5 `0 E4 _) G0 h8 _: N

: {3 N( y4 @2 K6 I2 o" ]3 _如果不是特别说明,每个步骤中的方法同时适用于DDR1,DDR2和DDR3。PCB设计软件以cadence Allgro 16.3为例。
, a" a* n  g4 e( D5 }3 [1 @* K
+ `$ ]+ ]' ^1 B$ X2 X' {( ?第一步,确定拓补结构(仅在多片DDR芯片时有用)
7 n* V/ _. [8 P8 y5 Q/ }
% U8 r( l6 t+ q& ^8 M, x7 S+ c! x
首先要确定DDR的拓补结构,一句话,DDR1/2采用星形结构,DDR3采用菊花链结构。3 R# O! n1 Z# O5 k
. S5 p1 b" k+ c  \1 n
拓补结构只影响地址线的走线方式,不影响数据线。以下是示意图。- z9 x1 Y; O4 O

# A6 \0 s- o8 I! A( o( Z1 s; g
+ h2 V6 o& }! S, i" p6 v+ g" `3 a
星形拓补就是地址线走到两片DDR中间再向两片DDR分别走线,菊花链就是用地址线把两片DDR“串起来”,就像羊肉串,每个DDR都是羊肉串上的一块肉,哈哈,开个玩笑。4 e7 Q, M( ?9 [0 F" x

5 ~. g. j. u) H! |& N# N/ P6 r) J( p, S- R+ [1 u

" C$ l7 K) O. Q+ b% x第二步,元器件摆放
. I6 [9 I; j- E6 k, S
7 V# l& e- y2 p/ `: f0 S确定了DDR的拓补结构,就可以进行元器件的摆放,有以下几个原则需要遵守:% y5 H3 |$ a/ e

9 t% f& I  j" e& H原则一,考虑拓补结构,仔细查看CPU地址线的位置,使得地址线有利于相应的拓补结构
3 T; s) l8 b- @5 s3 Z$ s0 n9 N/ {8 U! ]2 I
原则二,地址线上的匹配电阻靠近CPU; B! ^& k# |9 _( c
6 p4 P9 @# ~  s, i
原则三,数据线上的匹配电阻靠近DDR8 p& l) P6 W$ y8 I9 ?* r

6 _3 ^1 p6 p8 u# N4 ]原则四,将DDR芯片摆放并旋转,使得DDR数据线尽量短,也就是,DDR芯片的数据引脚靠近CPU
% I- Z  W  o8 l) L4 D  z5 G' ]4 P# {! Q7 Q$ ]7 F% K( c
原则五,如果有VTT端接电阻,将其摆放在地址线可以走到的最远的位置。一般来说,DDR2不需要VTT端接电阻,只有少数CPU需要;DDR3都需要VTT端接电阻。+ I8 _* N  Z, i1 ~; Q9 f3 e; k
  h) Y) x& Z/ f! K) U3 q, Z7 F
原则六,DDR芯片的去耦电容放在靠近DDR芯片相应的引脚
/ W* Q- k/ t# S, U# |2 ]' E" G; r2 x7 Q
以下是DDR2的元器件摆放示意图(未包括去耦电容),可以很容易看出,地址线可以走到两颗芯片中间然后向两边分,很容易实现星形拓补,同时,数据线会很短。
2 U! q# K( A) U* Q- a& W( U0 n8 g* p+ m0 F1 [/ _9 u* m2 D8 ~

7 [$ A7 @1 I% n& N
5 o2 P4 k3 }# Q4 h; I4 `以下是带有VTT端接电阻的DDR2元器件摆放示意图,在这个例子中,没有串联匹配电阻,VTT端接电阻摆放在了地址线可以到达的最远距离。
2 L! T* N* y3 Y/ k8 u* j: S. z7 s% Y
9 p* i3 K, ~3 f# o! X& i, B $ X3 E+ q; o  T8 O5 A' v6 {% r9 r* J
* n7 A! A7 k. G+ D' ]
以下是DDR3元器件摆放示意图,请注意,这里使用的CPU支持双通道DDR3,所以看到有四片(参考设计是8片)DDR3,其实是每两个组成一个通道,地址线沿着图中绿色的走线传递,实现了菊花链拓补。地址线上的VTT端接电阻摆放在了地址线可以到达的最远的地方。同样地,数据线上的端接电阻也放置在了靠近DDR3芯片的位置,数据线到达CPU的距离很短。同时,可以看到,去耦电容放置在了很靠近DDR3相应电源引脚的地方。; f, a3 h( b7 K

* \4 S0 ?8 N  t: ?. S! B) X  O 1 d2 E/ \1 q, Q- x  k
- H+ O$ m1 }* k8 u; a
第三步,设置串联匹配电阻的仿真模型
6 W5 b6 n# r  M
5 V! f/ |- U) d3 f  P  l7 Y摆放完元器件,建议设置串联匹配电阻的仿真模型,这样对于后续的布线规则的设置是有好处的。
% C( v; I; [1 |7 G$ P1 P$ p. P3 p! a8 N/ E" m$ u4 E' D
点击AnalyzeSI/EMI SimModel Assignment,如下图。$ a" [/ F2 U- U( J! v

$ G1 M3 {+ [$ F
  r' F: n! l3 H, E+ ~( M4 w8 E( O
* I. A0 v9 D1 @  B; ?( h然后会出来Model Assignment的界面,如下图+ S- y# F# n# C) ~) Q/ G0 D
2 o$ Y5 w+ f5 e
. \* e2 r$ J/ M0 c8 R
$ ]: R5 I9 i' c; J4 Z
然后点击需要设置模型的器件,通常就是串联匹配电阻,分配或创建合适的仿真的模型,如果不知道如何创建,请在互联网上搜索或发邮件给无线时代。
" I. a( ]% g* K" G
0 G4 @/ q) i2 |3 \4 C
& i9 G. e5 _( v' c) u" V( ?( ]: X. R# ~( ?6 p
分配好仿真模型之后的网络,使用Show Element命令,可以看到相关的XNET属性,如下图。& P& B: b# H" b* A

' X: C" W5 z' d, K ' G- Q/ c" z' o; q( I- g* O* ^  B

/ k8 d: M$ O! b' [5 {/ v& g第四步,设置线宽与线距5 F3 @% G$ p5 _/ \6 q9 b
$ b; i) _' k4 F* O2 F+ A/ r. i
1. DDR走线线宽与阻抗控制密切相关,经常可以看到很多同行做阻抗控制。对于纯数字电路,完全有条件针对高速线做单端阻抗控制;但对于混合电路,包含高速数字电路与射频电路,射频电路比数字电路要重要的多,必须对射频信号做50欧姆阻抗控制,同时射频走线不可能太细,否则会引起较大的损耗,所以在混合电路中,本人往往舍弃数字电路的阻抗控制。到目前为止,本人设计的混合电路产品中,最高规格的DDR是DDR2-800,未作阻抗控制,工作一切正常。8 r' |+ a# |) y$ N; |. Q5 R! n
5 \' l$ m' X5 ~% O% u5 J3 s
2. DDR的供电走线,建议8mil以上,在allegro可以针对一类线进行物理参数的同意设定,我本人喜欢建立PWR-10MIL的约束条件,并为所有电源网络分配这一约束条件,如下图。3 C& a& G/ [, T, U/ ?! y
. k9 d  ?! n, V' i

5 x/ Q+ R3 ^4 u1 A/ H; r" M. P/ V) d! ^  `+ n( m1 Q
3. 线距部分主要考虑两方面,一是线-线间距,建议采用2W原则,即线间距是2倍线宽,3W很难满足;二是线-Shape间距,同样建议采用2W原则。对于线间距,也可以在Allegro中建立一种约束条件,为所有DDR走线(XNET)分配这样的约束条件,如下图。
/ p5 A8 G* f$ F, g; l ( r+ Q+ w% x9 f4 e! D* @; a

8 x* Q6 Z& @, a7 ^2 W0 ]! S  i4. 还有一种可能需要的规则,就是区域规则。Allegro中默认的线宽线距都是5mil,在CPU引脚比较密集的时候,这样的规则是无法满足的,这就需要在CPU或DDR芯片周围设定允许小间距,小线宽的区域规则,如下图。( d( I1 J7 x2 n7 `1 b, o& X
  b/ o! @$ A- I' B( a

; i" `( a" b5 @' R
. ?* y  x2 h8 ^7 p第五步,走线
( E. m8 w3 D8 W4 a% j. M8 |
9 Q# L) U* _0 O/ L走线就需要注意的内容比较多,这里只做少许说明。: g5 j$ ~9 _% }, V0 k

2 A2 W$ {  Y% j* d$ x" t
  • 所有走线尽量短
  • 走线不能有锐角
  • 尽量少打过孔
  • 保证所有走线有完整的参考面,地平面或这电源平面都可以,对于交变信号,地与电源平面是等电位的
  • 尽量避免过孔将参考面打破,不过这在实际中很难做到
  • 走完地址线和数据后,务必将DDR芯片的电源脚,接地脚,去耦电容的电源脚,接地脚全部走完,否则在后面绕等长时会很麻烦的5 o6 X/ M6 t1 h% \+ ?
0 {8 H: `+ o7 V  ?2 d
下图是完成的DDR走线,但尚未绕等长。2 M" e- H( S+ n9 J& Y  y  |/ G# u

2 L& C1 w1 W% ^& e) ]/ ~: ]1 x $ B9 {- ?" c" I  j0 M& g3 t

0 S% Y! J- ]  o9 o" g7 v: k第六步,设置等长规则# T. ?8 H7 s/ L

' @2 R0 g9 |1 ^8 j对于数据线,DDR1/2与DDR3的规则是一致的:每个BYTE与各自的DQS,DQM等长,即DQ0:7与DQS0,DQM。等长,DQ8:15与DQS1,DQM1等长,以此类推。4 \. |' {. Z4 T

( K" l* u* }* @6 B( D7 z$ P% m' yDDR2数据线等长规则举例
: e3 ^$ L& D2 i( w: {! x
3 {( s% C: m; I1 ]0 b6 @/ P
. m; L$ h: g2 |  |% o9 n5 r8 g1 J- P! O$ K9 |% M1 _
DDR3数据线等长规则举例
) V( V1 N) u! Q8 R4 E+ J3 v6 _$ h7 P4 o* B1 F2 I( r0 V

# N7 U/ X! k- L7 p+ u& k, T, M$ ]5 T% }4 j- ^
地址线方面的等长,要特别注意,DDR1/2与DDR是很不一样的。% Y% i/ i% j1 D0 f3 m, i2 R% \

6 }- }% i; b9 T! z/ j8 z8 q对于DDR1/2,需要设定每条地址到达同一片DDR的距离保持等长,如下图。
  F" }* G6 v0 h" r: f, k( ~! E, `& ^0 b8 V- F0 O
. T7 t% y5 H# z1 K. \+ d

8 \' V/ u3 o- C对于DDR3,地址线的等长往往需要过孔来配合,具体的规则均绑定在过孔上和VTT端接电阻上,如下图。可以看到,CPU的地址线到达过孔的距离等长,过孔到达VTT端接电阻的距离也等长。
# }" l$ m, _& b# |/ j( Z  p7 ?% c6 \; J& q2 S

* v; q- B; H7 q2 R) t& d* ?# a% K2 ~
补充一点,很多时候,地址线的等长要求不严格,这一点我还没有尝试过。在本人设计的这些产品中,地址线,数据线都做了25mil的Relative Propagation Delay的等长规则设定。关于等长规则设定的细节在这里不再赘述,有兴趣的话,可以发邮件给无线时代。" y: w# w+ D, L/ B8 ^5 z

* ]$ z% R  _5 w第七步,绕等长
8 Y4 r. K3 L2 a+ ~1 j
0 r8 O6 l' ], f% T: C2 U9 F; j完成等长规则的设定后,最后一步也是工作量最大的一步:绕等长。% b- |' I5 ?/ ~6 y* ?

2 V9 O0 O- d  s) C. s9 B在这一步,我认为只有一点规则需要注意:尽量采用3倍线宽,45度角绕等长,如下图。
; y* \7 z4 H% q* B8 l/ s$ u: i7 N1 K( Z$ c
5 {$ z: q- x% @$ d5 z% K6 R  M

2 W3 A' C3 s3 E) r! T绕等长完成后,最好把DDR相关网络锁定,以免误动。, f; Y) |: b; ]" o

9 m+ M* P1 r" F/ r& \7 z5 i. a 1 N( o9 J! i% a. o3 O8 H

, h- x/ _" F2 B  |& b到这里,DDR走线就已经完成了,在本人设计过的三,四十种产品中,都是按照上面的规则与过程完成的,DDR2最高规格是DDR2-800,512MB,DDR3最高规格是DDR3-1600,1GB,都可以很稳定的工作,无论性能还是可靠性,都未曾出过问题。
! ]" D  t+ i, z; a4 ^
4 r* _: ^- B" {; `# Y) E& q2 s& ]) 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绘制/ g2 `* J+ I: W2 d/ w, j6 E5 `( @
    + k0 e! {; ^1 K! v8 g! Z
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-28 23:17 , Processed in 0.234375 second(s), 31 queries , Gzip On.

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

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

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