当前位置:文档之家› Cadence DDR3 Design-in Kit使用指南

Cadence DDR3 Design-in Kit使用指南

Cadence DDR3设计套件使用指南:Cadence DDR3 Design-in Kit user Guide

Doc Scope : Cadence 16.5

Doc Number : SFTEC11004

Author : Mars

Create Date : 2012-1-11

Rev : 1.00

目录

1.1Cadence DDR3设计套件 (3)

1.1.1设计套件的介绍 (3)

1.1.2设计套件的结构 (4)

1.1.3需要用到的EDA工具 (4)

1.1.4推荐使用流程 (4)

1.1.5安装套件 (5)

1.2通过向导功能使用DDR3设计套件 (6)

1.2.1生成项目 (6)

1.2.2在Timing Designer里面估算传输延迟 (7)

1.2.2.1写操作的参数设置 (8)

1.2.2.2读操作的参数设置 (13)

1.2.2.3地址信号的参数设置 (15)

1.2.3在SigXplorer里面选择buffer进行仿真和测量 (16)

1.2.3.1数据写操作的仿真 (17)

1.2.3.2数据读操作的仿真 (19)

1.2.3.3数据选通(Strobe)信号的仿真 (21)

1.2.3.4时钟信号的仿真 (24)

1.2.4时序关联的拓扑仿真 (26)

1.2.5产生电气规则(ECsets) (31)

1.2.6验证时序 (33)

1.2.7应用规则 (36)

1.2.8在板上运行总线仿真 (39)

1.3双Slot系统的设计方法 (42)

1.3.1写操作条件分析一 (42)

1.3.2写操作条件分析二 (44)

1.3.3读操作的分析 (44)

1.4采用实际的DIMM板分析 (46)

1.4.1分别提取DIMM的拓扑 (46)

1.4.2拓扑结构合并及仿真分析 (49)

1.4.3分析每个Slot是否满足约束 (50)

1.1Cadence DDR3设计套件

1.1.1设计套件的介绍

DDR3的设计套件为用户提供了从头至尾的DDR3设计解决方案。这个套件包括模型、拓扑结构、时序参数、自定义测量参数、电气规则设置、PCB实例、以及一个带有向导功能的引导流程界面。利用这个套件可以生动地体现Cadence PCB SI结合Timing Designer工具来解决实际问题的重大意义和价值。

这个DDR3设计套件仅仅是用作一般性的应用,但用户也可以经过自定义的配置去满足一些不同的需求:

●内存控制器和内存颗粒的IO缓冲器的模型可以根据供应商来选择;

●连接器的模型可以根据实际情况选择;

●拓扑的实例可以自己产生;

●时序参数设置可以根据供应商的Spec来确定;

●相对传输延迟的约束条件产生的方法;

●根据不同AC阈值采用合适的Eye-mask;

●可以根据需求增加定制化的参数测量

1.1.2设计套件的结构

●速率

?800/1066/1333/1600

●DIMM的类型

? A 到F

?U-DIMM(无缓冲器)/RDIMM(带寄存器)/SO-DIMM

●地址信号

?1T/2T

●AC阈值

●斜率的减额

下面是这个设计套件的目录结构的一个截图:

1.1.3需要用到的EDA工具

DDR3设计套件中需要用的EDA软件包括:

●EMA TimingDesigner9.2.5

●Allegro PCB SI 16.5

1.1.4推荐使用流程

下面的流程图表是Cadence DDR3设计套件推荐的操作流程:

1.1.5安装套件

DDR3设计套件是一个压缩包文件,首先需要进行解压缩操作,得到以下4个目录:

目录名称内容

Bin 包含DDR3.tcl文件,运行可以启动向导程序

DDR3Kit 包含建立DDR3设计项目的所有模型、标准、参数等信息

Design_data 当规则产生之后,诸如连接器、控制器、其它通用器件的DML文件等被存储在这个目录

Workingdir 开始是一个空目录,当项目建立之后,和本项目相关的模型、参数等信息被复制到这个目录下

同时,系统还需要安装Tcl开发插件tcl/tk8.4.19.5,这样才能运行*.tcl的应用程序。可以按如下步骤在你的系统上安装tcl:

1.访问如下链接:https://www.doczj.com/doc/0d12758646.html,/activetcl/downloads

