存储器基础知识:SRAM/DRAM/ROM结构、存储单元工作原理与常见故障模式

在ASIC设计中,存储器(Memory)是芯片内部占用面积最大、逻辑密度最高、最易受工艺偏差影响的模块之一。无论是SoC中的Cache、FIFO、寄存器堆,还是独立存储芯片中的阵列,其良率与可靠性都直接决定了整个产品的成败。本章作为BIST(内建自测试)与修复逻辑设计的前置基础,将系统梳理SRAM、DRAM、ROM三类主流存储器的物理结构、存储单元工作原理,以及ASIC测试中最常遇到的故障模式——固定故障、转换故障、耦合故障等。理解这些底层机制,是后续设计March算法、选择测试序列、判断修复策略(如行/列冗余替换)的前提。

存储器分类与故障模式映射关系 SRAM(静态随机存取) 6T/8T 锁存结构 无需刷新,速度极快 用于Cache、寄存器堆 面积大,功耗较高 DRAM(动态随机存取) 1T1C 电容存储 需周期性刷新 密度高,成本低 用于主存、大容量存储 ROM(只读存储器) 掩膜/OTP/Flash 非易失性存储 用于Boot代码、固件 写入后不可频繁修改 常见故障模式(BIST测试目标) 固定故障 (SAF) Stuck-At-0 / Stuck-At-1 节点恒为逻辑0或1 March C- 可覆盖 转换故障 (TF) Transition Fault 0→1 或 1→0 失败 需双March元素检测 耦合故障 (CF) Coupling Fault 单元间相互影响 需复杂背景序列 其他故障 地址译码故障(AF) 读/写逻辑故障 数据保持故障

上图展示了三类存储器与故障模式之间的整体映射关系。在实际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)检测位线间的微小压差即可读出数据。

设计要点:6T单元的面积约为0.5~1.5μm²(取决于工艺节点),在深亚微米工艺下,单元面积直接决定芯片成本。为提升密度,业界常采用8T单元(增加两个读端口晶体管)用于多端口寄存器堆,或采用比特单元(Bit Cell)优化布局。BIST测试时需关注字线脉冲宽度、位线预充电时间等时序参数,因为过窄的脉冲可能导致写入不完整,产生“软故障”。

判断方法: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将故障行地址重映射至备用行。

风险提示:固定故障若未被BIST及时发现,可能导致芯片在系统运行中随机出现数据错误,尤其在汽车电子或医疗设备中可能引发严重安全事故。因此,BIST必须在芯片上电初始化阶段或周期性自检中执行,且测试覆盖率需达到99%以上。

常见误区与总结

  • 误区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(纠错码)机制在运行时纠正单比特错误。

经验提醒:DRAM测试必须考虑温度与电压的协同效应。高温会加速漏电,低压会降低噪声容限,两者叠加时故障率显著上升。建议在芯片设计阶段预留BIST的电压/温度调节接口,以便在测试模式下施加更严苛的条件。

常见误区与总结

  • 误区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),发现该地址对应的晶体管栅极氧化层存在针孔缺陷,导致栅极漏电,使晶体管在字线未激活时也部分导通,位线被微弱拉低。由于该缺陷仅影响特定工艺角,量产测试中通过提高位线预充电电压并缩短读取时间窗口,成功筛选出故障芯片。

风险说明:ROM故障具有“永久性”特征,一旦出厂无法修复。因此,ROM的BIST测试必须100%覆盖所有存储单元,且建议在芯片上电时执行CRC校验,防止早期失效芯片流入市场。

常见误区与总结

  • 误区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测试流程建议

  1. 故障建模:根据存储器类型和工艺节点,确定需要覆盖的故障模式集合。
  2. 算法选择:选择March算法(如March C-、March SS)或自定义测试序列,确保故障覆盖率≥99%。
  3. 时序配置:设置合理的读写时序参数(如建立时间、保持时间),避免测试本身引入误判。
  4. 结果分析:通过BIST状态寄存器或扫描链输出故障地址,结合冗余分析(Repair Analysis)决定是否启用备用行/列。
  5. 修复执行:使用eFuse、激光熔丝或软件映射完成地址重定向。
实战经验:在65nm以下工艺节点,耦合故障和行锤击故障的发生率显著上升。建议在BIST中增加“背景干扰”测试——即在对目标单元进行读写的同时,对相邻单元施加翻转操作,以模拟真实工作场景下的最坏情况。

总结与设计启示

本章从存储单元物理结构出发,系统梳理了SRAM、DRAM、ROM的工作原理与故障模式。核心要点可归纳为:

  • SRAM的6T锁存结构决定了其故障以静态为主,但需关注低电压下的动态保持问题。
  • DRAM的1T1C电容结构引入了刷新、保持、行锤击等特有故障,测试需结合温度与电压条件。
  • ROM的故障集中在地址译码与读出路径,且不可修复,必须通过高覆盖率测试保证良率。
  • BIST算法的选择应基于故障模型,March系列算法是SRAM/DRAM测试的主流选择,而ROM测试则依赖CRC与固定模式。