{  第三部分  }

 DDR总线的设计、调试和验证 

在计算机架构中,DDR作为程序运算的动态存储器,面对如高性能计算、图形计算、移动计算、工业应用等领域的要求,发展出DDR4,以及用于图形计算的GDDR5, HBM2,面向移动计算的低功耗LPDDR4等标准。

处理器的运算速度越来越快,DDR的性能也要求越来越高,明显的趋势是DDR总线工作频率持续提升, DDR4 达到3.2GT/s, 用于智能手机等低功耗场合的LPDDR4速率甚至超越了DDR4,最高达到4.2GT/s,JEDEC在年中的论坛中提出未来的DDR5工作速率将达到6.4GT/s,由于速率的提升,DDR5中将可能考虑在接收端采用多阶DFE均衡器,而在强调性能的图形计算领域,规划中的GDDR6的工作速率可能会达到16GT/s。另一方面由于能耗比的要求,DDR标准在演进中工作电压持续走低,如LPDDR4X的工作电压降低至0.6V。

DDR总线采用源同步的技术,多比特并行通信的机制,总线中会存在同步开关噪声和串扰等问题;由于信号速率持续提升单个比特位宽收窄,导致时序裕度变的很紧张,抖动问题也越发明显;而工作电压的降低,噪声和电源完整性的问题也变得非常显著。DDR4总线既有并行总线存在的问题,也要面临如同高速SERDES设计中存在的挑战,可以说是在数字系统中最为复杂的一环,如果不能保证DDR总线的可靠运行,有可能会导致整个硬件系统的崩溃。

针对这些问题,是德科技提供了从DDR4总线的设计仿真和分析,到系统上电后DDR4信号完整性验证、时序验证、眼图轮廓测试、电源完整性验证,以及总线时序一致性分析,故障定位,性能统计等等完整的解决方案。(如下图所示)

JEDEC协会定义的DDR4信号特性主要包括以下主要内容↘↘↘

Electrical

  • VIH/VIL,VOH/VOL

  • Overshoot/undershoot

  • Crossingpoint

Timing

  • Pre/Postamble timing

  • DQS/DQ/CLKDelta time

Eyediagram

  • RxInput Mask

其中电气特性和时序特性基本与之前DDR3等要求比较类似,眼图这一项是随着信号速率的提升,新增加的一个要求。可能有读者会问,以前DDR3或之前的测试,示波器软件也有眼图测试,到了DDR4对于眼图测试要求有什么区别吗?(篇幅所限,以上问题本文不再做进一步的详细解释,有兴趣的同学可以 点击下载>>>【DDR4眼图测试】全文了解。)

是德科技ADS仿真软件的DDR4总线仿真器,提供了统计眼图分析的功能,能够在短时间内统计计算在极低误码率(1e-16)下的DQ眼图,根据规范判断模板是否违规。另外基于总线的仿真,也很易于仿真基于串扰因素下的眼图质量。

基于示波器的DDR4信号实测,可以利用大家熟悉的InfiniiScan区域触发功能,很容易分离出“写”信号,再通过Gating功能对Burst写信号做时钟恢复和眼图重建,再进行Eye Contour测量,并验证1e-16误码率下的眼图模板是否违规。如果是使用一致性测试软件,就不用手动操作,软件会自动跟踪和分离波形并实现眼图测试(如下图所示)

DDR4做测试时,由于BGA信号难以探测,是德科技提供了N2114A/N2115A等DDR4 Interposer,将BGA下方的信号引到Interposer外围,方便探头焊接。

最后,对于物理层无论是仿真还是一致性测试软件得到的数据,都可以通过数据分析工具N8844A导入到云端,通过可视化工具,生成统计分析表格,对比性分析高低温、高低电压等极端情况下不同的测试结果,比较不同被测件异同。为开发测试部门提供灵活和有效的大数据分析平台。

以上,我们介绍了DDR4总线物理层仿真测试和协议层的测试方案,借助仿真软件、示波器和逻辑分析仪对DDR4总线分析调试的主要方法。