2.选择Tcl.8.4.19.5 for windows版本下载,然后双击运行安装(注意查看自己电脑系统32位还是64位):

下载的安装文件如下,双击运行就可以完成该插件的安装:

1.2通过向导功能使用DDR3设计套件

1.2.1生成项目

双击<安装目录>\bin\ddr3.tcl,运行向导程序,这时候DDR3 Design-in Kit Flow Manager窗口将出现,这个向导将一步步引导你完成整个DDR3的设计流程。

在用户参数定义(User-Defined Parameters)的页面,可以进行项目的基本参数定义:

1.定义套件的安装目录,这个目录必须和你解压DDR3设计套件的目录完全一致;

2.定义DDR3的速率,可以选择800,1066,1333和1600,在本案例中,我们选择800;

3.定义地址的时序类型,可以选择1T或者2T,在本案例中,我们选择2T;

4.选择内存条的数目配置,本案例中,选择单插槽,即One Slot;

5.定义内存条的类型,可以选择A、B、C、D、F,这里我们选择Card C;

6.选择是否想用现实存在的内存条PCB,这里我们选择No

7.选择下一步。

当然,如果之前已经建立过项目,这里也可以直接选择“Load Project”调用现有的项目。

完成这些步骤之后,项目开始建立,当建立完成之后,所有需要的模型和参数等都被复制到Workingdir这个工作目录,同时下一个向导页面出现了。

1.2.2在Timing Designer里面估算传输延迟

在向导的第二个步骤中,将在Timing Designer中给数据的读写以及地址信号进行时序估算相关的一些参数设置,如频率、AC阈值电平、抖动参数等等,同时你要决定可以满足时序规范要求的走线延迟的范围等。

1.点击“Timing Library”按钮,选择时序相关的模型存放的路径;

向导会自动跳转到Timing Designer项目相关文件存放的目录,该目录处于被选中的高亮状态。

2.双击该目录“Timing_Designer”;

3.双击“2T”目录,可以看到如下文件内容:

4.然后就要在Timing Designer里面依次对数据的写、读、地址信号进行参数设置。

1.2.2.1写操作的参数设置

下面进行写操作的参数设置,双击“DDR3_Timing.tdp”文件,这个项目文件将自动被Timing Designer 软件打开。

1.双击“Read_Write Block”下面的“Write_timing”,Timing Designer会打开数据、数据选通(Strobe)信号的波形图:

注意:要想显示互连中引入的信号抖动(Jitter)波形情况,需要将窗口菜单中的显示按钮()点中。

2.选择菜单window下面的Parameter Window,就可以看到所有参数以表格的形式全部显示出来:

所有的输入参数定义在ControllerParameters一栏(上、下),可以根据项目情况,设置如下参数:

参数定义

$DataRate 定义信号速率,从800、1066、1333、1600中选择

Tco_dqs 数据选通信号的内部延迟,从时钟下降沿开始到strobe信号在管脚有效输出的时间

Tco_dq 数据信号的内部延迟,从时钟下降沿开始到数据信号在管脚有效输出的时间

$AC AC阈值,有效值只有150或者175两个取其一

$Strobe 数据选通信号的斜率(Slew Rate),必须是一个整数,必须从4、3、2、18(1.8)、16(1.6)、14(1.4)、12(1.2)、1中选一个

$Data 数据选通信号的斜率(Slew Rate),可以是浮点类型(小数)的值

在PropagationDelay下面的几个参数都是PCB的走线延迟变量设置,在这部分,用户可以定义从控制器(controller)到接收端(RAM)的传输延迟。

注意:在本案例中,这些值都已经为用户计算好,但在实际的应用中,用户需要自己在Sigxplorer中通过仿真来产生这些数值。

参数定义

Etch_Delay_ClkCtrl 时钟信号从时钟发生器输出端到控制器接收端的延迟

Etch_Delay_ClkMem 时钟信号从控制器输出端到内存芯片接收端的延迟

Etch_Delay_DQS 数据选通信号从控制器输出端到内存芯片接收端的延迟

Etch_Delay_DQ 数据信号从控制器输出端到内存芯片接收端的延迟

