<p><strong>引言</strong></p>
<p><span>DDR接口速率越来越高</span><span>,</span><span>每一代产品都在挑战工艺的极限,对DDR PHY的训练要求也越来越严格。本文从新锐IP企业芯耀辉的角度,谈谈DDR PHY训练所面临的挑战,介绍芯耀辉DDR PHY训练的主要过程和优势</span><span>,</span><span>解释了芯耀辉如何解决DDR PHY训练中的问题。</span></p>
<p><strong>DDR PHY训练简介</strong></p>
<p><span>高可靠性是系统级芯片</span><span>SoC重要的质量和性能要求之一。SoC的复杂在于各个IP模块都对其产生至关重要的影响。从芯耀辉长期服务客户的经验来看,在客户的SoC设计中,访问DDR SDRAM是常见的需求,所以DDR PHY则成为了一个非常关键的IP,其能否稳定可靠的工作决定了整个SoC芯片的质量和可靠性。</span></p>
<p><span>制定</span><span>DDR协议的固态技术协会</span><span>(</span><span>JEDEC</span><span>)</span><span>标准组织并没有在规范中要求动态随机存取存储器</span><span>(</span><span>DRAM</span><span>)</span><span>需要具备调整输入输出信号延时的能力,于是通常DDR PHY就承担起了输入和输出两个方向的延时调整工作,这个调整的过程称为训练(training</span><span>)</span><span>。训练是为了使DDR PHY输出信号能符合固态技术协会标准的要求,DDR PHY通过调节发送端的延迟线(delay line),让DRAM颗粒能在接收端顺利地采样到控制信号和数据信号</span><span>;</span><span>相对应的,在DDR PHY端,通过调整内部接收端的延迟线,让DDR PHY能顺利地采样</span><span>到</span><span>DRAM颗粒的输出信号。从而在读写两个方向,DDR接口都能稳定可靠地工作。</span></p>
<p><img alt="图1:DDR PHY承担了输入和输出两个方向的延时调整工作" data-entity-type="file" data-entity-uuid="280e73c0-f2a3-4b48-9929-97ff487fce8d" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114227-211379-1.jpg&…; /></p>
<p><em><span>图</span><span>1:DDR PHY承担了输入和输出两个方向的延时调整工作</span></em></p>
<p><span>然而,随着</span><span>DDR工作频率提高,DDR PHY训练的准确性和精度要求也随之提高。训练的准确性和精度决定了DDR系统能否稳定可靠地工作在较高的频率。</span></p>
<p><strong>DDR PHY训练所面临的挑战</strong></p>
<p><span>DDR训练的种类繁多</span><span>,</span><span>每个训练的结果都不能出错。同时固态技术协会定义的训练序列都比较单一</span><span>,</span><span>如果只使用这些默认序列的话,训练结果在实际工作中并不是一个最优值。</span></p>
<p><span>目前绝大多数</span><span>DDR PHY都采用硬件训练的方式,如果硬件算法有问题</span><span>,</span><span>会导致训练出错,DDR无法正常稳定地工作,导致整个SoC的失败。同时,硬件训练模式很难支持复杂的训练序列和训练算法,从而无法得到训练结果的最优解。</span></p>
<p><span>芯耀辉的</span><span>DDR PHY采用软硬件结合的固件(firmware)训练方式跳出了上述DDR PHY训练模式的固定思维。</span></p>
<p><strong>芯耀辉</strong><strong>DDR PHY在训练上的优势</strong></p>
<p><strong>解决写入均衡(</strong><strong>write leveling)的难题</strong></p>
<p><span>写入均衡是为了计算出</span><span>flyby结构下命令通路和数据通路的走线延迟的差值,在DDR PHY中把这个差值补偿到数据通路上,从而最终让数据通路和命令通路的延迟达到一致。</span></p>
<p><img alt="图2:DDR flyby拓扑结构示意图" data-entity-type="file" data-entity-uuid="a7ae5956-7ff5-4aba-8f7c-1f0a30cb0582" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114227-211380-2.jpg&…; /></p>
<p><em><span>图</span><span>2:DDR flyby拓扑结构示意图</span></em></p>
<p><span>在实际的应用中,命令(</span><span>command</span><span>)</span><span>路径上的延时会超过数据(DQ)路径的延时。假设路径差值 = 命令路径延时 – 数据路径延时</span><span>,</span><span>一般路径差值在0~5个时钟周期之间。可以把路径差值分为整数部分和小数部分(单位是0.5个时钟周期)。</span></p>
<p><img alt="图3:命令路径延时、数据路径延时和路径差值" data-entity-type="file" data-entity-uuid="b53dbde4-2164-497f-876d-a27e655ff336" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114227-211381-3.jpg&…; /></p>
<p><em><span>图</span><span>3</span><span>:</span><span>命令路径延时、数据路径延时和路径差值</span></em></p>
<p><span>根据固态技术协会标准(如</span><span>JESD79-4C)的写入均衡的要求,DRAM在写入均衡模式下会用DDR PHY发送过来的DQS沿去采样CK,并把采样的值通过DQ返回给DDR PHY。</span></p>
<p><img alt="图4:写入均衡模式下调整DQS时延的示意图" data-entity-type="file" data-entity-uuid="0c26d7ce-0ed3-4068-a3af-2fc817bbe269" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114227-211382-4.jpg&…; /></p>
<p><em><span>图</span><span>4</span><span>:</span><span>写入均衡模式下调整DQS时延的示意图</span></em></p>
<p><span>通过该训练,</span><span>DDR PHY可以计算出命令与数据路径延时差值的小数部分,却没有办法训练出命令与数据路径延时差值的整数部分(把DQS多延迟一个时钟周期或者少延迟一个时钟周期</span><span>,</span><span>用DQS采样CK的采样值是相同的)。</span></p>
<p><span>为了解决这个问题,通常会根据版图设计估算出大概的路径差值,从而自行得到路径差值的整数部分</span><span>,直接配置到DDR PHY的寄存器中。这种做法在频率比较低、量产一致性比较好的时候问题不大。</span><span>但</span><span>在大规模量产的时候,如果平台之间的不一致性超过一个时钟周期</span><span>(</span><span>LPDDR4最高频下周期为468ps</span><span>)</span><span>的话,上述直接配置整数部分的方法就没法进行工作了</span><span>,</span><span>必然会导致部分芯片</span><span>无法</span><span>正常工作。</span></p>
<p><span>芯耀辉采用固件的训练方式,通过</span><span>DDR写操作时特殊调节方法,能够帮助客户计算出路径差值整数加小数部分</span><span>,</span><span>无需客户根据版图设计估算路径差值范围</span><span>。</span></p>
<p><img alt="图5:路径差值整数部分训练和小数部分训练" data-entity-type="file" data-entity-uuid="a2e983eb-8c9d-4d17-bfcf-20cb9f374301" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114227-211383-5.jpg&…; /></p>
<p><em><span>图</span><span>5</span><span>:</span><span>路径差值整数部分训练和小数部分训练</span></em></p>
<p><strong>过滤训练时</strong><strong>DQS的高阻态</strong></p>
<p><span>读操作时,</span><span>DQS信号在前导</span><span>(</span><span>preamble</span><span>)</span><span>前是高阻态,同时DQS信号的前导部分也不能达到最稳定的状态,所以需要训练出读DQS的gate信号来过滤掉前面的高阻态和前导,恰好得到整个读突发</span><span>(</span><span>Read Burst</span><span>)</span><span>操作的有效DQS,这就是读DQS gate训练。</span></p>
<p><span>芯耀辉采用特定的方法,在训练的时候,排除不稳定</span><span>DQS的干扰,用读DQS的gate信号得到读突发数据对应的第一个DQS的上升沿位置,从而得到gate的位置。</span></p>
<p><img alt="图6:读DQS gate训练" data-entity-type="file" data-entity-uuid="28757a5c-3850-4e95-8dd0-4494c0a4f03f" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114227-211384-6.jpg&…; /></p>
<p><em><span>图</span><span>6</span><span>:</span><span>读DQS gate训练</span></em></p>
<p><strong>延迟</strong><strong>DQS提高读DQ训练的准确性</strong></p>
<p><span>一般在</span><span>DDR PHY中没有这个训练</span><span>,</span><span>因为该训练不是固态技术协会标准要求的,可是在实际应用中,这个训练却有着比较重要的意义。</span></p>
<p><img alt="图7:LPDDR4突发读(来源固态技术协会标准JESD209-4B)" data-entity-type="file" data-entity-uuid="05a63b58-b654-43bf-b655-8bc9ca58caf8" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114227-211385-7.jpg&…; /></p>
<p><em><span>图</span><span>7</span><span>:</span><span>LPDDR4突发读(来源固态技术协会标准JESD209-4B)</span></em></p>
<p><span>读</span><span>DQS和读DQ之间的偏差为tDQSQ,这个值的范围是0~0.18UI(在高频下约为0~42ps)。读训练的时候,采用延迟DQS的方法,找到DQ的左右窗口,最后把DQS放在DQ窗口的中心点。由于DDR PHY内部的DQS-DQ延迟偏差、封装的pad延迟偏差、以及PCB走线偏差,虽然DRAM端输出的tDQSQ为正数(DQ的延迟比DQS大)</span><span>,</span><span>但在DDR PHY内部看到的tDQSQ却可能为负数(DDR PHY内部DQS的延迟比DQ大),如图8上半部分所示。</span></p>
<p><span>在这种情况下,即使</span><span>DQS的延迟为0,DQS也落在DQ的窗口内,PHY内部会通过从0延迟开始增加DQS的延迟来搜索DQ的左右窗口,这样必然导致最终搜索到的DQ的窗口比实际的窗口要小</span><span>,</span><span>读训练后的DQS的采样点不在DQ的正中间,而在偏右的位置,最终读余量(margin)变小。</span></p>
<p><span>芯耀辉通过特定</span><span>的方法,能</span><span>让</span><span>每个DQ的窗口都在DQS右边,这样做读训练的时候,可以搜索到DQ的完整窗口,提高了读训练的准确性,提升DDR的读性能。</span></p>
<p><img alt="图8:Read DQ skew training" data-entity-type="file" data-entity-uuid="bebe2fec-9fad-438f-b37a-ef16a2a9f0e4" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114227-211386-8.jpg&…; /></p>
<p><em><span>图</span><span>8</span><span>:</span><span>Read DQ skew training</span></em></p>
<p><strong>用固件的训练方法获取读数据眼图(</strong><strong>Read data eye)的优化值</strong></p>
<p><span>读数据眼图训练通过延迟读</span><span>DQS的方法,把读DQS放在DQ窗口的中间。目前最大的问题是固态技术协会标准对读数据眼图的读序列定义的比较简单</span><span>,</span><span>比如对于DDR4,定义的序列是01010101的固定序列。因为高速信号的符号间干扰以及信号反射,在不同的读序列的情况下DQ窗口是有差异的,所以采用简单固定的序列并不能很好地覆盖实际的使用场景</span><span>,</span><span>导致训练结果在实际工作时并不是一个优化值。</span></p>
<p><span>芯耀辉采用固件的训练方法,可以设置不同的范式(</span><span>pattern),如PRBS范式、特殊设计的扫频范式等。显然此类范式能更好</span><span>地</span><span>反映数据通道的特性,因为它包含了高频、中频、低频信息,以及长0和长1带来的码间串扰等问题,可以获得较优的训练结果,从而得到一个能覆盖实际工作场景的可靠值。</span></p>
<p><strong>二维训练模式下优化的参考电压(</strong><strong>Vref)电压和地址线(CA)延迟</strong></p>
<p><span>LPDDR3中引入了地址线训练</span><span>,</span><span>DRAM把采样到的地址信号通过数据通路反馈给DDR PHY</span><span>,</span><span>DDR PHY可以通过这个反馈去调节地址线的延迟。在LPDDR4中</span><span>,</span><span>还加入了地址线参考电压的训练</span><span>,</span><span>所以不仅需要调节地址线的延迟</span><span>,</span><span>还需要找到一个最优的参考电压值</span><span>。</span><span>传统使用硬件训练的方式在面对这种两个维度的训练时就会显得捉襟见肘,同时硬件算法也没法做得太复杂。</span></p>
<p><span>芯耀辉采用固件的二维训练模式,可以绘制出完整的以地址线延迟为横坐标和以参考电压为纵坐标的二维图像,从而得到较优的参考电压和对应的地址线延迟。</span></p>
<p><strong>二维训练模式下优化的</strong><strong>DQ参考电压和DQ延迟</strong></p>
<p><span>DDR4的固态技术协会标准中引入了DQ参考电压,可是对于如何训练并没有给出说明和支持,所以大多数DDR PHY并不支持DDR4的DQ参考电压训练,只能配置一个固定参考电压值。</span></p>
<p><span>LPDDR4的固态技术协会标准增加了写DQS-DQ训练(调整写DQ相对于写DQS的相位)和DQ参考电压训练协议上的支持。</span></p>
<p><span>芯耀辉采用固件的方式,不仅支持了</span><span>DDR4的DQ参考电压训练,同时对于LPDDR4的写DQS-DQ和DQ参考电压训练</span><span>,</span><span>也采用了固件的二维训练模式,绘制出完整的以DQ延迟为横坐标和以DQ参考电压为纵坐标的二维图像</span><span>,</span><span>在整个二维图像中找到较优的DQ参考电压和对应的DQ延迟。</span></p>
<p><strong>总结</strong></p>
<p><span>随着工艺节点的提升和</span><span>DDR颗粒技术的演进,DDR的工作频率越来越高,DDR颗粒的训练要求也越来越高。同时对于DDR PHY来说,内部的模拟电路(FFE,DFE等)随着频率的提升也需要做各种高精度的训练。芯耀辉采用软硬结合的智能训练方法不仅可以支持DDR颗粒的各种必要的复杂训练,也同时可以支持DDR PHY内部模拟电路的各种训练。通过不断优化训练算法,持续挑战每一代DDR产品的速率极限。</span></p>
<p><span>百尺竿头,更进一步,芯耀辉人必将以提供高性能的接口类</span><span>IP,高品质的设计服务为己任,奋发图强,携手广大芯片设计公司推出更优秀的产品</span><span>,</span><span>助力中国芯片产业的发展。</span></p>