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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

+ f0 F8 P) `+ G. v多年前,无线时代发布了一篇文章关于DDR布线指导的一篇文章,当时在网络上很受欢迎,有很多同行参与了转载。如今看来,那篇文章写得不够好,逻辑性不强,可操作性也不强。在近几年的硬件产品开发中,本人总结出了一套DDR布线方法,具有高度的可行性,于是本人再次编写一份这样的文章,除了讲述DDR布线规则,还想讲述一下布线过程,采用本人的布线过程可以少走很多弯路。本文即将讲到的所有方法,无线时代都经过实际检验。0 R$ Q' q1 L8 R; M

# c  O( C; T+ Q" m' f3 ODDR布线通常是一款硬件产品设计中的一个重要的环节,也正是因为其重要性,网络上也有大把的人在探讨DDR布线规则,有很多同行故弄玄虚,把DDR布线说得很难,我在这里要反其道而行之,讲一讲DDR布线最简规则与过程。
- D; T* X0 R& C" r! @6 S% P; F4 D% l% R$ r1 f2 r6 {
如果不是特别说明,每个步骤中的方法同时适用于DDR1,DDR2和DDR3。PCB设计软件以cadence Allgro 16.3为例。
' b& r& @/ L7 R! y. `3 _7 n# C* \! d4 A" ]6 C
第一步,确定拓补结构(仅在多片DDR芯片时有用), F+ P1 I; f* \9 ~, W+ @
, i) x3 D" F) g" |% J( E
首先要确定DDR的拓补结构,一句话,DDR1/2采用星形结构,DDR3采用菊花链结构。
5 z/ @* H2 y: H. z
8 s* n) n- i1 [% t拓补结构只影响地址线的走线方式,不影响数据线。以下是示意图。
' x  h% N2 g: R; w% {
# v' U: ]9 w' ^3 d0 X ; j# L+ K& l2 i9 O) \) n! {3 [
; K1 E! y% P# o" H0 T0 Z1 E
星形拓补就是地址线走到两片DDR中间再向两片DDR分别走线,菊花链就是用地址线把两片DDR“串起来”,就像羊肉串,每个DDR都是羊肉串上的一块肉,哈哈,开个玩笑。% G, E& r! V; k, V* D& X
- m, x0 Z* X: k/ S6 N* z

2 H; |( J+ [* ?' Z, e
" B* o$ C5 D# o+ o% [" O第二步,元器件摆放$ c' a$ P  D9 |/ H

+ U2 T! @) P+ J! t' {$ Y确定了DDR的拓补结构,就可以进行元器件的摆放,有以下几个原则需要遵守:! g  X  f% K! N, t" B

* c; s. Z: a# @8 F5 y' g& e+ v原则一,考虑拓补结构,仔细查看CPU地址线的位置,使得地址线有利于相应的拓补结构  C1 B* h8 i/ B% W( `0 c( E
" F1 }  ], l& ?) P" s* Q( ~
原则二,地址线上的匹配电阻靠近CPU
. H8 h. b7 i6 d, G
" r3 |( b* @. e! M$ `7 B原则三,数据线上的匹配电阻靠近DDR
/ n1 L7 Q' e' w4 z* F) x  [- H- ?+ l0 [1 g7 D, {
原则四,将DDR芯片摆放并旋转,使得DDR数据线尽量短,也就是,DDR芯片的数据引脚靠近CPU
& r: G; v9 S: X8 a& k1 U6 y/ x* Z8 p. \' K4 D% m
原则五,如果有VTT端接电阻,将其摆放在地址线可以走到的最远的位置。一般来说,DDR2不需要VTT端接电阻,只有少数CPU需要;DDR3都需要VTT端接电阻。
1 j! ]! t9 e- c9 i7 W0 H
& O- H1 O/ F4 |& J原则六,DDR芯片的去耦电容放在靠近DDR芯片相应的引脚5 x" L4 V9 u0 m6 v4 m3 e8 ^

9 V4 w+ [' V8 w5 n; _以下是DDR2的元器件摆放示意图(未包括去耦电容),可以很容易看出,地址线可以走到两颗芯片中间然后向两边分,很容易实现星形拓补,同时,数据线会很短。) W! t; T3 T4 f) @7 z$ T0 B1 j4 W
+ A7 v* l: Q5 q/ @

' f# U- k' p2 i/ H+ q8 W$ R: c% B1 c1 b# q' l+ A6 j7 i, \
以下是带有VTT端接电阻的DDR2元器件摆放示意图,在这个例子中,没有串联匹配电阻,VTT端接电阻摆放在了地址线可以到达的最远距离。
% S0 l) @4 ~8 J4 t) j* K6 {4 ?5 J0 l, A. \$ T: q7 b
0 v5 x" u# E. I9 I6 d
$ I* j- u! U6 T  E" D( b$ _
以下是DDR3元器件摆放示意图,请注意,这里使用的CPU支持双通道DDR3,所以看到有四片(参考设计是8片)DDR3,其实是每两个组成一个通道,地址线沿着图中绿色的走线传递,实现了菊花链拓补。地址线上的VTT端接电阻摆放在了地址线可以到达的最远的地方。同样地,数据线上的端接电阻也放置在了靠近DDR3芯片的位置,数据线到达CPU的距离很短。同时,可以看到,去耦电容放置在了很靠近DDR3相应电源引脚的地方。) p. I6 L' l% V7 y3 c- O! S0 }
! ~' Q0 ]: [" G

) c( S  G1 R1 A% a
9 S* G; M" V0 X第三步,设置串联匹配电阻的仿真模型7 g4 {- A/ N" ^  U2 \
+ \# p8 z( h! i9 g/ S1 X
摆放完元器件,建议设置串联匹配电阻的仿真模型,这样对于后续的布线规则的设置是有好处的。8 w  y* p, b$ r; ?- v
; ~/ k' A/ h5 q, r& k5 C
点击AnalyzeSI/EMI SimModel Assignment,如下图。
8 z& h& w9 h9 x" [3 D; X$ n2 Y0 s- e: B9 A+ d- W' A+ n* {) L
  h2 {5 {+ ^$ z1 l% y

3 h: g$ _* \2 W* E% b然后会出来Model Assignment的界面,如下图% x. Z/ h% U( ]0 f

/ t8 j  I- E5 `* y, k
' j  j3 Q- u+ K6 M
) G% G! k* Z8 D. X  G  O8 ~+ r然后点击需要设置模型的器件,通常就是串联匹配电阻,分配或创建合适的仿真的模型,如果不知道如何创建,请在互联网上搜索或发邮件给无线时代。
- i+ j+ ?5 Q+ [5 c% l, S1 K  Z- I$ d6 J% e* `; f: t$ h
3 k8 V. d' n$ L! J7 j7 E
7 B. P  r  I9 v, O& l' k6 D
分配好仿真模型之后的网络,使用Show Element命令,可以看到相关的XNET属性,如下图。( D2 j& u8 n5 D2 B4 {: w7 ~
2 q8 `2 y, D9 p; U& ?; b' T) ^

% r. {7 E. w- f4 S' n8 \" E8 y( Y$ C8 k: K
第四步,设置线宽与线距* V% Z. p$ |5 V' u; _5 U6 ]% z
8 n: y2 g6 l+ b* f
1. DDR走线线宽与阻抗控制密切相关,经常可以看到很多同行做阻抗控制。对于纯数字电路,完全有条件针对高速线做单端阻抗控制;但对于混合电路,包含高速数字电路与射频电路,射频电路比数字电路要重要的多,必须对射频信号做50欧姆阻抗控制,同时射频走线不可能太细,否则会引起较大的损耗,所以在混合电路中,本人往往舍弃数字电路的阻抗控制。到目前为止,本人设计的混合电路产品中,最高规格的DDR是DDR2-800,未作阻抗控制,工作一切正常。  X5 {3 ?* B' U& P2 i. R* r( q
$ |$ f$ @  o8 T, i, U
2. DDR的供电走线,建议8mil以上,在allegro可以针对一类线进行物理参数的同意设定,我本人喜欢建立PWR-10MIL的约束条件,并为所有电源网络分配这一约束条件,如下图。# G5 @/ x' x2 a* v2 h7 m
  l2 G  _: [$ S

( Z& m; U9 R2 h5 ~; ~* [. `
& n: c+ e; x. S' H* P: N3. 线距部分主要考虑两方面,一是线-线间距,建议采用2W原则,即线间距是2倍线宽,3W很难满足;二是线-Shape间距,同样建议采用2W原则。对于线间距,也可以在Allegro中建立一种约束条件,为所有DDR走线(XNET)分配这样的约束条件,如下图。
. u; T2 y: r2 ^5 M, u' T; e 6 i/ l, f7 V+ w" C
. s; S" k: M4 O3 }% Y0 j! \
4. 还有一种可能需要的规则,就是区域规则。Allegro中默认的线宽线距都是5mil,在CPU引脚比较密集的时候,这样的规则是无法满足的,这就需要在CPU或DDR芯片周围设定允许小间距,小线宽的区域规则,如下图。# X: |- }; @( F4 ~2 M
' A* U9 T' W( R# m! S

  y7 b1 b) v8 v8 x9 Z* x8 e, f: {: }) R/ V
第五步,走线
8 t& ~% A: o; i+ w6 ~1 U6 \  t/ \* n' e% k) D0 S0 \
走线就需要注意的内容比较多,这里只做少许说明。( Z; f8 ^3 ^( x
! b( R$ T: b: M. _
  • 所有走线尽量短
  • 走线不能有锐角
  • 尽量少打过孔
  • 保证所有走线有完整的参考面,地平面或这电源平面都可以,对于交变信号,地与电源平面是等电位的
  • 尽量避免过孔将参考面打破,不过这在实际中很难做到
  • 走完地址线和数据后,务必将DDR芯片的电源脚,接地脚,去耦电容的电源脚,接地脚全部走完,否则在后面绕等长时会很麻烦的
    7 v: h: c) L' q! P

4 }4 r. @0 w1 s下图是完成的DDR走线,但尚未绕等长。' ~: a  j: R" b+ ^
% |* }2 G" B) W. v" m( z
) k; ^% s6 Q* L% T
- {; G* R+ I3 R2 G' f" t7 w" w  N8 E
第六步,设置等长规则
+ P: B; {. K+ U. L% ^0 G$ E) I& F% B/ ~4 F$ Y; |1 k! U5 o5 Q
对于数据线,DDR1/2与DDR3的规则是一致的:每个BYTE与各自的DQS,DQM等长,即DQ0:7与DQS0,DQM。等长,DQ8:15与DQS1,DQM1等长,以此类推。( R0 d, H9 e) `0 k9 \# W0 r
: o: k* y+ x. Q) i& t$ V: C7 U- o* r5 T
DDR2数据线等长规则举例& d5 O/ \) Q  F6 o! M8 q5 N

0 H% F# x3 V. ~4 F$ L 3 w! Y& v- \% K  S' x6 t

" w% l- j" l, j. H/ X" {* ^DDR3数据线等长规则举例
8 y2 A+ C; m8 E0 C. K, Z# l
) Y0 ]6 d% L2 {! M& }9 y# C% [! w 2 N" F# X8 z1 a) d' \6 S
. ?0 Y3 v# n6 S1 E! X) T3 f+ n1 y
地址线方面的等长,要特别注意,DDR1/2与DDR是很不一样的。
' o! h. O  {% }& @, a; o- W3 v3 e" m7 C' z9 E) W
对于DDR1/2,需要设定每条地址到达同一片DDR的距离保持等长,如下图。
  o5 y- a3 n; V2 j1 s3 ]- f
* p& m' o( W* ]3 [3 o! P: s
. F! r/ ^4 f% x' V: o
3 `2 P, M) _; A/ [对于DDR3,地址线的等长往往需要过孔来配合,具体的规则均绑定在过孔上和VTT端接电阻上,如下图。可以看到,CPU的地址线到达过孔的距离等长,过孔到达VTT端接电阻的距离也等长。
. k- X# x! V* w0 l* C3 x8 _& G8 }2 L0 q6 d: e

0 `) G; T1 ]# y; t5 r3 W9 M
7 W4 f" v0 u5 [$ g; P( P补充一点,很多时候,地址线的等长要求不严格,这一点我还没有尝试过。在本人设计的这些产品中,地址线,数据线都做了25mil的Relative Propagation Delay的等长规则设定。关于等长规则设定的细节在这里不再赘述,有兴趣的话,可以发邮件给无线时代。* [8 Y+ S' S  k$ J
/ Y% l) ]5 e! J6 l" u! ^( D
第七步,绕等长
) C7 Q0 M1 l& q+ X' t( X& ^" |9 W8 @5 _) {# E! \; T' b, i# H: i# e' X- i
完成等长规则的设定后,最后一步也是工作量最大的一步:绕等长。) [" L4 E' E& @4 E! w
: _: J+ N( L* P$ }% v! P3 V$ c
在这一步,我认为只有一点规则需要注意:尽量采用3倍线宽,45度角绕等长,如下图。
8 o% k  E! S# g1 `
# w; B. B* ~% t" D# T6 M
( ?# y# b' v0 G& ^6 n
% g2 X( Y& ^5 g5 C  ^: O绕等长完成后,最好把DDR相关网络锁定,以免误动。
  x' ^+ |; x! ]" Q/ ]
* s) |% f' M1 h: ?
( V0 E6 U7 k+ t- y% l
" A" H1 l( M8 k! h  |到这里,DDR走线就已经完成了,在本人设计过的三,四十种产品中,都是按照上面的规则与过程完成的,DDR2最高规格是DDR2-800,512MB,DDR3最高规格是DDR3-1600,1GB,都可以很稳定的工作,无论性能还是可靠性,都未曾出过问题。  q7 O0 \3 }! j8 }& w

# c  Y) D7 q/ X4 C* c# t! m/ e1 Z( c" \* [* g! M' M2 ?/ S3 S4 E

评分

参与人数 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绘制1 i0 O* m& W+ `' [0 S/ K" s6 F
    2 L/ d! a8 R7 U1 L! v) r3 ?
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-5 00:20 , Processed in 0.125000 second(s), 27 queries , Gzip On.

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

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

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