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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1 p8 z$ J* k" ]. G3 L( y2 O
多年前,无线时代发布了一篇文章关于DDR布线指导的一篇文章,当时在网络上很受欢迎,有很多同行参与了转载。如今看来,那篇文章写得不够好,逻辑性不强,可操作性也不强。在近几年的硬件产品开发中,本人总结出了一套DDR布线方法,具有高度的可行性,于是本人再次编写一份这样的文章,除了讲述DDR布线规则,还想讲述一下布线过程,采用本人的布线过程可以少走很多弯路。本文即将讲到的所有方法,无线时代都经过实际检验。0 r* }1 l! t8 J/ _+ J

# L, |' {- g. R; C6 fDDR布线通常是一款硬件产品设计中的一个重要的环节,也正是因为其重要性,网络上也有大把的人在探讨DDR布线规则,有很多同行故弄玄虚,把DDR布线说得很难,我在这里要反其道而行之,讲一讲DDR布线最简规则与过程。5 r# ?8 {( S+ }4 U0 z7 X/ u# `
! {$ l9 `- n# @/ n  |( Q- g
如果不是特别说明,每个步骤中的方法同时适用于DDR1,DDR2和DDR3。PCB设计软件以cadence Allgro 16.3为例。' o! ]& b2 Y) a$ @; A8 m5 {$ M
2 f' O0 `) u6 k7 `! j
第一步,确定拓补结构(仅在多片DDR芯片时有用)* O: H$ P# _+ t) P

8 _3 ?8 V% I7 R% d* Q& m: x$ K首先要确定DDR的拓补结构,一句话,DDR1/2采用星形结构,DDR3采用菊花链结构。
/ W, d8 Y. m& Y- p- k
0 o7 C  r* Z7 g  y8 e2 ~6 A3 S9 O拓补结构只影响地址线的走线方式,不影响数据线。以下是示意图。
1 i$ q# l% C7 P6 W* _+ X
. y  _2 w* ^. U, M
- X5 V/ s* P/ j6 V, e8 G
0 m# H$ A( g( m星形拓补就是地址线走到两片DDR中间再向两片DDR分别走线,菊花链就是用地址线把两片DDR“串起来”,就像羊肉串,每个DDR都是羊肉串上的一块肉,哈哈,开个玩笑。* b; x9 R$ \/ R% N. }# Z4 Y

: |* J/ F/ F, D7 ]5 j
4 o  l9 b% w- ^
4 o5 l" e; H% @' y  I( B9 s第二步,元器件摆放7 v  f) ]" m: H- [5 U

3 W! l6 b+ o4 S& f确定了DDR的拓补结构,就可以进行元器件的摆放,有以下几个原则需要遵守:
2 t/ W7 p% Z2 g( o, g- I$ j; z$ C4 W6 \8 e/ f6 [. _+ D$ H: j
原则一,考虑拓补结构,仔细查看CPU地址线的位置,使得地址线有利于相应的拓补结构" q& j* u* U6 T7 p/ ]# f+ `

% C: O8 A3 E0 g' ]: v原则二,地址线上的匹配电阻靠近CPU
! d6 E+ f  V0 x7 {! D; y; c1 i
) c; n& R  r' e原则三,数据线上的匹配电阻靠近DDR2 S5 f. r% e6 [% U* ?% {

