SDRAM存储芯片内存单元自动化测试程序设计

时间:2022-08-01 11:42:55

SDRAM存储芯片内存单元自动化测试程序设计

【摘要】SDRAM的同步动态存储可流水线操作指令,体现实时和省时的特点,但其本身存在的掉电数据丢失的缺点使得其在应用中进行SDRAM存储芯片内存单元读写的测试非常重要,否则可导致装置无法正常工作。本文就SDRAM存储芯片与ARM芯片配合使用的自动化测试进行详细阐述。

【关键词】SDRAM;自动化测试;设计

同步动态随机存取内存(synchronous dynamic random access memory,简称SDRAM)为同步动态存储器,可用来临时存放数据。SDRAM有一个同步接口,在响应控制输入前会等待一个时钟信号,时钟被用来驱动一个有限状态机,对进入的指令进行流水线操作,而不需要等待数据写入存储队列的时间。 其缺点为掉电数据会丢失。

我公司常将SDRAM存储芯片与ARM芯片配合使用,而用户烧写的程序运行在SDRAM上,如果该芯片出现问题,用户程序将不能正常运行,而导致未知的问题,甚至可以导致装置无法正常工作。因而对SDRAM存储芯片内存单元读写的测试可有效由于SDRAM内存单元、地址线和数据线的问题导致的设备发生异常,并且实现测试自动化,节省了测试时间,也保证了测试的精度。

1.测试策略及组网

本次测试开始时,曾设计3种测试方案:

方案1:使用产品代码的基础上进行修改

优点是工作量小,修改较小。

缺点是由于用户程序直接在SDRAM上运行,生成的变量直接保存到SDRAM中,并且程序运行的过程中串口缓冲区和显示缓冲区直接保存到SDRAM中,导致某些区域无法进行测试,所以放弃该方案。

方案2:通过移植UBOOT进行测试

优点是工作量小,修改较小,测试原理成熟。

缺点是uboot的代码和堆、栈空间0x10000000处开始,这些空间是不能被刷的,否则就挂死,所以放弃该方案。

方案3:通过修改BOOTLOADER进行测试

优点是工作量小,修改较小,可以对整个SDRAM进行完全测试。

缺点是呈现给操作者的结果不够直观,需要测试者具有一定的编程基础。

最终选择第3种测试方案。

2.测试环境与测试仪器

搭建测试环境:①笔记本电脑一台,型号:X230I;②硬件仿真工具一套,型号:JLINK③硬件仿真软件,型号:AXD

3.测试内容

3.1 数据线的连接测试

数据线的连接可能存在两种错误,一种是被断开,另一种布线或生产造成互相短路。Denx设计的数据线检测算法检测数据线的连接错误:以64位地址线为例,pattern=0b101010101010101010.... 能检测出奇偶位之间的数据错误。如果这个错误被排除,每两根数据线组成一组(这是理解下一个pattern的关键),再用相同的办法,检测每相邻两组之间是否有短路,就得到第二个pattern,就是 0b110011001100...... 依次类推,相继写入并读出这6个pattern分别是 0xaaaaaaaaaaaaaaaa,0xcccccccccccccccc,0xf0f0f0f0f0f0f0f0,0xff00ff00ff00ff00,0xffff0000ffff0000,0xffffffff00000000就能验证是否存在数据线交叉短路错误。

3.2 地址线错误测试

如果地址线存在错误,其症状是地址空间中的两个不同位置被映射到同一物理存储位置。更通俗地讲,就是写一个位置却“改变”了另一个位置。

地址线的错误检测相对简单,其算法是:

(1)将地址的值作为内容写入该地址处,汇编的表示方法是(addr)=addr。即将地址值写到地址对应的空间里,这样确保每一个位置的内容不同。

(2)依次将内存基地址的某一根地址线的值翻转(flip/toggle)得到某个地址,从该地址取值,如果该值和基地址的值相等,则表示某一位地址线有问题。

这个算法的特点是每次只检测一根地址线,方法简单有效。

3.3 SDRAM内存单元读写测试

(1)点击菜单栏“Execute”―“Go”命令,程序全速运行。

(2)测试者等待XX分钟,函数指针跳转到Main函数,看到提示则测试成功,如图1所示:

图1

(3)测试者等待XX分钟,未看到上图所示,用户点击菜单栏“Execute”―“Stop”命令,测试程序将停止。

(4)点击菜单栏“Processor Views”―“Registers”命令,查看“Current”―“R2”的Value值,该值即为内存单元读写错误单元。如图2所示:

图2

结果要求:SDRAM内存单元读写正确,测试者看到测试成功图即图1。

3.4 测试说明

本次测试时仅对SDRAM内存单元正确性进行测试。

存储单元的检测则是真正对DDR内存芯片的检测。内存芯片的常见错误是bit-stuck,简而言之,就是让它是0,它偏为1,让它为1,它偏为0,检测方法也很简单,就是用不同的pattern去写尽可能所有的地址并读回比较。因此测试数据选择0x55555555,0xAAAAAAAA。

4.总结

基于公司现有硬件平台设计的SDRAM内存单元测试程序,可以帮助我们进行SDRAM芯片的自动化测试,有效防止了由于SDRAM内存单元、地址线和数据线的问题,可能会出现导致设备发生异常,并且实现测试自动化,节省了测试时间,也保证了测试的精度,确保了SDRAM存储芯片的稳定可靠性。

上一篇:汽车轮胎压力监测系统设计研究 下一篇:太阳能充放电控制器的设计