再通过逻辑分析仪的内存软件解析DDR总线的操作和分析性能,可以分析出由于系统中集中的读操作,以及LPDDR4的速率切换导致了电源电压的波动,以及特定命令操作导致的电压跌落现象。(详细技术细节,请点击下载>>>【DDR4眼图测试】进一步了解。)

{  第四部分  }

 NAND memory 颗粒

 和 controller 之间的高速接口调试 

 

NANDmemory 颗粒和其controller 之间的高速接口主要分以下几种↘↘↘

M-PHY(UFS)

SD UHS-II

eMMC

ONFi(Open NAND FLASH Interface)

以UFS为例,让我们分别来看这类高速接口的

1、物理层一致性测试

  • 发射端

  • 接收端

  • 接口及互连S参数和阻抗

2、协议层分析和测试

UFS2.1总线的分析验证方法

随着智能手机的爆炸式增长,移动存储技术也发生着巨大的变化,从早期手机内置存储器并且开放MicroSD存储卡接口,到现在多数手机只有内部固定存储器。

这些年eMMC技术被广泛使用,最新eMMC5.1标准理论最高传输速率可以达到400MB/s,但最近移动设备中越来越多采用了JEDEC协会定义的UFS协议。

UFS2.1协议基于MIPI M-PHY G3的物理层标准,使用两个通道,与eMMC比较,简单来说是将从并行改为串行架构,收发双向全双工传输,两路传输吞吐速率可以达到11.6Gbps。除了高速率性能,另外UFS具有很好的功耗性能,在移动领域有替代eMMC的趋势。我在这里总结了一下UFS与eMMC的主要差异:

  UFS eMMC

当前标准

2.1

5.1

物理层

M-PHY G3

N/A

链路层

UniPro  v1.6

N/A

接口

串行

并行

通道数

2

8 (11 w/  strobe)

双工

全双工

半双工

时钟架构

嵌入时钟

源同步

理想吞吐速率

5.8Gbps  x 2

HS400  max 3.2Gbps

编码

8b/10b, PWM

N/A

均衡

TX &  RX (G4)

N/A

下一代标准

UFS3.0,

M-PHY G4  11.6Gbps

N/A

一致性认证

UFSA:

  • Transaction Layer

MIPI/UNH-IOL:

  • Physical Layer: M-PHY

  • Link  Layer: UniPro

No  compliance program

>>> UFS的物理层测试方案

UFS采用分层结构,底层物理层采用MIPI联盟的M-PHY标准,数据链路层为UniPro,再上层协议层采用JEDEC协会定义的UFS协议。

UFS2.1架构如下图所示↘↘↘

▲ 上图引用自Arasan网站

>>> M-PHY物理层主要有如下主要的特点

每个信号通路是单向传输,信号采用差分传输机制,信号有高速HS和低速LS两种模式,高速信号采用8b/10b编码,使用PLL类型端时钟恢复,在突发的开始需要同步信号;低速信号则使用PWM调制方式。M-PHY有两种电压摆幅大幅度LA和小幅度SA,可以工作在端接模式和非端接模式,后一种可以在低功耗要求时使用。

M-PHY一致性测试规范包括了发射端,接收端,接口及互连S参数和阻抗三部分内容。

>>> 发射端测试方案如下:

详情请下载相关文档查看,点击下载>>>

>>> 接收端测试方案如下:

接收端的测试难点有几个方面:

  • 接收测试的原理是,激励压力信号到接收端,环回后测试误码率,压力信号通常包括随机抖动Rj,确定性抖动包括ISI和正弦抖动Sj扫描,激励源允许加入去加重,环回后测试设备需要通过CDR恢复时钟,进而测试误码率。是德科技M8020A误码仪集成经过校准的Rj,BUJ, PJ,SSC等抖动源,内置可调节ISI,可以直接按照规范规定的CH1/CH2的插入损耗要求生成ISI。内置CDR从环回信号恢复时钟测试误码率。

  • 在做UFS接收测试时,芯片有可能内置参考时钟如19.2MHz不能外部输入,这就要求误码仪与被测芯片提供的时钟同步,对于G3的信号速率5.8Gb/s,要求内部倍频304倍,如果是G4的速率11.6Gb/s,需要倍频608倍,M8020A的0G6选件可以直接外部参考时钟输入倍频后产生G3/G4要求的速率信号激励给被测件。

  • CTS除了要求接收容忍度测试之外,也会测试2.1.6 – HS-RXLane-to-Lane Skew (TL2L-SKEW-HS-RX),这一项是要求测试接收端的通道与通道间对skew的容忍度,这就要求激励源有2个通道,M8020A误码仪可以支持4通道16.2Gbps的发生和误码检测通道。