在Constraints一栏下面,需要保证所有参数在“Margin(裕量)”一栏的数据都是绿色,如果有红色,则代表时序上有违背的情况出现。

参数定义

tDQSS 数据选通信号的上升沿到时钟上升沿的时间差

tDSS 数据选通信号下降沿到时钟上升沿的保持时间

tDSH 数据选通信号下降沿到时钟上升沿的建立时间

tDIPW 数据信号的脉冲宽度

tDS 数据信号的建立时间

tDH 数据信号的保持时间

tCH 时钟信号保持高电平的脉冲宽度

tCL 时钟信号保持低电平的脉冲宽度

tDQSH 数据选通信号保持高电平的脉冲宽度

tDQSL 数据选通信号保持低电平的脉冲宽度

3.对表格中的部分参数进行如下修改:

a) 设置$DataRate为800,这是本项目中设计期望的速率;

b) 确保Tco_dqs的最小值为606,最大值为646,这个值是从数据手册中得到的。可以通过在公

式中增加jitter、增加额外的Skew偏移来达到希望得到的最大、最小值。这里,用户可以将公

式中的偏移量参数[155,,165]修改为[1,,1];

c) 调整Tco_dq的值,使得最小、最大值变为40、130。相应地,这里可以通过调整vTco_raw的

参数值来实现。(本案例不需要修改,保持vTco_raw 的值为[70,,100])。

小提示:在DDR3 Kit的第二步有个延迟计算器,点击“Calculate”就可以弹出换算界面,可以将以Mils单位的长度直接换算成以ps为单位的延迟,反之亦然。

4.留意如下几个参数,其数值已经预先设定:

●$AC=150,代表和Vref相关的交流阈值

●$strobe=4,代表斜率

●JitterSpecifications,有几个抖动相关的参数,从时钟的工作周期、时钟锁相环PLL等数据手册上

得到。

我们的设计目标是建立时间和保持时间在裕量(Margin)上能得到平衡。理想的结果是,所有的约束规则都要满足,同时随着互连中Jitter增加更多的情况下,建立和保持时间条件依然能满足。

5.在Timing Designer Manager界面下,双击Libraries→PCBlibs下面的Pre.tl,进入器件库管理的界面,这里可以修改Jitter、走线延迟等变量参数。

回到刚才打开的Parameter界面,可以看到在tDQSS参数的Margin一栏的数字是红色的,这就说明当前这个参数不满足时序要求。这时候需要在Library下面重新调节一些参数的值,使得这边的红色数值变为绿色。这里我们可以调节时钟的走线延迟参数为600,这样数据选通信号和时钟相对的偏移就可以调整为符合tDQSS write-leveling Spec要求。

6.我们依次调节Pre.tl库中如下几个参数的值:

Etch_Delay_ClkCtrl,Etch_Delay_ClkMem,Etch_Delay_Strobe,Etch_Delay_Data

vClkJit,vStbJit,vDatJit

修改的数值如下图所示:

7.再回到Parameter的界面,找到变量vCalcDQSadj,这个参数是软件自动计算出来的优化数值,DQs 需要额外增加的skew,这样可以让数据的建立和保持时间裕量能达到较好的平衡。

8.根据计算出来的结果,我们将vSkewAdj参数设置为79;

9.这时候,我们就可以看到数据的建立和保持时间的Margin就比较平衡了。

10.保存当前的参数设置。

1.2.2.2读操作的参数设置

下面,我们将继续进行数据的读操作的参数设置:

1.在Timing Designer Manager界面,双击打开Data&Strobe Read timing

当打开Read timing窗口的时候,之前在Write timing参数设置中所有进行的参数变更,也会自动更新,软件会弹出参数变更的确认窗口:

2.点击更新全部(update All);

3.在打开的Read_timing参数窗口中,同样需要将$DataRate参数设置为800

4.可以注意到,之前修改的那些延迟参数,在这个表格中都已经更新了。但是建立和保持时间的裕量仍没有达到最佳的平衡。

我们如何再进行优化调整呢?

重新留意vCalcDQSadj参数,软件计算出读状态下DQs的skew最佳调整为13,对比之前写操作的79,我们就需要进行一个权衡,通常我们取其两者中间一点值,比如我们可以选取50作为vSkewAdj的参数值。然后务必确认所有的约束规则栏的Margin是否都变为绿色。

