存储器基础知识:SRAM/DRAM/ROM结构、存储单元工作原理与常见故障模式
在ASIC设计中,存储器(Memory)是芯片内部占用面积最大、逻辑密度最高、最易受工艺偏差影响的模块之一。无论是SoC中的Cache、FIFO、寄存器堆,还是独立存储芯片中的阵列,其良率与可靠性都直接决定了整个产品的成败。本章作为BIST(内建自测试)与修复逻辑设计的前置基础,将系统梳理SRAM、DRAM、ROM三类主流存储器的物理结构、存储单元工作原理,以及ASIC测试中最常遇到的故障模式——固定故障、转换故障、耦合故障等。理解这些底层机制,是后续设计March算法、选择测试序列、判断修复策略(如行/列冗余替换)的前提。
上图展示了三类存储器与故障模式之间的整体映射关系。在实际ASIC设计中,SRAM由于采用锁存结构,其故障更多表现为单元内部晶体管的短路或断路;DRAM则因电容电荷泄漏而额外存在刷新相关故障;ROM的故障则集中在地址译码与位线读取路径上。下面逐一深入剖析。
2.1 SRAM存储单元结构与工作原理
核心原理:6T锁存单元
SRAM(静态随机存取存储器)的核心存储单元通常由6个晶体管(6T)构成,其中4个晶体管(两个交叉耦合的反相器)形成正反馈锁存结构,用于稳定保存1bit数据;另外2个晶体管作为访问管(Pass Transistor),由字线(Word Line, WL)控制,将存储节点与位线(Bit Line, BL/BLB)连通。6T结构的关键优势在于:只要供电正常,数据即可永久保持,无需刷新操作。
以写入逻辑“1”为例:字线WL拉高,访问管导通,位线BL被驱动为高电平、BLB为低电平,强制将存储节点Q置为1、QB置为0。写入完成后WL拉低,访问管关断,交叉耦合反相器通过正反馈维持Q=1的状态。读取时,先将BL和BLB预充电至高电平,然后WL拉高,存储节点Q=1会使BL保持高电平,而QB=0会使BLB放电至低电平,通过灵敏放大器(Sense Amplifier)检测位线间的微小压差即可读出数据。
判断方法:SRAM故障检测的电气特征
在BIST测试中,SRAM故障通常表现为以下电气特征:
- 固定故障(SAF):某节点恒为0或1,无论写入何值,读出结果不变。例如存储节点Q到VDD的短路会导致SA1。
- 转换故障(TF):单元能保持原有值,但无法完成0→1或1→0的跳变。通常由驱动管驱动能力不足或阈值电压漂移引起。
- 耦合故障(CF):一个单元(攻击单元)的跳变导致相邻单元(受害单元)的值被翻转。常见于位线间电容耦合或共享电源网络的电阻压降。
判断这些故障需要设计特定的测试序列(March算法),例如March C-算法通过递增/递减地址顺序,对每个单元执行写0、读0、写1、读1等操作,可覆盖绝大多数SAF和TF故障。
案例拆解:6T SRAM阵列的固定故障定位
假设某ASIC芯片内嵌一个32KB的SRAM,在功能测试阶段发现特定地址范围(0x2000~0x2FFF)读出数据始终为0x00。初步分析排除外围逻辑问题后,怀疑存储阵列存在固定故障。使用BIST控制器执行March C-算法,测试日志显示:
地址 0x2000: 写入 0xAA, 读出 0x00 → FAIL
地址 0x2001: 写入 0x55, 读出 0x00 → FAIL
...
地址 0x2FFF: 写入 0xAA, 读出 0x00 → FAIL
进一步分析发现,该地址范围对应同一行(Row)的连续列。通过扫描链(Scan Chain)定位到该行的字线驱动电路存在一个晶体管栅极开路,导致字线无法完全拉高,访问管导通不充分,位线无法被存储节点驱动。修复方案为启用冗余行(Redundant Row),通过激光熔丝或eFuse将故障行地址重映射至备用行。
常见误区与总结
- 误区1:认为SRAM故障只发生在存储单元内部。实际上,地址译码器、灵敏放大器、写驱动电路等外围逻辑的故障同样会导致读写错误,BIST应覆盖整个存储子系统。
- 误区2:忽略动态故障(如数据保持故障)。在低电压或高温条件下,SRAM单元可能因漏电而丢失数据,需通过数据保持测试(Data Retention Test)验证。
- 总结:SRAM测试的核心是理解6T单元的电气行为,结合March算法覆盖静态故障,并辅以时序测试覆盖动态故障。
2.2 DRAM存储单元结构与工作原理
核心原理:1T1C电容存储
DRAM(动态随机存取存储器)的存储单元仅由1个晶体管和1个电容(1T1C)构成。数据以电荷形式存储在电容中,晶体管作为开关控制电容与位线的连接。由于电容存在漏电现象,DRAM必须周期性刷新(Refresh)以维持数据。DRAM的密度远高于SRAM(约4~8倍),但访问速度较慢(约50~100ns),且需要复杂的刷新控制逻辑。
写入操作时,字线WL拉高,晶体管导通,位线BL上的电压通过晶体管对电容充电或放电。读取操作时,WL拉高,电容上的电荷共享到位线上,使位线电压产生微小变化(通常仅100~200mV),灵敏放大器检测并放大该信号。由于读取过程会破坏电容上的电荷,DRAM每次读取后必须执行“重写”(Restore)操作。
判断方法:DRAM特有故障与测试策略
DRAM除了具有与SRAM类似的SAF、TF、CF故障外,还特有:
- 刷新故障(Refresh Fault):电容漏电过快,在规定的刷新周期内数据丢失。测试时需延长刷新间隔或降低工作电压来暴露此类故障。
- 保持故障(Retention Fault):特定单元在高温下无法保持数据超过数百毫秒。需进行高温下的数据保持测试。
- 行锤击故障(Row Hammer):频繁访问某一行导致相邻行电容电荷泄漏加速。这是深亚微米工艺下的重要可靠性问题。
DRAM测试通常采用March算法与刷新测试相结合的方式。例如,先执行March C-检测静态故障,再执行“写入-等待-读取”模式检测保持故障,最后通过交替访问不同行来模拟行锤击场景。
案例拆解:DRAM保持故障的定位与修复
某网络处理器芯片使用DDR3 DRAM作为包缓冲,在高温老化测试(85℃)中发现偶发性数据错误。错误日志显示,某些地址在写入后约200ms再读取时出现数据翻转。使用ATE(自动测试设备)执行保持故障测试:
测试条件:VDD=1.5V, 温度=85℃
写入 0xFFFF 至全部地址
等待 200ms
读取全部地址 → 发现地址 0x3A00~0x3AFF 数据变为 0x0000
分析发现,该地址范围对应DRAM阵列中同一列(Column)的多个行,且这些行共享同一条位线。进一步检查位线接触孔(Contact)的工艺参数,发现接触孔电阻偏高,导致电容放电速度加快。修复方案为在芯片封装测试阶段通过激光修复(Laser Repair)替换故障列,或通过内存控制器中的ECC(纠错码)机制在运行时纠正单比特错误。
常见误区与总结
- 误区1:将DRAM的刷新故障误判为逻辑故障。刷新故障的根源是电容漏电,而非逻辑门错误,需通过延长刷新间隔的测试来区分。
- 误区2:忽略行锤击故障。在服务器或AI加速器等高负载场景下,行锤击可能导致系统崩溃,BIST应包含行锤击压力测试。
- 总结:DRAM测试的核心是电容电荷的保持与刷新,BIST需结合温度、电压、时间三个维度设计测试序列。
2.3 ROM存储单元结构与工作原理
核心原理:非易失性存储机制
ROM(只读存储器)在ASIC中主要用于存储Boot代码、查表数据或固定配置信息。根据可编程性,ROM分为掩膜ROM(Mask ROM)、OTP(一次性可编程)、EPROM、EEPROM和Flash。掩膜ROM在制造时通过光刻掩膜版定义数据,成本最低但无法修改;OTP通过熔丝或反熔丝实现一次性编程;Flash则通过浮栅晶体管实现电可擦写。
以掩膜ROM为例,其存储单元通常为单晶体管结构,晶体管的栅极连接字线,漏极连接位线,源极接地。数据“0”或“1”由晶体管是否存在决定:若存在晶体管,则字线激活时位线被拉低(读出0);若不存在晶体管,则位线保持预充电高电平(读出1)。Flash单元则利用浮栅中存储的电荷改变晶体管的阈值电压,从而区分0和1。
判断方法:ROM故障模式与测试策略
ROM的故障模式相对简单,主要包括:
- 地址译码故障(AF):地址线短路或断路导致访问错误的存储单元。
- 位线/字线故障:位线或字线开路、短路导致读出数据错误。
- 存储单元故障:晶体管缺失或多余、浮栅电荷异常等。
ROM测试通常采用“读全0”、“读全1”、“读棋盘格”等固定模式,或使用CRC校验和(Checksum)验证数据完整性。对于Flash,还需额外测试擦写次数(Endurance)和数据保持时间(Retention)。
案例拆解:掩膜ROM数据错误的排查
某MCU芯片的掩膜ROM存储了启动代码,在量产测试中发现约0.1%的芯片无法正常启动。使用ATE读取ROM内容并与Golden Reference比对,发现地址0x0100处的数据由预期的0x5A变为0x5B(仅最低位错误)。通过物理失效分析(PFA),发现该地址对应的晶体管栅极氧化层存在针孔缺陷,导致栅极漏电,使晶体管在字线未激活时也部分导通,位线被微弱拉低。由于该缺陷仅影响特定工艺角,量产测试中通过提高位线预充电电压并缩短读取时间窗口,成功筛选出故障芯片。
常见误区与总结
- 误区1:认为ROM不需要BIST。实际上,ROM的地址译码器和读出放大器同样可能故障,且ROM故障无法通过冗余修复,只能依赖测试筛选。
- 误区2:忽略ROM的时序参数。高速ROM的读出时间受位线电容和灵敏放大器带宽限制,时序裕量不足会导致读出错误。
- 总结:ROM测试的核心是地址完整性与数据完整性,BIST应结合CRC校验和固定模式读取实现高覆盖率。
2.4 常见故障模式对比与BIST测试映射
下表汇总了三类存储器的主要故障模式、物理根源及对应的BIST测试策略,便于设计人员在制定测试计划时快速参考。
| 故障类型 | 物理根源 | 适用存储器 | BIST测试方法 | 可修复性 |
|---|---|---|---|---|
| 固定故障(SAF) | 晶体管短路/断路、金属桥接 | SRAM/DRAM/ROM | March C-、March SS | SRAM/DRAM可冗余修复,ROM不可 |
| 转换故障(TF) | 驱动管阈值漂移、电容老化 | SRAM/DRAM | March C+、March LR | SRAM可修复,DRAM需ECC辅助 |
| 耦合故障(CF) | 位线间电容耦合、电源噪声 | SRAM/DRAM | March B、March G | SRAM可修复,DRAM需布局优化 |
| 地址译码故障(AF) | 译码器逻辑错误、地址线缺陷 | 三类均适用 | 地址遍历测试 | SRAM/DRAM可冗余修复 |
| 刷新/保持故障 | 电容漏电、刷新电路失效 | DRAM | 数据保持测试、刷新间隔扫描 | ECC或刷新频率调整 |
| 行锤击故障 | 相邻行电荷干扰 | DRAM | 行锤击压力测试 | 需刷新策略优化 |
BIST测试流程建议
- 故障建模:根据存储器类型和工艺节点,确定需要覆盖的故障模式集合。
- 算法选择:选择March算法(如March C-、March SS)或自定义测试序列,确保故障覆盖率≥99%。
- 时序配置:设置合理的读写时序参数(如建立时间、保持时间),避免测试本身引入误判。
- 结果分析:通过BIST状态寄存器或扫描链输出故障地址,结合冗余分析(Repair Analysis)决定是否启用备用行/列。
- 修复执行:使用eFuse、激光熔丝或软件映射完成地址重定向。
总结与设计启示
本章从存储单元物理结构出发,系统梳理了SRAM、DRAM、ROM的工作原理与故障模式。核心要点可归纳为:
- SRAM的6T锁存结构决定了其故障以静态为主,但需关注低电压下的动态保持问题。
- DRAM的1T1C电容结构引入了刷新、保持、行锤击等特有故障,测试需结合温度与电压条件。
- ROM的故障集中在地址译码与读出路径,且不可修复,必须通过高覆盖率测试保证良率。
- BIST算法的选择应基于故障模型,March系列算法是SRAM/DRAM测试的主流选择,而ROM测试则依赖CRC与固定模式。