>>> 互连S参数和阻抗测试方案:

需要注意的是测试SDD21回波损耗的时候,被测件需要在工作状态并发出CRPAT码型的情况下做测试,TDR需要加入大量平均以减少被测信号发射波形的影响,这种测试推荐使用网络仪完成,可以调整发射功率和减少IFBW减少DUT发射信号对测量的影响,是德科技VNA E5071C带有TDR选件功能,可以从频域到时域实现完整的测试要求。

>>> UFS协议层分析和测试方案:

上图展示了是德科技U4431A UFS协议分析仪和捕获分析UFS链路协议的界面,U4431A支持M-PHY G3速率等级,采集深度16GB,可以支持双向各4个lane。

{  第五部分  }

 SSD高速接口的设计与验证 

SSD是Solid State Drive也就固态盘的简写,作用如同传统硬盘,在系统掉电后,仍可以保持存储数据和程序。当然也有Intel美光等公司开发基于高速固态存储器技术3DXpoint也可以用于动态访问应用,这里由于篇幅所限,不在本文的讨论范围之内。

相较于机械硬盘,SSD访问速度大幅提升,也有噪音低、不怕碰撞等优点。从这些年的发展来看,SSD容量大幅度提升,成本也逐步降低,在消费领域或者企业市场已经有很大的普及。

现在的SSD多数采用TLC或MLC NANDFlash作为存储介质,除了NAND存储器颗粒之外,在SSD架构中,通常包括SSD控制器实现存储器的访问控制、缓冲器管理和特定的算法,也包括DDR 存储器实现数据缓冲和计算,以及与主机通信的的高速接口。对于DDR的测试方案,前面我们做了介绍,这一部分,我们主要来讨论一下高速接口的部分。

▲ 摘自Coding forSSDs – Part 2: Architecture of an SSD and Benchmarking

SSD控制器主要接口类型的包括PCIe, SAS, SATA, USB等,这里我总结了这几种接口技术的主要差别。

由于标准PCIe和SAS接口技术的高性能和扩展性,一般更多用于企业应用,而SATA和USB接口通常用于个人消费领域。

从使用的接口类型来看,PCIe协会PCISIG定义了除标准接口之外,还支持包括U.2, SATA Express以及m.2接口,并在最近也开发定义了OCulink的电缆接口。从这几种标准来看,以PCIe3.0为代表,采用了更加复杂的编码格式,以提升传输效率,另外发射接收端均衡能力也有很大提升,比如PCIe3.0在规范中定义了链路均衡训练机制,RC和EP芯片通过链路协商调整预加重和接收均衡,使得系统误码率维持在低水平。

首先我们先来了解PCIe总线的情况。2017年10月,PCISIG正式发布了PCIe4.0基础规范1.0版本,这是PCIe规范发展的一个重要里程碑,另外PCIe协会预计会在2019年正式发布PCIe5.0规范。PCIe4.0的传输速度比3.0加倍,达到16GT/s,相信在未来陆续会有支持4.0的CPU、外设产品陆续发布。当然对于NVMe协议来说,短期来说主流还是基于PCIe3.0,未来也有可能有支持4.0的产品。

下面是PCIe3.0/4.0 NVMe SSD设备的发射端和接收端测试方案框图

其中发射端展示的是NVMe设备通过矩阵开关实现2路信号的自动化实测连接图,被测件通过PCIe3.0测试夹具CBB3,将被测件的两路或更多路信号连接到Keysight U3020矩阵开关,再将公共端口差分连接到是德科技Z系列或V系列示波器,通过示波器的Aux Out输出端口经过Balun连接到测试夹具的Rx0,由软件控制产生100MHz时钟触发被测件切换码型和preset。对于NVMe设备接收端测试,M8020A具有极高集成度,内置8阶发射端去加重,内置共模差模干扰,接收均衡,CDR,并具有链路协商机制,如图所示,整个链接环境非常简化,就可以完成接受容忍度测试,并且M8020A也是PCISIG官方推荐的链路均衡测试方案。

