设为首页收藏本站自媒体平台

研发设计门户网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 289|回复: 0

DDR4设计概述以及分析仿真案例(转载0

[复制链接]

7

主题

7

帖子

39

积分

特邀技术专家

Rank: 9Rank: 9Rank: 9

积分
39
发表于 2020-3-5 16:35:24 | 显示全部楼层 |阅读模式

高速电路PCB网,专注于嵌入式方案,信号完整性和电源完整性仿真分析,高速电路PCB设计,各种EDA工具(Cadence\Mentor\\AD\\CAM\ANSYS HFSS)交流学习。

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

x
DRAM (动态随机访问存储器)对设计人员特别具有吸引力,因为它提供了广泛的性能,用于各种计算机和嵌入式系统的存储系统设计中。本文概括阐述了DRAM 的概念,及介绍了SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、DDR4 SDRAM、DDR5 SDRAM、LPDDR、GDDR。
DRAM
DRAM较其它内存类型的一个优势是它能够以IC(集成电路)上每个内存单元更少的电路实现。DRAM 的内存单元基于电容器上贮存的电荷。典型的DRAM 单元使用一个电容器及一个或三个FET(场效应晶体管)制成。典型的SRAM (静态随机访问内存)内存单元采取六个FET 器件,降低了相同尺寸时每个IC 的内存单元数量。与DRAM 相比,SRAM 使用起来更简便,接口更容易,数据访问时间更快。
DRAM核心结构由多个内存单元组成,这些内存单元分成由行和列组成的两维阵列(参见图1)。访问内存单元需要两步。先寻找某个行的地址,然后在选定行中寻找特定列的地址。换句话说,先在DRAM IC 内部读取整个行,然后列地址选择DRAM IC I/O(输入/ 输出)针脚要读取或要写入该行的哪一列。
DRAM读取具有破坏性,也就是说,在读操作中会破坏内存单元行中的数据。因此,必需在该行上的读或写操作结束时,把行数据写回到同一行中。这一操作称为预充电,是行上的最后一项操作。必须完成这一操作之后,才能访问新的行,这一操作称为关闭打开的行。
对计算机内存访问进行分析后表明,内存访问中最常用的类型是读取顺序的内存地址。这是合理的,因为读取计算机指令一般要比数据读取或写入更加常用。此外,大多数指令读取在内存中顺序进行,直到发生到指令分支或跳到子例程。


图1. DRAMs 内存单元分成由行和列组成的两维阵列
DRAM的一个行称为内存页面,一旦打开行,您可以访问该行中多个顺序的或不同的列地址。这提高了内存访问速度,降低了内存时延,因为在访问同一个内存页面中的内存单元时,其不必把行地址重新发送给DRAM.结果,行地址是计算机的高阶地址位,列地址是低阶地址位。由于行地址和列地址在不同的时间发送,因此行地址和列地址复用到相同的DRAM 针脚上,以降低封装针脚数量、成本和尺寸。一般来说,行地址尺寸要大于列地址,因为使用的功率与列数有关。
早期的RAM拥有控制信号,如RAS# (行地址选择低有效)和CAS# (列地址选择低有效),选择执行的行和列寻址操作。其它DRAM 控制信号包括用来选择写入或读取操作的WE# (写启动低有效)、用来选择DRAM的CS#(芯片选择低有效)及OE#
(输出启动低有效)。早期的DRAM拥有异步控制信号,并有各种定时规范,涵盖了其顺序和时间关系,来确定DRAM 工作模式。
早期的DRAM读取周期有四个步骤。第一步,RAS# 与地址总线上的行地址变低。第二步,CAS# 与地址总线上的列地址变低。第三步,OE#变低,读取数据出现在DQ 数据针脚上。在DQ 针脚上提供数据时,从第一步第三步的时间称为时延。最后一步是RAS#, CAS# 和OE# 变高(不活动),等待内部预充电操作在破坏性读取后完成行数据的恢复工作。从第一步开始到最后一步结束的时间是内存周期时间。上述信号的信号定时与边沿顺序有关,是异步的。这些早期DRAM没有同步时钟操作。
DRAM 内存单元必需刷新,避免丢失数据内容。这要求丢失电荷前刷新电容器。刷新内存由内存控制器负责,刷新时间指标因不同DRAM内存而不同。内存控制器对行地址进行仅RAS# 循环,进行刷新。在仅RAS# 循环结束时,进行预充电操作,恢复仅RAS# 循环中寻址的行数据。一般来说,内存控制器有一个行计数器,其顺序生成仅RAS# 刷新周期所需的所有行地址。
刷新策略有两个(参见图2)。第一个策略内存控制器在刷新周期突发中顺序刷新所有行,然后把内存控制返回处理器,以进行正常操作。在到达最大刷新时间前,会发生下一个刷新操作突发。第二个刷新策略是内存控制器使用正常处理器内存操作隔行扫描刷新周期。这种刷新方法在最大刷新时间内展开刷新周期。


图2. DRAM 刷新实现方案包括分布式刷新和突发刷新。
早期的DRAM 演进及实现了DRAM IC 上的刷新计数器,处理顺序生成的行地址。在DRAM IC 内部,刷新计数器是复用器输入,控制着内存阵列行地址。另一个复用器输入来自外部地址输入针脚的行地址。这个内部刷新计数器不需要内存控制器中的外部刷新计数器电路。部分DRAM 在RAS# 周期前支持一个CAS#,以使用内部生成的行地址发起刷新周期。
SDRAM
在接口到同步处理器时,DRAM 的异步操作带来了许多设计挑战。
SDRAM (同步DRAM)是为把DRAM操作同步到计算机系统其余部分,而不需要根据CE# (芯片启动活动低)、RAS#、CAS#和WE#边沿转换顺序定义所有内存操作模式而设计的。
SDRAM增加了时钟信号和内存命令的概念。内存命令的类型取决于SDRAM 时钟上升沿上的CE#, RAS#,CAS# 和WE# 信号状态。产品资料根据CE#, RAS#,CAS# 和WE# 信号状态,以表格形式描述内存命令。
例如,Activate (激活)命令向SDRAM发送一个行地址,打开内存的一个行(页面)。然后是一个Deselect (反选)命令序列,在对列地址发送Read 或Write 命令前满足定时要求。一旦使用Activate命令打开内存的行(页面),那么可以在内存的该行(页面)上运行多个Read和Write命令。要求Precharge(预充电)命令,关闭该行,然后才能打开另一行。


表1. DDR SDRAM 数据速率和时钟速度。
DDR SDRAM
通过提高时钟速率、突发数据及每个时钟周期传送两个数据位(参见表1),DDR (双倍数据速率) SDRAM 提高了内存数据速率性能。DDR SDRAM 在一条读取命令或一条写入命令中突发多个内存位置。读取内存操作必需发送一条Activate 命令,后面跟着一条Read 命令。内存在时延后以每个时钟周期两个内存位置的数据速率应答由两个、四个或八个内存位置组成的突发。因此,从两个连续的时钟周期中读取四个内存位置,或把四个内存位置写入两个连续的时钟周期中。
DDR SDRAM 有多个内存条,提供多个隔行扫描的内存访问,从而提高内存带宽。内存条是一个内存阵列,两个内存条是两个内存阵列,四个内存条是四个内存阵列,依此类推(参见图3)。四个内存条要求两个位用于内存条地址(BA0 和BA1)。


图3. DDR SDRAM中多个内存条提高了访问灵活性,改善了性能
例如,有四个内存条的DDR SDRAM的工作方式如下。首先,Activate命令在第一个内存条中打开一行。第二个Activate命令在第二个内存条中打开一行。现在,可以把Read 或Write 命令的任意组合发送到打开行的第一个内存条或第二个内存条。在内存条上的Read 和Write 操作结束时,Precharge 命令关闭行,内存条对Activate 命令准备就绪,可以打开一个新行。
注意,DDR SDRAM要求的功率与打开行的内存条数量有关。打开的行越多,要求的功率越高,行尺寸越大,要求的功率越高。因此,对低功率应用,一次在每个内存条中只应打开一行,而不是一次打开行的多个内存条。
在内存条地址位连接到内存系统中的低阶地址位时,支持隔行扫描连续内存条中的连续内存字。在内存条地址位连接到内存系统中的高阶地址时,连续内存字位于同一个内存条中。
DDR2 SDRAM
DDR2 SDRAM 较DDR SDRAM 有多处改进。DDR2SDRAM时钟速率更高,从而提高了内存数据速率(参见表2)。随着时钟速率提高,信号完整性对可靠运行内存变得越来越重要。随着时钟速率提高,电路板上的信号轨迹变成传输线,在信号线末端进行合理的布局和端接变得更加重要。
地址、时钟和命令信号的端接相对简明,因为这些信号是单向的,并端接在电路板上。数据信号和数据选通是双向的。内存控制器中心在写入操作中驱动这些信号,DDR2 SDRAM在读取操作中驱动这些信号。多个DDR2 SDRAM 连接到同一个数据信号和数据选通上,进一步提高了复杂度。多个DDR2 SDRAM 可以位于内存系统相同的DIMM上,也可以位于内存系统不同的DIMM上。结果,数据和数据选通驱动器和接收机不断变化,具体取决于读取/ 写入操作及访问的是哪个DDR2 SDRAM。


表2. DDR2 SDRAM 数据速率和时钟速度。
通过提供ODT (芯片内端接),并提供ODT 信号,实现片内端接,并能够使用DDR2 SDRAM 扩展模式寄存器对片内端接值编程(75 欧姆、150 欧姆等等),DDR2SDRAM 改善了信号完整性。
片内端接大小和操作由内存控制器中心控制,与DDR2SDRAM DIMM 的位置及内存操作类型(读取或写入)有关。通过为数据有效窗口创建更大的眼图,提高电压余量、提高转换速率、降低过冲、降低ISI (码间干扰),ODT操作改善了信号完整性。
DDR2 SDRAM 在1.8V 上操作,降低了内存系统的功率,这一功率是DDR SDRAM 的2.5V 功率的72%.在某些实现方案中,行中的列数已经下降,在激活行进行读取或写入时降低了功率。
降低工作电压的另一个优势是降低了逻辑电压摆幅。在转换速率相同时,电压摆幅下降会提高逻辑转换速度,支持更快的时钟速率。此外,数据选通可以编程为差分信号。使用差分数据选通信号降低了噪声、串扰、动态功耗和EMI (电磁干扰),提高了噪声余量。差分或单端数据选通操作配置有DDR2 SDRAM 扩展模式寄存器。
DDR2 SDRAM 引入的一种新功能是附加时延,它使得内存控制器中心能够在Activate命令后,更快地灵活发送Read 和Write 命令。这优化了内存吞吐量,通过使用DDR2 SDRAM扩展模式寄存器对附加时延编程来配置。DDR2 SDRAM使用八个内存条,改善了1Gb和2GbDDR2 SDRAM 的数据带宽。通过隔行扫描不同的内存条操作,八个内存条提高了访问大型内存DDR2 SDRAM的灵活性。此外,对大型内存,DDR2 SDRAM支持最多八个内存条的突发长度。
DDR3 SDRAM
DDR3 SDRAM 是一种性能演进版本,增强了SDRAM技术,它从800 Mb/s开始,这是大多数DDR2 SDRAM支持的最高数据速率。DDR3 SDRAM支持六档数据速率和时钟速度(参见表3)。
DDR3-1066 SDRAM的能耗低于DDR2-800 SDRAM,因为DDR3 SDRAM 的工作电压是1.5 V,是DDR2SDRAM 的83%,DDR2 SDRAM 的工作电压是1.8 伏。此外,DDR3 SDRAM数据DQ驱动器的阻抗是34欧姆,DDR2 SDRAM 的阻抗较低,是18 欧姆。


表3. DDR3 SDRAM 数据速率和时钟速度。
DDR3 SDRAM 将从512 Mb 内存开始,将来将发展到8 Gb 内存。与DDR2 SDRAM 一样,DDR3 SDRAM 数据输出配置包括x4、x8 和x16.DDR3 SDRAM 有8 个内存条,DDR2 SDRAM 则有4 个或8 个内存条,具体视内存大小而定。
DDR2 和DDR3 SDRAM 都有4 个模式寄存器。DDR2 定义了前两个模式寄存器,另两个模式寄存器则预留给将来使用。DDR3使用全部4个模式寄存器。一个重要差异是DDR2 模式寄存器规定了读出操作的CAS 时延,写入时延则是1减去模式寄存器读出时延设置。DDR3模式寄存器对CAS 读出时延和写入时延的设置是唯一的。
DDR3 SDRAM使用8n预取架构,在4个时钟周期中传送8 个数据字。DDR2 SDRAM 使用4n 预取架构,在2个时钟周期中传送4 个数据字。
DDR3 SDRAM 模式寄存器可以编程为支持飞行突变,这会把传送8个数据字缩短到传送4个数据字,这在读出或写入命令期间把地址行12 设为低来实现。飞行突变在概念上与DDR2 和DDR3 SDRAM 中地址行10 的读出和写入自动预充电功能类似。
值得一提的另一个DDR3 SDRAM属性是差分的数据选通信号DQS,DDR2 SDRAM数据通信号则可以由模式寄存器编程为单端或差分。DDR3 SDRAM 还有一个新引脚,这个引脚为活动低异步RESET# 引脚,通过把SDRAM 置于已知状态,而不管当前状态如何,改善系统稳定性。DDR3 SDRAM 使用的FBGA 封装类型与DDR2 SDRAM 相同。
DDR3 DIMM为DIMM上的命令、时钟和地址提供了端接。采用DDR2 DIMM的内存系统端接主板上的命令、时钟和地址。DIMM上的DDR3 DIMM端接支持飞行拓扑,SDRAM 上的每个命令、时钟和地址引脚都连接到一条轨迹上,然后这条轨迹终结在DIMM的轨迹端。这改善了信号完整性,其运行速度要快于DDR2 DIMM树型结构。
飞行拓扑为内存控制器引入了新的DDR3 SDRAM写入电平功能,考虑了写入过程中时钟CK和数据选通信号DQS 之间的定时偏移。DDR3 DIMM 的主要不同于DDR2 DIMM,防止把错误的DIMM 插入主板中。
DDR4 SDRAM
DDR4 SDRAM(Double Data Rate Fourth SDRAM):DDR4提供比DDR3/ DDR2更低的供电电压1.2V以及更高的带宽,DDR4的传输速率目前可达2133~3200MT/s。DDR4 新增了4 个Bank Group 数据组的设计,各个Bank Group具备独立启动操作读、写等动作特性,Bank Group 数据组可套用多任务的观念来想象,亦可解释为DDR4 在同一频率工作周期内,至多可以处理4 笔数据,效率明显好过于DDR3。 另外DDR4增加了DBI(Data Bus Inversion)、CRC(Cyclic Redundancy Check)、CA parity等功能,让DDR4内存在更快速与更省电的同时亦能够增强信号的完整性、改善数据传输及储存的可靠性。
DDR5 SDRAM
作为DDR4内存的继任者,DDR5内存在性能上自然要高出DDR4一大截。从美光公布的文件来看,DDR5内存将从8GB容量起步,最高可达单条32GB,I/O带宽能达到3.2-6.4Gbps,同时电压1.1V,内存带宽将为DDR4内存的两倍。
此外,美光还在芯片论坛上表示DDR5内存将从3200Mhz起步,主流内存频率可达6400Mhz。
同时,美光还表示他们将在2018年成功流片DDR5内存样品,并将在2019年实现正式量产。
据业内人士估计,DDR5内存的普及应该会在2020年来临,所以想要跳过DDR4内存的朋友还要等待一段时间。
GDDR 和LPDDR
其它DDR变种,如GDDR (图形DDR)和LPDDR (低功率DDR),在业内的地位也在不断提高。
GDDR是一种图形卡专用存储技术,目前规定的变种有四个:GDDR2、GDDR3、GDDR4 和GDDR5.GDDR的技术与传统DDR SDRAM 非常类似,但功率要求不同。其降低了功率要求,以简化冷却,提供更高性能的存储器模块。GDDR也是为更好地处理处理图形要求设计的。
简短总结:
SDRAM:为同步动态随机存取内存,SDRAM是为了与CPU的计时同步化所设计,这使得内存控制器能够掌握准备所要求的数据所需的准确时钟周期,因此CPU从此不需要延后下一次的数据存取。举例而言,PC66 SDRAM以66 MT/s的传输速率运作;PC100 SDRAM以100 MT/s的传输速率运作;PC133 SDRAM以133 MT/s的传输速率运作,以此类推。
DDR SDRAM(Double Data Rate SDRAM):为双通道同步动态随机存取内存,是新一代的SDRAM技术。别于SDR(Single Data Rate)单一周期内只能读写1次,DDR的双倍数据传输率指的就是单一周期内可读取或写入2次。在核心频率不变的情况下,传输效率为SDR SDRAM的2倍。第一代DDR内存Prefetch为2bit,是SDR的2倍,运作时I/O会预取2bit的资料。举例而言,此时DDR内存的传输速率约为266~400 MT/s不等,像是DDR 266、DDR 400都是这个时期的产品。
DDR2 SDRAM(Double Data Rate Two SDRAM):为双通道两次同步动态随机存取内存。DDR2内存Prefetch又再度提升至4 bit(DDR的两倍),DDR2的I/O频率是DDR的2倍,也就是266、333、400MHz。举例:核心频率同样有133~200MHz的颗粒,I/O频率提升的影响下,此时的DDR2传输速率约为533~800 MT/s不等,也就是常见的DDR2 533、DDR2 800等内存规格。
DDR3 SDRAM(Double Data Rate Three SDRAM):为双通道三次同步动态随机存取内存。DDR3内存Prefetch提升至8 bit,即每次会存取8 bits为一组的数据。DDR3传输速率介于 800~1600 MT/s之间。此外,DDR3 的规格要求将电压控制在1.5V,较DDR2的1.8V更为省电。DDR3也新增ASR(Automatic Self-Refresh)、SRT(Self-Refresh Temperature)等两种功能,让内存在休眠时也能够随着温度变化去控制对内存颗粒的充电频率,以确保系统数据的完整性。
DDR4 SDRAM(Double Data Rate Fourth SDRAM):DDR4提供比DDR3/DDR2更低的供电电压1.2V以及更高的带宽,DDR4的传输速率目前可达2133~3200 MT/s。DDR4 新增了4个Bank Group 数据组的设计,各个Bank Group具备独立启动操作读、写等动作特性,Bank Group 数据组可套用多任务的观念来想象,亦可解释为DDR4 在同一频率工作周期内,至多可以处理4 笔数据,效率明显好过于DDR3。 另外DDR4增加了DBI(Data Bus Inversion)、CRC(Cyclic Redundancy Check)、CA parity等功能,让DDR4内存在更快速与更省电的同时亦能够增强信号的完整性、改善数据传输及储存的可靠性。


DDR4关键技术和方法分析

1.1DDR4与DDR3 不同之处
相对于DDR3, DDR4首先在外表上就有一些变化,比如DDR4将内存下部设计为中间稍微突出,边缘变矮的形状,在中央的高点和两端的低点以平滑曲线过渡,这样的设计可以保证金手指和内存插槽有足够的接触面从而确保内存稳定,另外,DDR4内存的金手指设计也有明显变化,金手指中间的防呆缺口也比DDR3更加靠近中央。当然,DDR4最重要的使命还是提高频率和带宽,总体来说,DDR4具有更高的性能,更好的稳定性和更低的功耗,那么从SI的角度出发,主要有下面几点, 下面章节对主要的几个不同点进行说明。


表1 DDR3和DDR4差异

DDR4与DDR3内存差异二:外型
卡槽差异
DDR4 模组上的卡槽与 DDR3 模组卡槽的位置不同。两者的卡槽都位于插入侧,但 DDR4 卡槽的位置稍有差异,以便防止将模组安装到不兼容的主板或平台中。
请注意 DDR3 与 DDR4 模组之间的细微差别
增加厚度
为了容纳更多信号层,DDR4 模组比 DDR3 稍厚。

DDR4金手指变化较大
  大家注意上图,宇瞻DDR4内存金手指变的弯曲了,并没有沿着直线设计,这究竟是为什么呢?一直一来,平直的内存金手指插入内存插槽后,受到的摩擦力较大,因此内存存在难以拔出和难以插入的情况,为了解决这个问题,DDR4将内存下部设计为中间稍突出、边缘收矮的形状。在中央的高点和两端的低点以平滑曲线过渡。这样的设计既可以保证DDR4内存的金手指和内存插槽触点有足够的接触面,信号传输确保信号稳定的同时,让中间凸起的部分和内存插槽产生足够的摩擦力稳定内存。
  接口位置同时也发生了改变,金手指中间的“缺口”位置相比DDR3更为靠近中央。在金手指触点数量方面,普通DDR4内存有284个,而DDR3则是240个,每一个触点的间距从1mm缩减到0.85mm。
曲线边
DDR4 模组提供曲线边以方便插入和缓解内存安装期间对 PCB 的压力。
仔细看,是一个曲面



1.2POD 和SSTL的比较
POD作为DDR4新的驱动标准,最大的区别在于接收端的终端电压等于VDDQ,而DDR3所采用的SSTL接收端的终端电压为VDDQ/2。这样做可以降低寄生引脚电容和I/O终端功耗,并且即使在VDD电压降低的情况下也能稳定工作。其等效电路如图1(DDR4), 图2(DDR3)。


图1 POD ((Pseudo Open Drain)


图2 SSTL(Stub Series Terminated Logic)

可以看出,当DRAM在低电平的状态时,SSTL和POD都有电流流动


图3 DDR4

图4 DDR3

而当DRAM为高电平的状态时,SSTL继续有电流流动,而POD由于两端电压相等,所以没有电流流动。这也是DDR4更省电的原因


图5 DDR4

图6 DDR3
1.3 数据总线倒置 (DBI)
如上面描述,根据POD的特性,当数据为高电平时,没有电流流动,所以降低DDR4功耗的一个方法就是让高电平尽可能多,这就是DBI技术的核心。举例来说,如果在一组8-bit的信号中,有至少5-bit是低电平的话,那么对所有的信号进行反转,就有至少5-bit信号是高电平了。DBI信号变为低表示所有信号已经翻转过(DBI信号为高表示原数据没有翻转)。这种情况下,一组9根信号(8个DQ信号和1个DBI信号)中,至少有五个状态为高,从而有效降低功耗。

图7 DBI Example

1.4ODT控制
为了提升信号质量, 从DDR2开始将DQ, DM, DQS/DQS#的Termination电阻内置到Controller和DRAM中, 称之为ODT (On Die Termination)。Clock和ADD/CMD/CTRL信号仍需要使用外接的Termination电阻。


图8 On Die Termination

在DRAM中,On-Die Termination的等效电阻值通过Mode Register (MR)来设置,ODT的精度通过参考电阻RZQ来控制,DDR4的ODT支持240, 120, 80, 60, 48, 40, 34 欧姆。

和DDR3不同的是,DDR4的ODT有四种模式:Data termination disable, RTT_NOM,RTT_WR, 和 RTT_PARK。Controller可以通过读写命令以及ODT Pin来控制RTT状态,RTT_PARK是DDR4新加入的选项,它一般用在多Rank的DDR配置中,比如一个系统中有Rank0, Rank1以及Rank2, 当控制器向Rank0写数据时,Rank1和Rank2在同一时间内可以为高阻抗(Hi-Z)或比较弱的终端(240,120,80,etc.), RTT_Park就提供了一种更加灵活的终端方式,让Rank1和Rank2不用一直是高阻模式,从而可以让DRAM工作在更高的频率上。

一般来说,在Controller中可以通过BIOS调整寄存器来调节ODT的值,但是部分Controller厂商并不推荐这样做,以Intel为例,Intel给出的MRC Code中已经给出了最优化的ODT的值,理论上用户可以通过仿真等方法来得到其他ODT值并在BIOS中修改,但是由此带来的所有问题将有设计厂商来承担。下面表格是Intel提供的优化方案。


表2 DQ Write ODT Table for 3DPC


表3 DQ Read ODT Table for 3DPC

1.5 参考电压Vref
众所周知,DDR信号一般通过比较输入信号和另外一个参考信号(Vref)来决定信号为高或者低,然而在DDR4中,一个Vref却不见了,先来看看下面两种设计,可以看出来,在DDR4的设计中,VREFCA和DDR3相同,使用外置的分压电阻或者电源控制芯片来产生,然而VREFDQ在设计中却没有了,改为由芯片内部产生,这样既节省了设计费用,也增加了Routing空间。

图9 DDR3设计


图10 DDR4设计

DRAM内部VREFDQ通过寄存器(MR6)来调节,主要参数有Voltage range, step size, VREF step time, VREF full step time        ,如下表所示。


表4 参考电压

每次开机的时候,DRAM Controller都会通过一系列的校准来调整DRMA端输入数据信号的VREFDQ,优化Timing和电压的Margin,也就是说,VREFDQ 不仅仅取决于VDD, 而且和传输线特性,接收端芯片特性都会有关系,所以每次Power Up的时候,VREFDQ的值都可能会有差异。

因为Vref的不同,Vih/Vil都会有差异,可以通过调整ODT来看Vref的区别,用一个仿真的例子来说明。对于DDR3,调整ODT波形会上下同步浮动,而调整DDR4 OOT的时候,波形只有一边移动。


图11 仿真拓扑


图12 DDR3仿真结果


图13 DDR4仿真结果

1.6 DDR4 Layout Routing新方法
在所有的Layout走线中,DDR无需质疑是最复杂的,不仅要考虑阻抗匹配,还要考虑长度匹配,而且数量众多的数据、地址线,不得不考虑串扰的影响。

DDR信号可分为时钟、数据、地址/命令、控制等四个信号组。各信号组介绍如下:
1.时钟组:
由于采用更高的时钟频率及双沿采样数据的方式,DDR采用差分时钟。差分时钟的走线要求如下:以地平面为参考,给整个时钟回路的走线提供一个完整的地平面,给回路电流提供一个低阻抗的路径。所有的DDR差分时钟信号都必须在关键平面上走线,尽量避免层到层的转换。线宽和差分间距需要参考DDR控制器的实施细则,信号线的单线阻抗应控制在50~60 Ω,差分阻抗控制在100~120 Ω。时钟信号到其他信号应保持在20mil*以上,防止对其他信号的干扰。蛇形走线的间距不应小于20mil。
2.数据组:
数据组包括DQ、DQS、DM。以低8位数据为例,该数据组包括:DQ[7..0]、DQS[0]、DM[0]数据组布线要求如下:以地平面为参考,给信号回路提供完整的地平面。特征阻抗控制在50~60 Ω。与其他非DDR信号间距至少隔离20 mil。
3.地址、命令组:
地址组包括ADD、BANK、RAS、CAS、WE。该组布线要求如下:保持完整的地和电源平面。特征阻抗控制在50~60 Ω。信号线宽参考具体设计实施细则。信号组与其他非DDR信号间距至少保持在20 mil以上。
4.控制组:
控制组包括CS、CKE。该组布线要求如下:需要有一个完整的地平面和电源平面作参考。为了防止串扰,本组内信号同样也不能和数据信号在同一个电阻排内。
二、DDR信号等长约束
由于DDR工作频率高,对信号等长有更严格的要求,实际的PCB设计中对所有信号都进行等长控制是不太现实的,也没有这个必要,根据DDR的实际工作方式,仅需要实现如下的等长约束,表1为一个PCB设计说明实例:
表1 DDR等长约束实例
电平标准
时钟频率
信号名称
备注
SSTL_CLASSI
150M
CLK_FPGA1_DDR_P
CLK_FPGA1_DDR_N
DDRII时钟。每对时钟差分信号等长要求:正负信号之间允许偏差10mil
SSTL_CLASSI
150M
FPGA1_DDR_DQ[31:0]
FPGA1_DDR_DQS[3:0]
FPGA1_DDR_DM[3:0]
数据组内等长要求公差+/-25mil。
各数据组以时钟线为准,公差+/-500mil。
SSTL_CLASSI
150M
FPGA1_DDR_A[12:0]
FPGA1_DDR_RAS*
FPGA1_DDR_CAS*
FPGA1_DDR_WE*
FPGA1_DDR_BANK[3:0]
地址命令线等长要求:
对于每片FPGA与DDR。
地址命令组与时钟信号等长公差+/-150mil。
根据表1所示,DDR的等长约束只需要四个参数。具体约束界面如图1、2所示。
其中差分时钟之间(CLK_P与CLK_N)等长不大于5mil。地址、控制组中每个信号都以时钟(本规则中为CLK_N)为基准,等长差范围设置为±150mil。
数据组内以DQ[0]为基准,等长控制在25mil以内。各数据组之间,以时钟线为基准,等长差范围设置为0-500mil。

DDR4数据速率提高以后,这些方面的影响变得更为严重,尤其是现在很多设计为了节省成本,PCB尺寸和层数都要求尽可能的变小,这样对阻抗和串扰的要求就变的更有挑战性,一般SI工程师和Layout工程师都会想各种办法来满足这些需求,很多时候也不得不妥协折衷,比如在做叠层设计的时候尽量让线宽变小,在BGA Breakout区域采用更细的线,等等。但这些方法只能对设计做微小的调整,其实很难从根本上解决问题。最近Intel研究发现的一种新方法很有意思,可以在一定程度上很好的平衡阻抗(线宽)和串扰(线间距)。在此整理出来供大家参考。

先来看一个实际的Layout例子,两根红线之间的走线采用锯齿形状。没错,这就是Intel新研究出来的新方法,官方名称为“Tabbed Routing”。


图14 DDR4 Tabbed Routing

Tabbed Routing主要的方法是在空间比较紧张的区域(一般为BGA区域和DIMM插槽区域),减小线宽,而增加凸起的小块(Tab),如下图所示。



图15 Tab routing方法

这种方法可以增加两根线之间的互容特性而保持其电感特性几乎不变,而增加的电容可以有效控制每一层的的阻抗,减小外层的远端串扰。仿真结果如下图所示。



图16 HFSS仿真结果

由仿真结果可以看出来,该方法对阻抗和远端串扰确实可以很好的平衡,当然,对于Tab的尺寸,需要根据实际PCB做详细的仿真设计,Intel也提供了一些Tool可以参考。有兴趣的读者,可以参阅更多资料

2DDR4 Simulation

2.1 Pre-Simulation with HyperLynx
如果Controller和DRAM都有IBIS模型,可以用HyperLynx对DDR4进行很方便的Simulation, 仿真方法和其他DDR相同,通过Pre-Simulation, 可以对整个系统的拓扑以及一些细节进行确定,比如Impedance(由Stackup以及线宽和线间距来确定),ODT值的选择,T型结构中Stub长度的控制,ADD/CMD/CTRL终端电阻的取值大小等等。

2.1.1 ADD/CMD/CTRL终端电阻取值

假设ADD电路如下,工作在2400MTs(Add/CMD为1.2Gbps),发送端为U16,采用Fly-By结构到五组DRAM芯片,每组DRAM采用T结构(实际Layout中,Top面一个DRAM芯片,Bottom面一个DRAM芯片),T型长度的Stub为77mil, 终端电阻为32欧姆,终端电压为0.6V。


图17 ADD仿真拓扑

由仿真结果可以看出来,T型结构两端因为完全对称,所以波形几乎一样,为了方便观察,只看其中一个波形,离Controller由近及远,DRAM分别为U5, U4, U3, U2, U1, 其眼图分别如下:



可以看出来,距离Controller越近的芯片,其波形越“乱”,但是上升沿却很快,而距离终端电阻越近的芯片,其波形越好,但是上升沿却变慢。那么如何才能得到最优化的波形呢,下面通过扫描终端电阻的值看看是否会提高信号质量,通过HyperLynx的Sweep功能,设置终端电阻阻值为27,33,39,45四个阻值。


图18 Sweep设置 图19 Sweep设置

U5(距离Controller最近)的眼图如下,依次对应终端电阻阻值为27,33,39,45欧姆:



U4的眼图如下,依次对应终端电阻阻值为27,33,39,45欧姆:



U3的眼图如下,依次对应终端电阻阻值为27,33,39,45欧姆:



U2的眼图如下,依次对应终端电阻阻值为27,33,39,45欧姆



U1的眼图如下,依次对应终端电阻阻值为27,33,39,45欧姆



从上面的波形可以看出来,对应每一个DRAM的第三张波形都是最好的,也就是说对应39欧姆的终端电阻可以得到最优化的波形。

2.1.2 Data信号Stub的长度

一般DDR4的设计中,Data信号都采用Pin to Pin的设计方式,但在某些设计中,由于PCB空间限制或者控制器限制,也有需要采用一拖二的设计(T型结构),在笔者所遇到的一个设计中,就遇到这种情况,综合考虑下面两种方案,如果采用T型拓扑结构,如图20所示,可以最大可能的节约PCB空间,但是如果DIMM0或者DIMM1只插一根的时候,另一边会有较长的Stub出现,对信号质量会有影响。如果采用菊花链结构,如图21所示,在只插DIMM0的情况下,同样会有Stub影响。而且这种拓扑结构需要DIMM0和DIMM1之间的信号线之间满足长度匹配,在DIMM0和DIMM1比较靠近的情况下,绕线会有一定难度。而如果增加DIMM0和DIMM1的距离,其Stub会变得更长,信号质量没有办法得到控制。从信号完整性方面考虑,两种方案均会存在Stub的影响,但是从Layout的角度来看,方案一有一定便利性,而且其Stub可以控制在500mil以内。所以最终选择方案一作为最终方案。当然,这种设计是以牺牲信号Margin作为代价的,信号速率会收到一定影响,在笔者的项目中,在只插一根内存的时候,信号速率最大只能跑到1866Mb/s.


图20 DDR4 T型结构


图21 DDR4菊花链结构

从仿真的角度出发,这种仿真需要考虑的因素很多,控制器模型,PCB模型,Connector模型,以及最后的内存条模型,而通常情况下,Connector模型和内存条模型很难拿到,而且有时候就算拿到,也是不同类型的模型,整体Channel仿真需要更多时间和精力来完成。

如果时间有限,需要对设计做快速评估,用HyperLynx做快速仿真也是可以参考的,在下面的例子中,假设一个Conntorller需要驱动两根DIMM或者两颗内存颗粒,系统工作在2400Mb/s, TL2和TL3的长度可以用来大概评估PCB Stub长度加上Connector长度加上内存条长度。(此处只是用来做大概评估,如果时间条件运行,强烈建议拿到各个部分精确模型做比较准确的仿真)。

从这个简单的仿真可以看出来,Stub对于信号质量的影响还是很明显的,特别对于一根内存槽悬空的状态下,上面的例子中,Stub达到1000 mil的时候,在只插一根内存的情况下,眼图已经非常糟糕,所以在实际设计中,需要在设计成本和信号速率之间进行均衡,取舍。在笔者所做的设计中,因为PCB空间限制,最终选择在单根内存的时候只跑到1866Mb/s。


图22 数据线仿真拓扑

在Stub长度为500mil的时候,两根内存都插和只插一根的眼图如下:



在Stub长度为1000mil的时候,两根内存都插和只插一根的眼图如下:



在用Intel的芯片作为DDR Controller做设计的时候,Intel所提供的SI Model可以提供一个比较完整的仿真,Intel所提供的Simulation Deck中,包含了DDR连接器,DIMM模型,如果能找到和实际项目匹配的模型,可以替换Deck中的模型,如果找不到模型,直接用Deck中所提供的模型也是非常有参考意义的。

2.2  Intel SISTAI仿真
Intel所提供的Memory Bit Error Rate Executable (MBERE) tool集成在其Intel SISTAI(Signal Integrity Support Tools for Advanced Interfaces)网站系统上面,SISTAI可以进行PCIE,SATA, USB,QPI等等高速信号的仿真,DDR4仿真模块为MBER, 其基本思想是先基于Hspice产生一个Step Response, 然后把仿真结果.TR0文件放进SISTAI系统进行计算,产生Worse Case的眼图,大致仿真流程如下:

2.2.1 DDR通道建模

Intel的仿真基于10根线模型,八根DQ线加上两根DQS线,可以用Intel提供的Causal-W Element Tool来产生W Element models, 也可以用ADS,Hspice等工具对传输线建模,对于Post-Layout来说,可以使用PowerSI, Siwave等软件提取DDR通道的S参数。注意这里的DQ和DQS的顺序必须和Intel提供的顺序相同,如图23所示。


图23 DDR数据线建模

2.2.2 Hspice仿真

Intel仿真模型还是比较详细,提供了各种模型以及各种不同情况下的Simulation Deck, 在实际仿真的时候,需要用实际设计的模型替换Deck中的参数,以S参数为例,假设提取了整个DDR通道的S参数,那么需要在pcakage的参数之后加入PCB通道模型,如下图第二个红框所示,之前的一些参数,可以删除或者加上*号来Block掉。


图24 Intel仿真模型


图25 Hspice编辑实例

Hspice仿真得到Step Response, 结果如下:


图26 Hspice仿真结果

2.2.3 SISTAI仿真

得到Tr0文件后,需要把Tro放到SISTAI系统中进行计算,操作流程如下:

图27 SISTAI仿真方法

点击Success可以得到仿真结果,比较遗憾的是,SISTAI只能看到眼宽,眼高等仿真数据,并不提供眼图的显示。


图28 SISTAI仿真结果

Intel的文件中也提供了Spec可以对仿真结果进行对比判断


表5 DQ Write Eye Target Minimums


表6 DQ Read Eye Target Minimums


3DDR4 RMT Margin测试Fail问题实例

3.1设计情况
该设计采用Intel Haswell-EP CPU作为DDR4 Controller, 采用3DPC(DIMM Per Channel)的设计,如下图29所示。DDR4运行速率为1600Mb/s。


图29 DDR4设计拓扑

3.2 问题描述
主板做好后,需要对DDR4信号进行测试验证,但是对于内存条类的DDR4,测试点非常难找,测试结果也很不准确,所有选择只测试Memory Margin。在用Intel提供的Margin测试工具RMT进行测试的时候,测试了各种不同厂商的内存条,分别有Hynix 8G, Hynix 16G, Samsung 8G, Samsung 16G, Samsung 32G, Micron 8G, Micron 16G, 其中只有Micron 8G 结果显示RxVLow, RxVhigh的值小于14(Spec为大于等于14),其他内存条测试结果均满足Spec要求。


表6 RMT测试结果

3.3 Memory Margin Test
上面说了RMT测试Fail,但是RMT测试是什么呢?下面对Memory的一般测试做大概介绍。众所周知,实际PCB做好后,我们需要对其进行测试以验证信号完整性。 通常是采用示波器测试对DDR信号线在读写时的信号质量,但是这种测试存在很大的局限性,比如DDR信号到达每一个Component端的测点无法被点测到,测试点往往距离芯片pad还有一段距离,需要一些额外的测试设备,这样势必会影响准确性,另外,DDR信号读写分离一直都比较难处理,即使使用仪器厂商提供的专业测试软件,也往往看不到非常准确的波形,还有测试点只位于芯片外部, Memory Controller内部对信号Timing的调整无法被测到,所以在采用示波器测试波形之外, 还非常有必要进行Memory Margin测试。

图30 DDR4测试设备


图31 DDR4测试眼图

简单的Memory Margin的测试方法是, 在Controller和DRAM都使用外部VREF供电的条件下, 调节VREF的电压幅度, 同时运行Memory Stress Test软件(如: Golden Memory, MSTRESS 等等), 直到出现测试Fail的VREF值同默认VREF值间的差值, 记为VREF Margin。调节VREF并不会影响信号传输的波形, 因为VREF只是芯片接收端(Controller或DRAM)判断输入为0或1的判断依据。然而在DDR4时代,Vrefdq已经集成到芯片内部,我们无法对其进行调节。

这个时候一些专门的测试软件就比较方便,比如Intel就提供了RMT和EVTS做为DDR Margin测试。


图32 Margin测试原理

RMT(DDR Rank Margin Tool),其原理是修改设置, 让BIOS在开机时自动运行Training程序, 同时通过Debug Port输出Training的结果, 然后分析输出的打印信息, 从而得到Memory Margin。所得到的结果不仅仅包含VREF Margin, 还包含Write/Read Timing Margin, ADD/CMD Timing Margin…而EVTS是对RMT的一个补充,可以进行per-bit margin测试,如果Margin不佳,左右或上下不对称的时候,可以用EVTS 2D Margin来了解成因是否为眼图形状所致。

3.4 问题分析
3.4.1 Micron 8G 本体分析

因为其他内存条RMT测试都是PASS的,唯有Micron 8G的测试是Fail,第一点想到的就是DIMM本身问题,联系Micron FAE后,Micron怀疑是测试的内存条生产日期太老,版本变更会影响测试结果,然而拿到最新的样品后,测试结果仍然没有任何改善。

同时,用这些样品在Intel CRB(Custom reference board)上进行测试,却是可以PASS的。

由此可以判断,Micron 8G本身并不是Margin Fail的唯一因素,只能试图增加主板PCB Margin来改善RMT结果

3.4.2 通过Simulation来分析问题

从问题的描述来看,主板+大部分内存条测试PASS, 有问题的内存条+其他主板测试PASS, 看起来是遇到了最让人头疼的Worst Case+Worse Case的情况,这种情况下,单纯的从设计本身来看,各项设计指标都可以满足相关文档或者Design Guide,只能从细节入手,从一些细微的调整和优化来提高彼此的Margin, 就这个Case来说,Micron 8G的Module已经量产,在没有足够的证据之前,没有办法要求厂商来做任何修改,而主板正在设计阶段,看来只能想办法来优化提高主板Layout从而提高Margin了。

然而对于DDR来说,如上面所描述,各项设计指标都满足相关设计规则,仅仅通过经验猜测,改版,测试的方式来做,无疑毫无效率性和针对性而言,而通过仿真的方法,来做各种各样不同Case的仿真,找到对于提高Margin比较明显的改善点,然后修改Layout,就比较有针对性,也避免了多次改版所带来时间和费用上的浪费。

回到设计本身,如本文3.1节所描述,本设计采用一个通道三根内存的设计(一个Controller加三个DIMM),如图33所示,仔细分析测试结果,Marign最差的均为DIMM2(距离CPU最近的一个),做一个简单的理论分析,不管从CPU写数据到DIMM2或者从DIMM2读数据到CPU,无论DIMM1和DIMM0处于何种状态,L2和L3始终存在,对于DIMM2来说,相当于有一段Stub存在,而Stub会引起信号反射,从而导致Margin减小,哇,找到Root cause了哎,原来问题这么简单,快快改版做下一批PCB吧,可是,万一下一批还是不行怎么办?冷静一下,还是先做仿真验证一下吧。


图33 PCB Layout

冷静一下,再仔细分析,对比主板和Intel CRB的PCB设计,果然在这边存在差异,CRB板子L2和L3长度大概为398 mil, 而我们的主板L2和L3长度大概为462 mil, 确实有差异,既然这边的长度有差异,从前面我们的分析来看,仿真结果也肯定会有差异,我们来仿真看看,如前面所说,Intel SISTAI只能提供仿真数据,而无法显示波形,仿真结果整理如下图。


表7 Write仿真结果


表8 Read 仿真结果

从仿真结果可以看出来两点,第一,仿真数据最差的也是DIMM2,和实际测试结果吻合;第二,我们的主板仿真结果比Intel CRB的结果要差,和我们之前分析和猜测吻合。那么,缩小L2,L3的长度以后,仿真结果是不是会改善呢?由于PCB和Connector本身差异,我们的主板L2和L3最短只能缩小到410 mil左右,那么,PCB改善后的结果如何呢?仿真数据如下表。可以看出来,无论Write和Read, D2的结果都有了改善,可是为什么还是和Intel CRB差异很大呢?


表9 仿真结果对比

再来对比Layout,Trace走线已经找不出差异,之前没有关注过的叠层(Stackup)成为最大的差异点,CRB为8层板,而我们的主板为18层板,而且我们的主板DDR走线靠近TOP层,这么大的叠层差异直接导致了PTH Via孔所造成的Stub长度不同,同样,DIMM插槽的针脚长度差异也会造成Stub影响,CRB采用的DIMM插槽针脚长度为2.4 mm, 我们主板DIMM插槽针脚长度为3.2 mm, 没有找到相对应的DIMM插槽模型,只能采用删减或增加PCB叠层厚度来简单模拟DIMM插槽针脚长度,减小主板DIMM插槽针脚长度(采用Stackup变更来简单模拟) 到2.4 mm,仿真结果如下,已经非常接近CRB的结果了。这个仿真虽然不是非常准确,但是也是可以看出来Stub对信号质量的影响。


表10 最终仿真结果对比

按照分析结果,缩短L2,L3的长度,改为阵脚比较短的DIMM插槽(因为设计已经基本定型,只能进行小的改动,没有办法把DDR走线移动到靠近Bottom层的Layer),重新改版后,之前测试Fail的Margin提高了2~3 Step, 终于可以PASS了。

至此,对于此Case的分析和仿真基本结束,DIMM to DIMM之间的长度以及DIMM插槽针脚长度(以及PTH VIA Stub)所造成的Stub对于提高信号Margin有一定的贡献,所以在针对3DPC(DIMM per Channel)的设计,在设计初期,就应该尽可能减小DIMM TO DIMM的长度,对于板厚比较大的Case,尽可能把DDR走线靠近Bottom面,以减小Stub对信号质量的影响。

4小结

DDR的设计,仿真,测试,一直以来都是大部分设计者比较关心的地方,也是让大部分工程师比较头疼的问题,首先从理论理解来说,DDR包含了很多技术难点,比如接口电路,比如Timing, Driver Strength, ODT等等概念都需要理解。其次从Layout角度来看,DDR不像串行总线一样,只有几对差分线,问题很容易定位,而DDR一旦出现问题,如果定位问题,成为众多设计者感到棘手的问题,需要做大量的测试和实验。最后,从仿真角度来说,DDR的仿真也比串行总线的仿真复杂很多,需要考虑PCB,连接器,内存条,还要考虑各种参数的设置等等。

本文针对DDR设计中普遍存在的一些困惑,先是对DDR4的新技术和关键技术做了大概描述,然后介绍了DDR4目前的仿真方法,以及Intel对于DDR4的仿真Solution。最后通过一个Memory Margin的实际案例,介绍分析和解决问题的思路。

在写作本文的过程中,笔者参阅了多种网络上的资料以及一些前辈的文章,同时,也加入了很多自己的看法,由于本人水平有限,错误之处在所难免,有理解不对的地方希望大家及时指正。同时也希望大家能完善补充, 相互讨论, 共同进步。




作者介绍
王彦武,信号完整性、电源完整性专家,从事SI,PI设计和测试从业时间10年。
专长:SI&PI设计及仿真,SI&PI问题分析,PCB设计技术
简介:主要从事笔记本电脑,服务器,存储器,网络通讯类产品的SI,PI的设计,仿真和测试,熟悉 25Gbps Ethernet, SAS 12Gbps, PCIe 8Gbps, SATA 6Gbps, USB 5Gbps等高速总线的设计和仿真方法,熟悉Synopsys Hspice, Agilent ADS, Sigrity PowerSI, Ansys SIwave, HFSS等仿真软件的使用,熟悉示波器,VNA,TDR等测试仪器的使用。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

内容正在加载中,请稍候……

QQ|我的微博|小黑屋|手机版|Archiver|YanFa.Tech(gaosupcb Inc.)    

GMT+8, 2020-9-23 11:59 PM , Processed in 0.067032 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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