本文大部分是基于 DDR2 Spec 的理解并进行解释,包括很多时序图,因而
很多细节问题需要参考 DDR2 spec。DDR2 的 spec 在目前最新版本是 jesd79-2c
可在 www.jedec.org/download/search/JESD79-2C.pdf 下载到,做仿真仿真,我觉得首
先要把仿真时序部分先弄清楚,那么仿真的事情已经完成一半。讨论几个概念
仿真工具的使用
Cadence pcb si: 板级仿真软件,时序计算比较方便
Synopsys Hspice: 晶体管级仿真软件,差分线仿真感觉精确度比 pcb si 好点
Ansoft HFSS: 三维电磁场仿真软件,提取过孔模型等
DDR2 工作方框图
在子卡定义的时候经常有 single rank 以及 dual rank 的区分,从仿真角度来看,
如果一个数据线带 2 个 SDRAM,那么认为是 double rank
不妨来看下 DDR2 sodimm 的 Raw card A 定义,它是 dual rank,原因在于,Raw
card A 采用的 SDRAM 是 X16,而且 Raw card A 上面有 8 个 SDRAM,而 sodimm
的架构是 X64,因而每根数据线连到 16X8/64=2 SDRAM
仿真频率(Switching frequency)的选择
通常大家对于仿真频率选择有点迷糊,特别是 DDR2 产品,比如说定义 DDR2
的数据传输为 667 MT/s,那么 Clock/data/cmd/ctl 的仿真频率如何选择,不妨看
下面的时序图
考虑 Clock 时钟,他一个周期比如说 T0 它包含 2 个 bit01 信息,对于 DDR2 667
来说 bit 数据流 667Mbit/s,实际仿真的频率为 333MHz
考虑 Address/CMD,在此是 1T,通过时序图可以看到,它是 clock 时钟的一半,
仿真的频率为 167MHz,因而可以得到下面的仿真频率 Clock 333MHz、Data
333MHz、Control 167MHz、Address/Cmd 167MHz(1T) 83(2T)。同理对于 pcie 类
似的 2.5Gbit/s,他们仿真频率为 1.25GHz
仿真 DDR2 的类型
通常在主板设计中可能用到如下的 DDR2 类型:直接在板上用 SDRAM 芯片;
使用 dimm(DIMM 大部分用在台式机上面);使用 sodimm(sodimm 大部分用在
笔记本电脑等上面)。实际上 DIMM/SODIMM 只是种规格,相当于插卡,插卡
板上采用 DRAM 芯片,对于仿真来说,它们只不过是多板仿真,接口不同而已。以下几点特别提出来,因为在仿真的时候,有可能碰到,虽然大同小异
a. 带 ECC 功能的 DDR2 以及不带 ECC 功能的 DDR2,相当于多出来一组数据线,
不过他不是用来传输数据,而是用来检测数据的有效性
b. 带 Register 功能的 DDR2 以及不带 Register 功能的 DDR2,由于 ADDR 带的
负载比较重,所以在插卡上加个 register(buffer)来重新驱动 addr,因而计算公式
有些差异,但是仿真方法思路一致,在此不对于其进行赘述
具体大家可以去 www.micron.com 查询,还有可去下载 JEDEC 给出 board file,
大家可以进行对比。
ODT(on die termination)的概念
大家如果用过 DDR 会记得板上数据线后经常有个尾巴(56Ohm 上拉到电源
2.5V),在 DDR2 把这个尾巴集成到 SDRAM 中所谓 ODT 并提供几种终端方式
(比如可以在寄存器设置开启 150/75/50 Ohm 等等)
时序图的概念
在 DDR2 中有 2 时序,读时序以及写时序,他们的时序图如下图所示
这儿列出的是 Memory 的时序,实际上 Memory controller 也有此类似的时序。由
于定义的不同,在这会产生两种不同的时序计算方法,一个以有效窗口概念来计
算,一个以具体的 setup time 以及 hold time 来计算。
有效窗口概念:发送端产生的 skew+Interconnect 产生的 skew《接受端能容许的
skew(Freescale 芯片 MPC 系列经常是这么定义的)
setup time 以及 holde time 概念:发送端的有效 setup time》nterconnect 产生的 skew
+接受端需要的 setup time 以及发送端的有效 hold time》nterconnect 产生的 skew
+接受端需要的 hold time(Intel 芯片系列经常是这么定义的)
下述以前仿真的步骤来列出时序计算中必须考虑这几个事情
a 叠层结构的设计(涉及全局,包括 pi/emc 问题等,其计算说明已经贴出,在以
后版本会讨论如何设计);b 走线拓扑的选择;c 串扰的考虑;d 时序计算;e 制
订 design guide(规则)
考虑前 3 步骤是为 4 服务的,用来计算它对于时序的影响,第 4 步是用来计算最
终时序并推出第 5 步给 layout 规则
叠层结构的设计
通常坏的叠层会产生所谓阻抗不连续性,例如反射问题,串扰问题,EMI 问题,
PI 问题,因而在设计中应遵循如下原则:a 对称性;b 高速信号走线具有完整参
考平面,电源平面与地平面的耦合。
设计方法可以考虑如下
输入:总层数,走线层数,总厚度,阻抗要求
输出:叠层结构,单端信号的走线宽度与差分信号走线宽度以及间距
由于叠层结构设计和厂家制程能力息息相关,在设计的时候一定要和厂家协商。
下面列出在正常单端阻抗 55Ohm 范围变化下所带来的 skew
如上图所示,阻抗越高,Slew rate 越快,幅度越大,但是 aperture 越小, jitter 越
大,当在阻抗范围内变化时,有 5ps 的 skew 产生
拓扑结构的类型
目前的拓扑结构通常有:点到点(基本上目前高速信号所用的拓扑结构);多点
(菊花链型,树型,星型等等,多用于低速多负载)
在 DDR2 仿真中,如果采用插卡方式,拓扑结构可选择余地不多,通常需要做
的事情如下:确定驱动能力;确定 ODT 开启选项(和波形/时序设计相关)
通过调整驱动能力和开启 ODT 选项,产生如下波形
如上图所示,ODT 阻抗越高,Slew rate 越快,幅度越大,但是 aperture 越小, jitter
越大,在此做个平衡,选择 1.75XODT150(选择强驱动通常是带 2 个负载等)
在 micron 的 appnote 给出如下的 odt 配置
串扰的分析
通常串扰分为电感性以及电容性,他们在传输线上叠加就生成前向串扰和后向串
扰,其对于波形的影响表现在幅度以及 slew rate 上面,如果叠加成眼图来看,在
时序上表现为 jitter(负载加载效应)。相邻走线层要按照垂直方向走线也就是因为
考虑宽边耦合 crosstalk。下图是不同的干扰眼图
从上图可以看出,采用 1:2 的 wdith:space 以及 1:3 的 wdith:space 波形差异不
大,因而设计的时候可以走 1:2 的 wdith:space(更短的线可以采用 1:1 等等)。
注意大家经常看到说 DDR2 走线要按照 1:2 的 wdith:space,实际上他们是根据
crosstalk 大小而确定,比如受驱动能力的影响,比如受线长的影响等
时序分析
目前时序分析基本上分为共时钟信号时序以及源同步时钟时序类型,无论类型怎
么分,他们都表现为要满足 setup time 以及 hold time 要求。
共时钟信号计算公式如下:
具体计算公式的意义大家可以去查 high speed digital system design,在此有个很
重要问题,怎么在 spec 里面找时序参数?通常来说在 datasheet 里面有 electrical
characteristic,里面包含 AC/DC 参数,比如在 JESD79-2C.pdf P75 里面你可以找
到以下一些参数,对照时序图你可以找到你所需要的值