对于U.2(SFF-8639)接口,PCISIG发布了一致性测试夹具,下图展示了U.2接口的NVMe SSD卡的发射机测试连接实物图。可以使用SigTest进行参数测量,也可以使用Z或V系列示波器内部的PCIe一致性测试软件N5393F,支持U.2 End Point测试模式,实现U.2参数的自动化一致性测试。

>>> PCIe和NVMe协议测试

U4301B协议分析仪平台,支持PCIe3.0协议解析,支持LTSSM状态机分析,解析EQ链路协商的过程;并且支持NVMe,AHCI等事物层的解码;统计PCIe总线的性能分析。这个分析平台可以支持标准PCIe x 1到 x 16插槽,也支持焊接方式,以及M.2和U.2接口卡的探测。

另外,是德科技的U4305B PCIe训练器可以模拟PCIe3.0的主设备或从设备,训练对端被测件,可以进行LTSSM测试,完成PCIe3.0官方的协议一致性测试。另外,针对NVMe,U4305B可以模拟NVMe主设备,产生NVMe会话,发送NVMe命令,与被测件通信,完成NVMe的一致性测试。是德科技也提供PCIe备板设备N5316A,将U4305B和被测件NVMeSSD插卡都插在备板上实现相关的测试。

>>> SAS TX/RX 测试方案

M8020A可以配置两通道码型发生功能,在Tx测试时可以使用双通道合路产生OOB信号, Rx测试内置ISI可以模拟规范要求的外部ISI损耗要求,并且利用第二通道产生SAS要求的串扰信号。

>>> SATA TX/RX测试方案

下图简化的Tx测试可以强制DUT发送指定的测试码型,也可以利用M8020A误码仪作为BIST信号发生器,训练DUT进入环回并发射指定测试码型,完成自动化的测试。

>>> USB3.1/3.2测试方案

这里展示了越来越普及的Type C接口方式,USB3.1Tx/Rx测试方案,其中N7015A是Type C接口测试夹具,N7018A夹具支持PD和AltMode,并且支持USB3.1 SCD和LBPM的LFPS信号的生成和握手,完成Tx的参数测试。对于Rx测试,M8020A内置ISI功能,可以模拟USB协会规范定义的传输参考通道的插损模型,实现精简连接环境下的Rx接收容忍度测量,并且M8020A也支持CTS中要求的LFPSRx容忍度测量。

