DDR3记忆体介面的设计挑战——DDR3SDRAMDIMM与FPGA介面的实现方法编译∶黄柏辉摘要记忆体件无疑会越做越快、容量越来越大、并且每一位(bit)的功耗会越来越低,但是如何设计DDR3SDRAMDIMM与FPGA的介面呢?DDR3标准规范著重於提升速度、带宽以及降低每bit的功耗,但是它同时也引发了新的设计挑战,除了这些,DDR2ODT(DDR2片内中断电阻)、斜率衰减(slewratederating)同样也会增加设计的难度。对DDR3的fly-by电路拓扑要求意味著客户在设计DDR3记忆体的时候必须解决其在PCB板上的资料读取平衡(readleveling)问题。本文内容涉及到建模、仿真和物理布线(physicallayout)的实现,这些都必须符合JEDEC规范对终端产品的要求和在PCB上设计DDR3记忆体介面时严格的时序要求。第425内容介绍在设计DDR2DIMM介面时,开发人员所面临的部分难题可以由DDR3DIMM结构来缓解,但是即便如此,在使用DDR3DIMM介面时仍然要克服其他的问题。DDR3比DDR2速度更快,并且使用更低的电源,在兼顾低功耗和高传输速率的同时还要满足严格的杂讯容限(noisemargin)和更少的SSN。DDR3DIMM所采用的fly-by电路结构(汇流排拓扑)减少了并发开关信号的数量,但也导致flight-time(flight-time指的是信号在接收器的输入引脚到驱动器的输出引脚之间的时间差)的偏移,它甚至可能达到DIMM的两个周期。也就是说,DDR3记忆体规范所定义的读/写操作的平衡(leveling)特徵可以让控制器调节每个bytelane的时序来补偿flighttime的偏移。除了要理解DDR3的特徵之外,开发人员还要处理DDR2和DDR3记忆体介面同样存在的问题。在验证复杂的DDR3设计的时候,有效的设计方法要侧重於∶分析所有类型DRAM的介面和控制器ODT电路;在工艺、电压和温度等变数下,I/O缓冲器处於高速、低度、正常速度工作状态验证设计的可行性;仿真所有储存和控制的读写动作;根据资料和控制器信号波形的斜率或者用户提供的衰减表格(deratingtable)来调节其建立和保持时间(setup/holdtime)。本文讨论从DDR2到DDR3的移植。首先,解释JEDECDDR3规范里所提到的读/写平衡特性,然後,再提出一个种方法以更方便的设计和验证DDR3介面,同时讲述怎样设计介面,怎样定义在不同读写周期、不同ODT电路下自动仿真所需要的信号。文中还提出预布局的方法用於改善系统布线工艺。同时解释了为什麽需要斜率衰减(slewratederating)来满足设定的时序要求,最後,文章讨论怎样确保时序和杂讯容限(noisemargin)不受bytelane反射和交叉杂讯的影响。注释∶Setup/holdtime是测试晶片对输入信号和时钟信号之间的时间要求。建立时间是指触发器的时钟信号上升沿到来以前,资料稳定不变的时间。输入信号应提前时钟上升沿(如上升沿有效)T时间到达晶片,这个T就是建立时间Setuptime。如不满足setuptime,这个资料就不能被这一时钟打入触发器,只有在下一个时钟上升沿,资料才能被打入触发器。保持时间是指触发器的时钟信号上升沿到来以後,资料稳定不变的时间。如果holdtime不够,资料同样不能被打入触发器。移植到DDR3DDR3是最新的DDRSDRAM技术版本,跟它的前个版本相比,它具有独特的优点。前面提到,开发人员在实现DDR2DIMM介面时面临的问题可以由DDR3DIMM结构来缓解。DDR3的资料传输速率800~1600Mbps,是DDR2的两倍(400~800Mbps)。DDR3的功耗更低,因为它的电压从1.8V降低到1.5V。另外,DDR3DIMM还具有更少的装载时间和更少的SSN时间,这得益於它采用了fly-by的电路结构。另外,DDR3DIMM在其DIMM上所具有的中断电阻被用作指令/位址/控制汇流排,这增加了记忆板块的作用,即去除了外部中断电阻的需要。像DDR2、DDR3具有可编程的ODT用於他的DQS(资料控制信号)的bytelane,也就是说,它能够在读取动作的过程中动态的关闭中断电阻,而在写入动作的时候开启中断电阻。为了充分发挥记忆体的这个特性,设计中期望FPGA也能满足这个功能。这些突破同时也创造了一些难题,即同时增加性能和降低电压需要更加严格的杂讯容限,而杂讯容限的大小影响著SSN的大小,并且会增加采集资料的误差。选择合适的工具软体本质上就是建立一个具有最小SSN数值的DDR3系统,而具备可调节驱动的FPGA也有助於帮助SSN最小化。DDR3DIMM所采用的fly-by电路结构导致每个DRAM的资料控制和时钟之间的flight-time的偏差,因为时钟和指令/位址/控制信号的传输横贯DIMM。这些flight-time的偏差可以通过DDR3DIMM的读写平衡机制计算。DDR3读写平衡(writeandreadleveling)有效的DDR3读写平衡增加了资料到达每一个DQS组所需的延迟时间,所以它们同时到达每一个储存晶片而不用顾及DIMM上的flight-time的时间差。DDR3的指令/位址/控制信号和时钟信号通过DIMM顺序到达每一个SDRAM晶片上。这有利於布线,但是会导致每个DRAM时钟和控制器(strobe)之间的flighttime产生变化。对於DDR3的写入平衡来说,控制器需要将DQS信号严格的按照时序传输到DIMM的每个晶片上。在资料被传输到DDR3DIMM之前,控制器建立准确的延迟(见图1)以使资料能在恰当的时间传输到DIMM的晶片上。指令/位址/控制汇流排和DDR3控制器上的时钟通过中间路径进入DIMM,然後以雏菊花环(daisy-chain)的形式顺序连接每个储存晶片。图1.DDR3DIMM控制器所使用的写入平衡。图2.DDR3DIMM控制器所使用的读取平衡。从DDR3DRAM器件的最左端晶片到最右端晶片的延迟时间大於1.6ns。控制器的写入平衡需要补偿跨越记忆体模块的flight-time。记忆体晶片的tDQSS(DQS的上升沿到CK上升沿的时间)大小需要被控制为时钟周期的四分之一。也就是说,在写入平衡过程中控制器需要通过从每个晶片反馈回来的信号来调整DQS和CK信号。图3.设计和验证DDR3介面的步骤。与写入平衡过程类似的是,DDR3读出平衡需要控制器从DIMM传送来的DQS组信号进行延迟处理,也就是要对它们加入间隔时间以便让所有DQS组信号可以同时到达控制器。读取资料时,资料到达控制器的实际时间可能会被扩大到CAS延迟的两倍。从DIMM上看,第一个晶片离中断电阻最远(见图2)。控制器必须给这个晶片的DQS信号添加最大的间隔时间以匹配DQS的从最近的DRAM晶片到中断电阻的flight-time。建立和分析DDR3介面的方法在这节里,我们按照图3显示的步骤针对DDR3设计挑战提出对应的解决方案。通过这些步骤,开发人员可以建立介面、定义相关的仿真信号与ODT的自定义以使EDA工具软体可以在不同的ODT和I/OPVT条件下仿真所有储存和控制器的读写动作。我们还将叙述读写的平衡是怎样进行建模和仿真的,此外,我们将讨论工具软体是怎样根据资料和控制信号的斜率(slewrate)、用户定义的衰减表格(deratingtable)来调节标准的建立和保持时间(setupandholdtime)。(1)介面的建立和信号关联典型的DDR3介面包含一个控制器和多个分布在一个或者多个DIMM上的DRAM晶片,见图4(a)。其中有四种信号类型∶资料、位址/指令、控制和时钟,它们交叉连接到控制器。不同类型的信号传输方向不同,例如,位址信号总是从控制器向DRAM传输,而不必经过检验。所以,这就需要定义介面的信号汇流排(bus)并标识控制器器件,通过这样来确定所有可以进行分析的驱动/接收的组合。图4.(a)1-DIMMDDR3介面(b)ODT电路。基於上述原因,EDA工具软体必须具备让开发人员建立不同DDR3汇流排的功能,在这里提到的汇流排包含了许多网格(net)。在DDR3介面里包含两种不同类型的汇流排,即单向汇流排(比如位址汇流排)和双向汇流排(比如资料汇流排)。在单向汇流排里,位址/指令/控制信号只从控制器传送到储存晶片上;而在双向汇流排里,资料从不同的DRAM晶片读取或者写入。而且,在单向汇流排里,资料在时钟的上升沿(risingedge)或者下降沿被锁存,而在双向汇流排里,资料在控制器(strobe)的两个变化沿被锁存。表1.双模块系统(图5)可采用的不同I/O和ODT配置。值得一提的是,在起始同步介面(sourcesynchronousinterface)里,资料/位址信号总是沿著相应的strobe/clock信号发射,这样可以将时间差(skew)最小化。为了确保软体能够自动仿真所需要的网格(net),然後建立测量并保持信号的传输时间,就应该要采取措施捕获上述的信号进行分析。如图4(a)所示,要支援不同的DDR3介面信号,工具软体还必须具备分析所有类型汇流排的功能以便得到相应的clock/strobe信号,不仅如此,它还要求允许将不同的通道(lane)或者汇流排t资料合并成不同的clock/strobe信号。(2)片内中断电阻(On-DieTermination,简称ODT)DDR3支援自定义的用於信号传输的ODT,其作用是抑制发射回记忆体的信号,并且减少主板的元件数量。DRAMODT的引脚可以被用於开启、关闭记忆体的中断电阻,也或者根据需要来用它来设定不同的中断电阻参数,见图4(b)。这种自定义的特性使开发人员能以提高系统信号集成度为目标来改变ODT在接收器是处於工作或者待机状态。举例来说,2-DIMM储存系统的ODT就通常在资料读取和写入的过程中被分别进行设定,分别见图5(a)和图5(b)。在两种不同的ODT设定中,处於待机状态下的接收器的ODT总是开启,同时控制器I/O的ODT只有在它接收资料的时候开启,即在读取的周期内开启。要注意的是,最佳的ODT设定要通过基於布线前後的对空间容量的测量结果来判断。图5.(a)为读取动作时的ODT;(b)为写入动作时的ODT支援这项功能的工具软体允许系统开发人员确定IBISI/O缓冲器的建模,当它们驱动或者接收资料或者处於待机状态的时候,可以被视为传输不同类型信号的引脚。IBIS模型具备缓慢、快速、典型VI和TV曲线,它能捕获I/O的行为,并且能解决PVT变动的问题。在这种情况下,与SPICE软件相似的宏模型(macromodel)会更加精确,但是仿真起来会比使用IBIS模型要慢,因此它也可以作为I/O建模的另一种选择。在简单使用的流程里,I/O建模的过程应该建立在元件的基础上,而不是引脚。因此,对於一个既定的元件,例如图5中的DRAM1,以及对於每个模型选择器(modelselector)来说,都可以从相应的模型选择器中选择驱动器、接收器和ODT电路。因此,所有的元件引脚都使用同样的模型选择器,它们使用同样的I/O和ODT模型。在这里假设图5所示的2-DIMM系统模型如表1所描述的那样,在这个基础上,在DRAM1的写入周期内,控制器内的驱动,主动的DRAM1接收器和待机状态的DRAM2接收器分别使用“DRVR”、“RVCR”和“ODT_80”模型。在从DRAM2和DRAM2驱动器的读取周期内,控制接收器和待机DRAM1接收器分别使用“DRVR”“RCVR_240”“ODT_80”模型。根据介面、ODT以及相关信号,软体可以自动的仿真所有不同ODT和PVT变数下的读写动作。结果是,开发周期被显著的减少。体积考虑正如我们前面提到的那样,不像DDR2所支援的T-branch技术(见图6(a))那样,DDR3介面使用flyby的电路拓扑(图6(b))来使位址/指令/控制信号在不同的DIMM上进行传输。这两种电路拓扑面对的同样设计挑战是