Flash 测试学习#
参考文献:
[1] 杨超,张金凤,马成英.NAND FLASH 测试设计及使用探讨 [J]. 电子世界,2018,No.551 (17):116-118.DOI:10.19353 /j.cnki.dzsj.2018.17.063.
NAND FLASH 是非易失性存储器,其基本存储单元是块(block),每块又由若干页(page)构成。其中,最小读写单元是页,最小擦除单元是块。在对一页进行编程之前,需要先将该页所在的块进行擦除操作。NAND FLASH 在出厂时存在少量的坏块,厂家会对坏块进行标注,方便用户在使用过程中对其进行识别;在测试和使用过程中同样会产生新的坏块,元器件可靠性机构应当对坏块进行识别和回写,用户应进行坏块管理以跳过坏块,从而避免存储数据丢失。NAND FLASH 主要供货商是 SAMSUNG 和 MICRON 两家公司,其内部结构大同小异,分为 16 位和 8 位两种数据形式,地址线、数据线、命令线分时复用,串行工作方式,需要特定的控制命令以执行相应的操作。本文所选用的 MT-29F64G08AJABAWP-IT 具有 16384 个 blocks,每个块由 128 个 pages 组成,每一页包含(4096+224)个 bytes,其中 224 个冗余字节,用于存储配置信息;共 64GB 存储空间,数据存储格式为 8 位;TSOP 封装的器件共 48 个管脚,除了 8 个复用的 IO 口,还有部分控制管脚和电源管脚,其余管脚悬空即可。
测试时首先读出芯片的 ID,与技术手册进行比较,如果一致继续测试,不一致则芯片不合格,停止测试。NAND FLASH 出厂时存在少量坏块,厂家出厂时会对坏块进行标注,即在本块第一页或者第二页第一个冗余字节写入 00。在测试时需要首先对每一块的该字节进行判定,如果是 00,证明该块出厂时被标注为坏块,坏块数量寄存器加 1,跳转到下一块进行测试,此时切忌对被厂家标注的坏块进行擦除,因为擦除操作会将厂家的坏块标识清除;如果是 FF,证明该块出厂时是好块,需要进行测试。
测试过程中逐块对 NAND FLASH 存储阵列进行验证,测试过程包括整块的读写和擦除,如果发现出厂时未被标注的坏块,测试系统对坏块地址进行存储。待完成整片测试之后,对坏块数量进行统计,如果坏块数量满足技术手册要求,证明芯片合格;此时若存在出厂未标注的坏块,对坏块信息进行回写,回写方式同出厂标注方式,即在该块第一页或者第二页第一个冗余字节写入 00,便于用户进行统一识别。
需要注意的是,上图中为了避免过于繁琐,只将一种测试图形算法的读写和擦除操作体现在图中,实际测试过程中,需要对故障覆盖率和时间复杂度进行综合考量以决定选用何种测试算法,必要时还需要几种测试算法联合进行测试。常用的测试图形算法包括两大类:测试时间复杂度为 N的全 0,全 1,随机数,棋盘格,反棋盘格,对角线等测试算法;测 *试时间复杂度的为 N2*的步进,走步,跳步等测试算法。不同的测试算法能够检测出特定的故障,时间复杂度高的测试算法故障覆盖率相对较高。
由于选用的芯片是串行工作模式,8 位数据端口分时寻址 64GB 的存储空间,采用时间复杂度为 N 的测试算法对芯片进行全片写入,预计时间在 400s 左右,所以即使采用 N2测试算法具有较高的故障覆盖率,对于量产的元器件可靠性机构来说并不适用。最终决定使用全 0,随机数,棋盘格,反棋盘格等四种 N 型测试算法联合对芯片进行测试,可以覆盖固 0、固 1、地址译码故障、短路、开路等常见的存储器故障,在测试时间允许的范围最大程度的增加了故障覆盖率,可以达到良好的测试效果,有效剔除不良芯片。