Memory及其controller芯片整体测试方案(下篇)的更多相关文章

  1. Memory及其controller芯片整体测试方案(上篇)

    如果你最近想买手机,没准儿你一看价格会被吓到手机什么时候偷偷涨价啦! 其实对于手机涨价,手机制造商也是有苦难言,其中一个显著的原因是存储器芯片价格的上涨↗↗↗ >>> 存储器memo ...

  2. 从Google开源RE2库学习到的C++测试方案

    最近因为科研需求,一直在研究Google的开源RE2库(正则表达式识别库),库源码体积庞大,用C++写的,对于我这个以前专供Java的人来说真的是一件很痛苦的事,每天只能啃一点点.今天研究了下里面用到 ...

  3. Android MediaCodec硬编兼容性测试方案

    作者:阿宝 更新:2016-08-15 来源:彩色世界(https://blog.hz601.org/2016/08/15/android-mediacodec-hardcode-compatibil ...

  4. 从轻测到上线,WeTest与《一起来捉妖》测试方案大公开

    从2016年Pokémon GO引发的AR游戏热潮开始,国内就一直在期待新的一款具备代表性的AR游戏的头部作品. 4月11日的腾讯首款AR探索手游<一起来捉妖>不仅为国内市场注入了新的活力 ...

  5. 软件测试相关术语(测试策略 && 测试方案 ....)

    软件测试有几种不同的定义方法: a.软件测试是为了发现程序中的错误而执行程序的过程. b.软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并运用这些测试用例运行程序,以 ...

  6. Web应用程序整体测试基础——单元测试

    近年来,随着基于B/S结构的大型应用越来越多,Web应用程序测试问题也在逐步完善中.但Web应用程序测试既可以在系统开发中实施,也可以独立于系统单独完成,这取决于Web应用程序的复杂性和多样性.同时程 ...

  7. HttpDNS的坑以及一个针对安卓不太完善的测试方案

    背景:单位因为域名劫持(具体表象是某个地区的用户ping不通域名或者因为DNS解析的ip跨网段导致访问速度很慢)需要运维经常去定位,于是提出了httpDNS方案. 想法是美好的,现实是残酷的.没引入这 ...

  8. 手机APP测试技术-整体测试流程框架

    一  手机APP测试基本思路: 测试计划--测试方案--测试用例--执行: 很多小公司都没有具体的需求,项目时间也比较紧,而且流程也不是很严谨,在这样的情况之下,作为测试的我们,该怎样去对项目进行用例 ...

  9. 移动弱网测试方案Network Emulator for Windows Toolkit

    移动app在测试时,有时需要考虑弱网的情形下,app的表现,那么怎么营造这样子的环境呢? 一.首先需要控制网络,有两种方式其一使用网络损伤仪进行,其二采用软件方式.硬件采购费用太贵,因此使用win平台 ...

随机推荐

  1. 实现一个shell程序

    实现一个自己的shell程序,这个程序有这些功能:解释执行命令,支持输入输出重定向,支持管道,后台运行 程序.当运行该程序后,它支持以下的命令格式: 1.单个命令,如:ls.2.带l到多个参数的命令, ...

  2. Linux 实时查看进程网络的使用情况

    一行代码实现 linux 指定进程网络的使用情况 pid=4203;count=0;while true;do info2=`sed -n '4,100p' /proc/$pid/net/dev |a ...

  3. 用VMWare搭建服务器集群不能上外网的三种模式下对应解决办法

    前言 决心要花费宝贵时间写下这篇心得,是因为从昨天晚上到今天上午被这个VMWare模拟搭建的服务器集群不能上外网的问题搞得很心烦,最后决定跟它杠上了!上午还通过远程连接得到了“空白”同学的帮助,在此表 ...

  4. PHP获取当月天数,获取当月的每天的开始和结束的时间戳,获取当月每号

    由于经常要写导单和数据分析功能,所以要获取什么时间的数据,想什么当天,周,年,月之类的时间格式都很好获取.我今天在这里为大家提供的是当月每天的开始和结束的时间格式. 希望能帮到大家!!! # 获取当月 ...

  5. 利用HaoheDI从数据库抽取数据导入到hbase中

    下载apache-phoenix-4.14.0-HBase-1.4-bin.tar.gz 将其中的 phoenix-4.14.0-HBase-1.4-client.jar phoenix-core-4 ...

  6. 【Hbase三】Java,python操作Hbase

    Java,python操作Hbase 操作Hbase python操作Hbase 安装Thrift之前所需准备 安装Thrift 产生针对Python的Hbase的API 启动Thrift服务 执行p ...

  7. STM32F407+STemwin学习笔记之STemwin移植

    原文链接:http://www.cnblogs.com/NickQ/p/8748011.html 环境:keil5.20  STM32F407ZGT6  LCD(320*240)  STemwin:S ...

  8. python中字符串的常见操作

    demo:mystr = 'hello python' 1.find:mystr.find(str, start=0, end=len(mystr)),检测字符串中是否有要查询的字符,如果有返回开始的 ...

  9. jenkins里面使用shell 获取jira的sprint信息

    需求 项目需要在jenkins自动发布中加入version.html来跟踪项目发布的版本信息,需要获取到jira中当前sprint的名字,和一个sprint中的发布次数(我这里用文件把次数存起来的傻方 ...

  10. 令人懊恼的阉割版fabric sdk功能缺失

    按理说,fabric本身都是用golang开发的,那么fabric-sdk-go作为其亲儿子,功能应该是最为完善的.然而,与我们想法相左的是,golang版本的sdk反而是最不完备的,开发进度滞后,功 ...