! L- \5 o, U. J* d5 f) D) B原则四,将DDR芯片摆放并旋转,使得DDR数据线尽量短,也就是,DDR芯片的数据引脚靠近CPU3 L. m' k: E$ D5 E0 r
; Y# C4 X0 a" j$ g! O$ `9 c
原则五,如果有VTT端接电阻,将其摆放在地址线可以走到的最远的位置。一般来说,DDR2不需要VTT端接电阻,只有少数CPU需要;DDR3都需要VTT端接电阻。( j0 |& [4 j/ E* \5 U9 C
- i( t/ {# t% G
原则六,DDR芯片的去耦电容放在靠近DDR芯片相应的引脚
/ X4 N$ H8 O7 L8 }! V$ j) y
; V7 i3 o& U" g5 `! j* C以下是DDR2的元器件摆放示意图(未包括去耦电容),可以很容易看出,地址线可以走到两颗芯片中间然后向两边分,很容易实现星形拓补,同时,数据线会很短。
) g5 F" y% e0 z. n! F! m! e! u% o
. q' r! ~* f) {# R" u' h. a / P6 L1 F  |- s8 s3 M. r; V

3 U4 V. g, p+ ~以下是带有VTT端接电阻的DDR2元器件摆放示意图,在这个例子中,没有串联匹配电阻,VTT端接电阻摆放在了地址线可以到达的最远距离。
3 K- @# \) w: h+ F8 C. I4 V) x# @& B' ?

" |3 q, F; S( e$ _
& V4 m& r" J# ?1 R. b9 Y/ R$ I以下是DDR3元器件摆放示意图,请注意,这里使用的CPU支持双通道DDR3,所以看到有四片(参考设计是8片)DDR3,其实是每两个组成一个通道,地址线沿着图中绿色的走线传递,实现了菊花链拓补。地址线上的VTT端接电阻摆放在了地址线可以到达的最远的地方。同样地,数据线上的端接电阻也放置在了靠近DDR3芯片的位置,数据线到达CPU的距离很短。同时,可以看到,去耦电容放置在了很靠近DDR3相应电源引脚的地方。
6 C" j4 b3 t  i6 A- B: y$ D7 r
7 r9 k' i* S2 O8 X* t) |" W6 }  E
5 g# \$ ?! B) |
, u: i# i6 B; D" m第三步,设置串联匹配电阻的仿真模型. N, q1 z: ?# {" o& h
) v1 K7 M; {! ^5 O2 b' u# E+ j1 t
摆放完元器件,建议设置串联匹配电阻的仿真模型,这样对于后续的布线规则的设置是有好处的。
7 Y- x+ G! N, I; t
% u9 Y6 Q, t9 J点击AnalyzeSI/EMI SimModel Assignment,如下图。, v  o1 B: `" k0 q6 D
1 _' j' C: e3 Y. s  T/ m4 b

( {7 ?# a2 ~) t$ ~/ x& i6 w
' b9 |, P3 R% C" F! _然后会出来Model Assignment的界面,如下图6 I0 }# P2 u# p0 i8 F

3 d- [. o* s) @  \8 U# ~* f 8 t, {& q4 r  l, T: U% ?1 e* H  m

+ n: O/ p- a/ n然后点击需要设置模型的器件,通常就是串联匹配电阻,分配或创建合适的仿真的模型,如果不知道如何创建,请在互联网上搜索或发邮件给无线时代。1 \+ b$ W- Z6 G! Z) o/ w- a  s

# G& U* I6 x+ b9 _1 E/ e 5 @$ \" ~$ p. ~7 z

  ]' _8 C/ |  e. r9 Y5 c1 ?分配好仿真模型之后的网络,使用Show Element命令,可以看到相关的XNET属性,如下图。
5 P5 O- t% f0 n5 D0 a4 e1 T8 {: c6 _
& K1 V  A- m' {& F1 V$ n6 y9 v3 j- s- K
+ `8 Q* H) S3 O5 m6 V0 S4 [" A2 Z  [5 D: A- h4 h- L' z" N
第四步,设置线宽与线距/ U% F; g( l2 u

  r1 p7 g1 K  I1 n1. DDR走线线宽与阻抗控制密切相关,经常可以看到很多同行做阻抗控制。对于纯数字电路,完全有条件针对高速线做单端阻抗控制;但对于混合电路,包含高速数字电路与射频电路,射频电路比数字电路要重要的多,必须对射频信号做50欧姆阻抗控制,同时射频走线不可能太细,否则会引起较大的损耗,所以在混合电路中,本人往往舍弃数字电路的阻抗控制。到目前为止,本人设计的混合电路产品中,最高规格的DDR是DDR2-800,未作阻抗控制,工作一切正常。
5 A/ J5 F$ j/ \( y3 A6 n  P$ f
5 W* k; h- T5 y! Q) x3 w2. DDR的供电走线,建议8mil以上,在allegro可以针对一类线进行物理参数的同意设定,我本人喜欢建立PWR-10MIL的约束条件,并为所有电源网络分配这一约束条件,如下图。' d5 X: N# U# k2 g" ^8 P+ S) H

. e( u. c* q" o* z. e. u " M2 Q7 S+ O1 S" i0 H1 y4 g& X
) Z% `" \( \1 S1 Z  X2 [' F5 e
3. 线距部分主要考虑两方面,一是线-线间距,建议采用2W原则,即线间距是2倍线宽,3W很难满足;二是线-Shape间距,同样建议采用2W原则。对于线间距,也可以在Allegro中建立一种约束条件,为所有DDR走线(XNET)分配这样的约束条件,如下图。% v) P0 \3 C# A; k9 D1 x5 y
" u8 D7 F# n( t7 D

" ]1 c% D' _* P$ s% B$ b9 H4. 还有一种可能需要的规则,就是区域规则。Allegro中默认的线宽线距都是5mil,在CPU引脚比较密集的时候,这样的规则是无法满足的,这就需要在CPU或DDR芯片周围设定允许小间距,小线宽的区域规则,如下图。+ \% w3 c5 D, A- C, j! h; s

: W. i0 U, M/ }1 k8 K) I3 i% Z- n5 N - {" t4 Q+ T4 p# ~, F8 C

  W4 w$ n. F$ N$ r, q" ~2 ]第五步,走线0 F7 ]. o1 z3 W8 ]7 `( G5 x

2 {" o; ~) c# J走线就需要注意的内容比较多,这里只做少许说明。
& a7 I3 Z; f9 N1 \2 G* ^
: t. T  d& p) b1 L1 \
  • 所有走线尽量短
  • 走线不能有锐角
  • 尽量少打过孔
  • 保证所有走线有完整的参考面,地平面或这电源平面都可以,对于交变信号,地与电源平面是等电位的
  • 尽量避免过孔将参考面打破,不过这在实际中很难做到
  • 走完地址线和数据后,务必将DDR芯片的电源脚,接地脚,去耦电容的电源脚,接地脚全部走完,否则在后面绕等长时会很麻烦的
    ( p7 _- |, w+ E7 ~  C0 ~2 q: z

. z" e% U4 u% c9 k$ K下图是完成的DDR走线,但尚未绕等长。
& g3 G' g& I6 e5 @* _
/ v$ P3 e3 r/ @+ n+ b
3 q: [7 |( o( @- p- Y
# y$ K  N9 C( S/ a第六步,设置等长规则% e/ A. U4 N% l$ l8 p1 E) H' w

, G3 U, K, o  H, ]9 D对于数据线,DDR1/2与DDR3的规则是一致的:每个BYTE与各自的DQS,DQM等长,即DQ0:7与DQS0,DQM。等长,DQ8:15与DQS1,DQM1等长,以此类推。
$ z; J$ {1 [) u. }' v5 \) o+ G0 u& n# L) Q/ D$ ]
DDR2数据线等长规则举例
% V! s) q+ [1 m( S0 d$ F6 m2 ]% H' F  G/ F
& o/ E( p# E7 S  z8 }5 `
+ Y4 n6 I! `, f. j- y, O
DDR3数据线等长规则举例
! O& B) i2 W- o7 ]2 P/ J) B& m# _/ S6 t+ k3 K

/ c4 T- A. A3 ?! h8 i
2 c1 v  ~/ D0 T- B' I地址线方面的等长,要特别注意,DDR1/2与DDR是很不一样的。& C& A: P% l( p
0 h0 Z+ P& o6 k! O' `8 \4 f
对于DDR1/2,需要设定每条地址到达同一片DDR的距离保持等长,如下图。3 {: U9 L( k/ L! ^: X
, u. T4 [/ P4 ^

+ N5 I( p3 R8 E' x
: {2 n7 Z  W2 |对于DDR3,地址线的等长往往需要过孔来配合,具体的规则均绑定在过孔上和VTT端接电阻上,如下图。可以看到,CPU的地址线到达过孔的距离等长,过孔到达VTT端接电阻的距离也等长。
! r; I! T9 G; F$ o7 v0 m+ W% \8 ?) g7 U9 B5 Q' f' M+ E
9 h! W- e; P1 J" X$ K
& M8 d; g: g' V5 a4 u+ Q4 T) S! _% C: G
补充一点,很多时候,地址线的等长要求不严格,这一点我还没有尝试过。在本人设计的这些产品中,地址线,数据线都做了25mil的Relative Propagation Delay的等长规则设定。关于等长规则设定的细节在这里不再赘述,有兴趣的话,可以发邮件给无线时代。
! X) z8 D  ]7 r0 \3 u1 _( J
5 H+ Y' {5 k: m/ ~5 c8 C6 g第七步,绕等长
9 L' Q1 ]: q4 F; B1 J  n5 K9 j$ ~/ i7 ?& b- X* x# r- y
完成等长规则的设定后,最后一步也是工作量最大的一步:绕等长。% N- I% E# ]7 W6 f; B
. W! ~! X3 f$ W, W  |3 ~( D! r& b
在这一步,我认为只有一点规则需要注意:尽量采用3倍线宽,45度角绕等长,如下图。
' b  y8 C% |! O( i# E9 s1 _8 C1 z4 b; Z6 a  C1 M! H  P9 Z
. ]* p  T$ U' c) n: D
% _' Z: w/ C3 }, e4 D: x; l" {
绕等长完成后,最好把DDR相关网络锁定,以免误动。
* B! R3 e2 f1 t3 N, @
) u. l" Y  Q8 [7 l. n
& b0 M" @3 U; S, ]' G( ^* s
% J4 F: N% Q) P% N6 U. L( @5 n到这里,DDR走线就已经完成了,在本人设计过的三,四十种产品中,都是按照上面的规则与过程完成的,DDR2最高规格是DDR2-800,512MB,DDR3最高规格是DDR3-1600,1GB,都可以很稳定的工作,无论性能还是可靠性,都未曾出过问题。
1 r& F. k" f+ q0 T; o) N* b4 b' B7 ^4 k8 o; m

/ c+ n& z  B2 L6 g

评分

参与人数 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绘制, p0 s1 r/ Y9 A& N( q# {- H! a1 x
    ) O3 E' F. h/ G. D
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-11 20:03 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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