1.2.2.3地址信号的参数设置

在完成了数据信号的读写的设置之后,接下来就是对地址信号相关的参数处理:1.在Timing Designer Manager的窗口下,双击打开Address_2t_0:

2.和前面类似,对库参数的更新update All;

3.设置$DataRate参数为800;

4.在pre.tl库中,设置Etch_Delay_Address参数为2500,然后在Parameter表格中看是否有规则违背的地方;可以看到tIS参数的Margin为红色;

5.我们再把Etch_Delay_Address设置为1500

6.尽可能保证在InterconnectJitterAddress越大的范围内仍然能有足够的建立和保持时间,可以看到,Pre.tl库表格中vAdrJit的值非常大,这是因为地址信号需要到达所有的RAM接收端(多负载)。而

Etch_Delay_ClkMem这些参数和之前数据读、写情况下的配置一样。

7.回到DDR3套件的向导页面,点击Next。

1.2.3在SigXplorer里面选择buffer进行仿真和测量

向导的第三个界面如下图所示,在这一步骤中,用户可以通过仿真确认使用哪个buffer驱动,可以获得最佳的眼图以及噪声裕量:

1.点击“Launch SigXplorer”运行Cadence的SigXplorer工具;

2.选择File Open;

3.选择如下目录:<安装目录>\workingdir\ODT_Topologies\cardC\Read_Write;

4.选择ODT.top 打开;

5.可以看到如下图所示的各部分器件:

6.点击TL_MS8的传输线,进入其参数设置界面;

7.修改长度为4100;

为什么设置4100呢?这是上一个步骤中,我们在Timing Designer中设置了参数Etch_Delay_DQ的值为750ps,转化为Mils长度单位就是约4100mils,用户也可以自己用向导中的换算工具算一下。

1.2.3.1数据写操作的仿真

接下来就是进行数据写操作的仿真。

依次进行激励源添加等参数设置:

1.修改Frequency为800;

2.测量的Cycle设置为5;

3.根据在Timing Designer中和数据信号相关的Tco jitter、互连Jitter等参数,计算仿真工具中设置的jitter 数值。

下面是Timing Designer的写操作图表界面下方的Notes中显示的数据信号互连Jitter (80ps)

我们可以用下面的公式计算数据信号总的Jitter:

(+/-interconnectJitterData)+(Tco_dq Max -Min) +tDCD = 80-(-80)+(130-40) +25 =275ps

4.激励源添加完毕之后,就选择驱动端的buffer和Memory接收端buffer,以便之后进行扫描分析;

驱动端的Buffer模型选择

Memory接收端的Buffer模型选择

5.为了测量眼图相关的一些数据,必须在SigXplorer的测量参数窗口中对下图所示的几个参数前面的选中框进行勾选操作:

6.选择SigXplorer界面的Analyze→Preferences;

7.在Pulse Stimulus页,设置Measurement Cycle为5;

8.在Simulation Parameters页,选择波形精度(Waveform resolution)为50ps;

9.点击simulate运行仿真;

10.在结果窗口中,检查Overshoot high、overshoot low、Eye Height、Eye width、Maximized noise margin等参数结果:

●Eye Width(眼图宽度)需要大于建立时间+保持时间;

●Eye Height(眼图高度)需要大于阈值电平;

●选择噪声裕量尽可能大的;

●下过冲不得超过-0.4V

●上过冲小于1.9V

11.根据上面的判断条件,进行一些权衡,选择相对最佳的情况:

1.2.3.2数据读操作的仿真

接下来,对数据的读操作进行设置和仿真。读操作的仿真需要将控制器buffer设置为三态,而在Memory的buffer端进行激励的添加:

1.计算jitter的值,根据Timing Designer的DQ interconnect Jitter数值为80ps,tDCD的数值为25,则Jitter=80-(-80)+25=185ps (读操作中无Tco的jitter参数);

2.设置控制器端的buffer模型为刚才写操作中结果较好的GENERIC_CONTROLLER_ddr3_drvr_40,而内存端的buffer选择不同驱动能力的几种类型:

3.驱动选择好了之后,需要给作为接收端的内存控制器加上匹配电阻端接。如下图所示:

相关主题
文本预览
相关文档 最新文档