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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
4 v* d$ p* G! f$ S/ S9 Z- Y( x
多年前,无线时代发布了一篇文章关于DDR布线指导的一篇文章,当时在网络上很受欢迎,有很多同行参与了转载。如今看来,那篇文章写得不够好,逻辑性不强,可操作性也不强。在近几年的硬件产品开发中,本人总结出了一套DDR布线方法,具有高度的可行性,于是本人再次编写一份这样的文章,除了讲述DDR布线规则,还想讲述一下布线过程,采用本人的布线过程可以少走很多弯路。本文即将讲到的所有方法,无线时代都经过实际检验。
2 l8 n- |8 A7 q2 |8 m# v! x+ z7 e1 D3 L" Y2 |2 T
DDR布线通常是一款硬件产品设计中的一个重要的环节,也正是因为其重要性,网络上也有大把的人在探讨DDR布线规则,有很多同行故弄玄虚,把DDR布线说得很难,我在这里要反其道而行之,讲一讲DDR布线最简规则与过程。/ w( M+ `8 W; S9 T/ d9 f( q$ |

  k. q6 j, Z5 G如果不是特别说明,每个步骤中的方法同时适用于DDR1,DDR2和DDR3。PCB设计软件以cadence Allgro 16.3为例。4 L2 T& l" U; y# _8 N7 v% C- x
: v  C$ b$ ^, J0 C7 C
第一步,确定拓补结构(仅在多片DDR芯片时有用)
1 _8 J3 v8 X1 l9 x2 M% {! H

! j. B& |7 m$ J; l# Q$ ]首先要确定DDR的拓补结构,一句话,DDR1/2采用星形结构,DDR3采用菊花链结构。- Q1 e9 B! O* }. ?3 a" }! B& F1 P
7 }( z# g6 I& ~* x- k
拓补结构只影响地址线的走线方式,不影响数据线。以下是示意图。: I  [( D# i6 f* x$ g

( j6 P, b0 h8 Y/ p& x
( H' a4 H- \# ?
. z+ B+ X5 k5 R) q+ ^* B# Y星形拓补就是地址线走到两片DDR中间再向两片DDR分别走线,菊花链就是用地址线把两片DDR“串起来”,就像羊肉串,每个DDR都是羊肉串上的一块肉,哈哈,开个玩笑。
% l8 i* G# j$ r5 H1 i* B( V
1 x# @* A! E& S! f. @. e* K+ b2 k
! F, a  S8 d( y9 J6 b8 h; k( H
第二步,元器件摆放
1 h% j; H" q/ @$ {3 h
) a; i7 c6 |$ U0 W  V# x确定了DDR的拓补结构,就可以进行元器件的摆放,有以下几个原则需要遵守:4 ^6 S, y1 J& ?' J
' P& \$ W7 c% ~+ m" H
原则一,考虑拓补结构,仔细查看CPU地址线的位置,使得地址线有利于相应的拓补结构
1 _( a$ l; K5 y5 {; R# |0 |+ d& b* T6 G  f
原则二,地址线上的匹配电阻靠近CPU
6 e/ V2 D/ T2 F6 F- }" S0 c/ K# b$ h: T! X6 ], o! a2 T. M
原则三,数据线上的匹配电阻靠近DDR
; [4 F$ g' n. H' L; D8 ?  Q/ Y7 J$ y% W0 Y' N
原则四,将DDR芯片摆放并旋转,使得DDR数据线尽量短,也就是,DDR芯片的数据引脚靠近CPU) U% s1 G3 y* d* w) U% D% \1 W

# i: ^$ k: t8 m% v0 k原则五,如果有VTT端接电阻,将其摆放在地址线可以走到的最远的位置。一般来说,DDR2不需要VTT端接电阻,只有少数CPU需要;DDR3都需要VTT端接电阻。3 u9 S0 V7 ?2 B' ^0 N' [4 p. L
5 C7 y; L0 {% s1 N8 x# q$ d
原则六,DDR芯片的去耦电容放在靠近DDR芯片相应的引脚
3 q# R1 v# g* G
# B7 L- j2 Y$ ?4 Y& D9 C0 i以下是DDR2的元器件摆放示意图(未包括去耦电容),可以很容易看出,地址线可以走到两颗芯片中间然后向两边分,很容易实现星形拓补,同时,数据线会很短。0 a7 r5 j( p7 |: L. v) [( {2 }5 \
% k7 R0 g. g! Z8 P! A

0 q" w- K6 H( h/ j& ]3 C! Y+ j# s1 Z) w" x. s; L
以下是带有VTT端接电阻的DDR2元器件摆放示意图,在这个例子中,没有串联匹配电阻,VTT端接电阻摆放在了地址线可以到达的最远距离。# q' ], U; u, R3 B
  D" {' P* g. x5 a: X5 }7 e

/ q# e& g2 {$ P0 C
7 `" Y+ x4 @- z以下是DDR3元器件摆放示意图,请注意,这里使用的CPU支持双通道DDR3,所以看到有四片(参考设计是8片)DDR3,其实是每两个组成一个通道,地址线沿着图中绿色的走线传递,实现了菊花链拓补。地址线上的VTT端接电阻摆放在了地址线可以到达的最远的地方。同样地,数据线上的端接电阻也放置在了靠近DDR3芯片的位置,数据线到达CPU的距离很短。同时,可以看到,去耦电容放置在了很靠近DDR3相应电源引脚的地方。
8 G. u8 }) _/ t- G$ u7 }0 Q$ A! Q9 i8 U
8 [6 W9 z1 k2 {/ c8 s
+ }4 t. U" a8 ]$ E9 ^
第三步,设置串联匹配电阻的仿真模型7 i+ {. Z" p* A8 `6 w& @
3 c" l. H- f$ _2 K
摆放完元器件,建议设置串联匹配电阻的仿真模型,这样对于后续的布线规则的设置是有好处的。
6 ~. {: T6 Y/ M0 e2 ?8 {
' A/ t5 }+ b, W) U  b7 D$ c点击AnalyzeSI/EMI SimModel Assignment,如下图。
$ S7 R" q# S7 v
% U+ C$ `) E. h/ x9 {: _/ L  _/ x ) ~# m* h; H8 p8 Z
$ X5 s6 D6 x+ l" S
然后会出来Model Assignment的界面,如下图2 e$ o7 w; c- C2 `2 o3 ?! i# e

1 c+ U7 c" j( i* Q2 q5 ^3 N 5 x0 W! j8 ^5 h" S6 `
- x6 K- `0 f# ?+ n; l7 x
然后点击需要设置模型的器件,通常就是串联匹配电阻,分配或创建合适的仿真的模型,如果不知道如何创建,请在互联网上搜索或发邮件给无线时代。7 o" f$ T- y- }; d7 h( g( d2 [( w
9 ~2 r$ h5 Z; Y5 R1 j

0 p2 y9 y( l, g7 o7 X9 m7 F  R
, m* B  S1 m9 D分配好仿真模型之后的网络,使用Show Element命令,可以看到相关的XNET属性,如下图。
, ]; L  X3 r7 ~+ {; u0 ^* d+ L9 n& b8 x# }/ e4 J% C2 h- ?. f# v5 N
1 L4 ?7 o% l4 F8 |* U$ L# i
7 [6 S" S* \/ Y% P4 c
第四步,设置线宽与线距( j5 N2 {1 A2 _  g' t
$ G1 `/ W" f* ?# A0 c
1. DDR走线线宽与阻抗控制密切相关,经常可以看到很多同行做阻抗控制。对于纯数字电路,完全有条件针对高速线做单端阻抗控制;但对于混合电路,包含高速数字电路与射频电路,射频电路比数字电路要重要的多,必须对射频信号做50欧姆阻抗控制,同时射频走线不可能太细,否则会引起较大的损耗,所以在混合电路中,本人往往舍弃数字电路的阻抗控制。到目前为止,本人设计的混合电路产品中,最高规格的DDR是DDR2-800,未作阻抗控制,工作一切正常。4 s4 l6 k9 V  R9 V2 x6 x- l) y* X' E5 g

2 a9 m* r, m6 R( |* f2. DDR的供电走线,建议8mil以上,在allegro可以针对一类线进行物理参数的同意设定,我本人喜欢建立PWR-10MIL的约束条件,并为所有电源网络分配这一约束条件,如下图。' {: c( A4 k/ C" n  W% [

5 l: j" Z2 S7 Y 9 s8 V) ~: N0 E8 _" }% f# n
; {; ?. ~+ R, \
3. 线距部分主要考虑两方面,一是线-线间距,建议采用2W原则,即线间距是2倍线宽,3W很难满足;二是线-Shape间距,同样建议采用2W原则。对于线间距,也可以在Allegro中建立一种约束条件,为所有DDR走线(XNET)分配这样的约束条件,如下图。
# ^& F7 G8 Z/ \% i: ] " T2 N5 w4 C9 \$ d# {
5 t9 e) i1 `% H: G3 ]: v6 ^
4. 还有一种可能需要的规则,就是区域规则。Allegro中默认的线宽线距都是5mil,在CPU引脚比较密集的时候,这样的规则是无法满足的,这就需要在CPU或DDR芯片周围设定允许小间距,小线宽的区域规则,如下图。5 k( h5 ]5 T# G6 M: T4 U6 _. R
( Z- G: o4 x& Y; Q/ }
) c) n9 h& ~. T+ N4 P9 O9 o1 P! _+ Z" `

. X( C& T6 F& s+ J( R# l- |第五步,走线
' a8 O( O9 Q5 l( d
7 }! C( t$ x, L- |/ e( _4 x% i走线就需要注意的内容比较多,这里只做少许说明。  s5 R$ @! K/ k5 M

8 ~1 L; k; Q6 E1 h
  • 所有走线尽量短
  • 走线不能有锐角
  • 尽量少打过孔
  • 保证所有走线有完整的参考面,地平面或这电源平面都可以,对于交变信号,地与电源平面是等电位的
  • 尽量避免过孔将参考面打破,不过这在实际中很难做到
  • 走完地址线和数据后,务必将DDR芯片的电源脚,接地脚,去耦电容的电源脚,接地脚全部走完,否则在后面绕等长时会很麻烦的
    9 T6 h& H1 s$ d8 I# _0 H
2 M. z$ t/ U+ R+ M4 {6 x3 E) g
下图是完成的DDR走线,但尚未绕等长。3 K1 r6 W; w6 S

( x0 x+ ^7 j1 ~( v " ]7 m8 c& d: j8 n
3 e8 p% z" `% e' }/ [$ M) B2 K
第六步,设置等长规则" I6 x6 }# N3 P1 g6 \' ?

3 D' |% Y' _: n: J7 l+ e( L对于数据线,DDR1/2与DDR3的规则是一致的:每个BYTE与各自的DQS,DQM等长,即DQ0:7与DQS0,DQM。等长,DQ8:15与DQS1,DQM1等长,以此类推。
, m) s0 K& I4 _6 @/ C
/ W- p. `* F2 D8 y/ SDDR2数据线等长规则举例
% I8 Q1 L0 @! T. N$ Q, @5 b& G2 e# N( a/ s7 e

9 D; U) d$ Y  |- q" o) d9 q& p. j( k3 R1 g
DDR3数据线等长规则举例
2 ?: V, o$ T9 i8 }  H. |, z7 D( q0 L- L  ?0 D) t/ V$ N! ~7 B
+ w- b) {: V% m5 U5 f

1 W# Z, w. O* X7 Z! {6 c5 U地址线方面的等长,要特别注意,DDR1/2与DDR是很不一样的。7 x) |, B! V& ^% m, b
% R- t& F5 Y* B- J' b
对于DDR1/2,需要设定每条地址到达同一片DDR的距离保持等长,如下图。4 W3 r3 V- G* u6 q& W% N. g! A$ J
% [# K7 h" w7 H% N5 C* H
+ N0 V* O7 z) T  @) v7 c2 \

3 ?; @4 a, z( V: U( m对于DDR3,地址线的等长往往需要过孔来配合,具体的规则均绑定在过孔上和VTT端接电阻上,如下图。可以看到,CPU的地址线到达过孔的距离等长,过孔到达VTT端接电阻的距离也等长。
# m3 r! V' b( r
9 s! A8 \+ N8 X( x) W4 b& A / C+ y" e: ]4 d. i+ @8 n( _0 w( d
6 I3 ?. r. E* S" ~: ]9 E
补充一点,很多时候,地址线的等长要求不严格,这一点我还没有尝试过。在本人设计的这些产品中,地址线,数据线都做了25mil的Relative Propagation Delay的等长规则设定。关于等长规则设定的细节在这里不再赘述,有兴趣的话,可以发邮件给无线时代。
" B) O3 ?: C9 Q3 J% H5 v/ u! z4 b9 K8 r+ |0 ^
第七步,绕等长& {1 K$ j/ \9 t5 B1 p1 g' J0 E& p

1 R, O& U) M0 W3 l- ^完成等长规则的设定后,最后一步也是工作量最大的一步:绕等长。0 ~# J+ s$ O8 N; T

( v& A7 _5 O+ `. t# Z在这一步,我认为只有一点规则需要注意:尽量采用3倍线宽,45度角绕等长,如下图。
8 B$ H2 Y6 |* m9 |$ k& i  p, w1 [0 `1 c1 n8 C: J: D
0 F# n; @5 Y0 b/ X; p
: D& m, C2 q( L8 i2 n. [0 Z7 v& s3 H
绕等长完成后,最好把DDR相关网络锁定,以免误动。
8 D0 M! g4 W$ A+ G/ o% e" A% L- r9 m  Z$ `, d

  E$ \/ P1 W' a( |
$ f1 q3 U8 G. v到这里,DDR走线就已经完成了,在本人设计过的三,四十种产品中,都是按照上面的规则与过程完成的,DDR2最高规格是DDR2-800,512MB,DDR3最高规格是DDR3-1600,1GB,都可以很稳定的工作,无论性能还是可靠性,都未曾出过问题。
" Z! q; S% H. s" s: v  ?! @! c% m, l9 P; X( u+ F5 ?: d
% P' P1 D. c6 [0 J, P

评分

参与人数 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绘制
    2 M) o. ~3 h% a; I9 u' D- C2 S2 O7 ?  o9 x0 Z
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-4 21:44 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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