1 背景技术
DDR3/4 SDRAM属于高速外设,最高时钟频率可达到1600MHz,最高速率可达3200MT/s。在存储控制器与DDR34 SDRAM设备之间有一层专为高速接口设计的模拟电路,此电路对于前端设计人员来说,不管在模拟验证阶段和回片测试阶段,都是一个黑盒子。而对于后端测试人员来说若此部分为外购IP,则内部结构也是无法清楚了解的。所以在测试阶段,对于DDR34 SDRAM的测试就具有一定的困难。
- 在SoC测试激励编写难度相当高,需要掌握多个Master的测试方法与验证模式。
- 在SoC上搭建测试环境比较难以实现较高的测试覆盖率
- 在SoC级搭建的环境难以定位错误,因为一条完整的数据通路往往涉及到很多个模块。
- DDR34 SDRAM是系统运行的关键。如果数据访问有错误那么应该首先从DDR34 SDRAM控制器到SDRAM器件这段通路开始查错。
- 分段测试的必要性,有助于加速测试,并快速定位错误发生地点。
- 如果需要可以将自测试再细化,可选仅从AXI端口到DFI端口,或者是AXI端口到SDRAM设备。但会增加许多设计验证成本。
2 设计概述
本设计要解决的问题是:在当今SoC系统的回片测试中,在定位DDR34 SDRAM访问时出现的问题时,由于因为一条完整的数据通路往往涉及到很多个模块,且SoC测试激励编写难度相当高,需要掌握多个Master的测试方法与验证模式,再加上DDR34 SDRAM本身是高速外设,普通示波器无法正确的观测到I/O口的状态,导致了数据通路的错误难以被发现与修正,从而整个SoC测试流程无法快速收敛,更加严重的情况是由于难以定位错误而导致整个SoC芯片无法量产。
针对以上的问题,本设计提供了一种,易于操作、结构简单、能够测试流程收敛过程加速以及具有高覆盖率的测试方法。
一种DDR34 SDRAM存储控制器的内建自测试方法包含了三大功能模块,分别是:功能配置模块、命令生成模块以及返回数据对比模块。功能模块主要负责收集用户对自测试内容的配置请求,以及向命令生成模块发送配置选项。命令生成模块则负责完成已配置的自测试,在用户触发自测试后,需要切断存储控制器的所有上层请求输入接口,保证自测试独享存储控制器所有的下层模块,且需要向返回数据对比模块输出期望的数据结果。返回数据对比模块,则是负责将自测试的结果到功能配置模块,以便用户能从寄存器访问通路得到自测试的结果。
作为本设计的命令生成模块的上层请求输入接口可以改进为:AXI协议、闲忙握手协议、APB协议以及用户自定义的通信协议。
作为本设计的返回数据对比模块可以改进为,使用寄存器文件存储期望数据,并使用与上层请求输入接口相同的通信协议进行返回数据的抓取。
本设计的所有模块均是作为SoC的一部分,与整个SoC一起进行流片与仿真测试。需要在RTL编码过程中就集成进入SoC系统中。
基于上述测试方法,其步骤为:
S1:预定义好上层请求输入接口的协议标准,使命令生成模块可以正确的产生被测模块可认知的测试激励。
S2:根据上层请求数据接口以及用户需求配置好功能配置模块,并通过配置寄存器来启动整个内建自测试。
S3:通过配置寄存器查看测试结果,若测试完成并出现错误则可以通过配置寄存器来查看返回数据与期望数据的具体差异。
与现有技术相比,本设计的优势在于:
1. 全自动进行的测试,大大降低了测试环境搭建的难度,仅需打通配置寄存器的通路,理论上就可进行DDR34 SDRAM的存储控制的内建自测试
2. 易于定位错误,将冗长复杂的SoC数据通路打散,单独定位DDR34 SDRAM存储控制器内部的数据访问通路
3. 本设计也可使用于ATE测试阶段,能够加速成片筛选流程中的存储控制器测试过程加速收敛。
3 附图说明
图1 内建自测试模块的结构原理示意图
图2 内建自测试方法在典型DDR34 SDRAM存储控制器中的互联方法
图3 内建自测试方法方法的流程图
4 具体实施方案
以下将结合说明书附图和具体实例对本发设计行进一步详细说明。
在一般的DDR34 SDRAM存储系统中,控制器是负责将上层请求的总线协议转换成符合DFI通信协议与JEDEC标准的DDR34 SDRAM的请求,对存储数据进行访问。上层总线的协议一般为AXI协议或者其他自定义的总线协议。本设计中的命令生成模块需要采用与上册总线协议相一致的通信协议,从而使得DDR34 SDRAM存储控制器能完全接收命令生成模块产生的激励。同时返回数据对比模块也需要使用此总线协议,以方便获取存储控制器返回的读数据。
如图1所示,本设计包含了三大功能模块,分别是:功能配置模块、命令生成模块以及返回数据对比模块。功能模块主要负责收集用户对自测试内容的配置请求,以及向命令生成模块发送配置选项。命令生成模块则负责完成已配置的自测试,在用户触发自测试后,需要切断存储控制器的所有上层请求输入接口,保证自测试独享存储控制器所有的下层模块,且需要向返回数据对比模块输出期望的数据结果。返回数据对比模块,则是负责将自测试的结果到功能配置模块,以便用户能从寄存器访问通路得到自测试的结果。
在具体应用时,用户可根据具体的测试需求配置功能配置模块中的寄存器,以产生不同功能的测试激励。
如图2所示,为本设计在典型的DDR34 SDRAM存储系统中的互联关系示意图。PHY中主要包含了针对于DDR34 SDRAM设计的高速模拟电路,以及针对模拟电路的数字逻辑控制单元。一般来说,PHY中会包含许多个子模块,分别完成命令与地址信号的传输与数据总线的传输。PHY中的模拟电路一般对于前端设计人员都是不可见的,且具有一定的保密性。在前期的模拟仿真过程中,一般都是使用行为级模拟单元来完成,而回片测试流程中也仅能当做一个黑盒来进行测试。但PHY与控制器之间的接口是采用业界统一的DFI协议,因此本设计的改进项也是包含了通过获取DFI协议来进行数据对比结果的方法。
如图3所示,本设计提供了基于上述内建自测试的测试方法,其步骤为:
S1:预定义好上层请求输入接口的协议标准,使命令生成模块可以正确的产生被测模块可认知的测试激励。此步骤需要再RTL代码固定之前完成,一旦流片之后,此部分功能与代码将是不可修改的。也就是说在RTL代码的仿真验证中,本设计中的所有功能与结构都必须确定好,并通过完善的仿真验证来确保其功能是正确且符合预期。
S2:根据上层请求数据接口以及用户需求配置好功能配置模块,并通过配置寄存器来启动整个内建自测试。此步骤为全自动内建自测试的配置阶段,用户需要根据用户手册中描述的功能结合自身需求来配置相关的寄存器值,并通过将触发位写入高电平来启动整个测试流程。
S3:通过配置寄存器查看测试结果,一旦测试流程启动,用户仅需通过寄存器查看结果。用户可通过访问寄存器,来获取每个子步骤的完成情况,以及整个测试流程完成的所有步骤类型与数量。
S4:若测试完成并出现错误则可以通过配置寄存器来查看每个子步骤中返回数据与期望数据的具体差异。以定位在访问数据时的错误地点,并根据具体的实际情况选择修改电路或者是改进DDR34 SDRAM存储控制器中的相关配置参数。
在印制电路板上进行回片测试时,和可以结果高速示波器来查看DDR34 SDRAM设备接口信号的质量与波形是否符合预期。例如在读写过程中所有的时序参数是否符合JEDEC的要求,或者是在正常运行自测试过程时,信号的电气特性是否符合JEDEC中的相关要求。