ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

新型存储器阵列化:从单器件到大规模阵列的工程挑战与破解之道

2026/9/8 13:26:59 拓冰建站 浏览量
新型存储器阵列化:从单器件到大规模阵列的工程挑战与破解之道 1. 为什么单个器件“完美”阵列一做大就“翻车”这几年新型存储器的论文越看越多但大多数都停在一个漂亮的小阵列上一旦有人想把单个器件做到大规模阵列各种问题就像被打开盖子的潘多拉魔盒。RRAM、MRAM、FeFET、PCRAM这些新型存储器单器件测试数据可以漂亮到让人心动但在真正走向大规模阵列时几乎无一例外会遇到良率、一致性、干扰、外围电路等一系列拦路虎。这篇文章想说的就是这个从单器件到大规模阵列之间“缺失的环节”。我做过几代存储阵列的测试和设计踩过不少坑这里尽量把经验都倒出来。如果你是存储芯片工程师、新型存储器件研究者或者对存内计算感兴趣的硬件爱好者这篇内容应该能帮你少走几个月弯路。1.1 器件级测试很难暴露真实困境单器件测试是个老好人。拿一颗RRAM或者FeFET给一个形成电压循环几百次测出高阻态和低阻态的分布写进论文看着相当漂亮开关比10的3次方耐久10的6次方保持特性在85度下能外推到10年。可一旦把同样的器件放到8x8、16x16甚至更大的阵列里事情就变得不体面了。良率下降写入时间漂移相邻单元的读干扰时不时冒出来。这个落差我做了几年存储测试后深有体会。问题出在哪里单器件测试本质上是一个近乎“无干扰”的完美环境探针台直接扎到两个电极上没有地址线电容没有金属互连电阻没有相邻单元的漏电路径更没有外围电路逻辑延迟的限制。你测到的就是这枚器件本身的物理本征行为这当然重要但它掩盖了阵列环境中决定成败的工程问题。单器件测试像是在安静房间测一个人的听力而阵列测试是在一场摇滚演唱会现场测同一个人能不能听清朋友说话难度完全不是一回事。1.2 阵列不是器件的简单复制粘贴很多人以为把单个器件排成方阵再用行列选通线连起来就是一个阵列。这个想法和“把10个人排在一起就是一个团队”一样天真。阵列里每个单元同时活在几个网络里字线网络、位线网络、源线网络还有衬底或者阱网络。这些网络带着电阻和电容像一张张软绵绵的网把一个点的动作传遍整个阵列。举个简单例子一个64x64的交叉阵列地址线电容和金属线电阻会显著拉长读写时间。如果单元处于低阻态电流会通过相邻的高阻单元偷偷漏过去这就是sneak path严重时甚至会把“0”读成“1”。这些效应单器件测试完全看不到。所以单个器件到阵列的跨越不是数量上的线性放大而是从物理器件研究切换到系统电路设计的范式切换。这一点想不明白后面每一步都会踩坑。对比项单器件测试阵列级测试环境干扰几乎没有寄生电容、互连电阻、相邻单元耦合单元状态统计只看个别器件的分布观察成百上千个单元联合分布读写窗口很宽裕被寄生和失配吃掉大半缺陷模式容易定位类似背景噪声很难复现仿真难度简单物理模型即可需要RC寄生网络统计模型这张表基本概括了我这些年的感受。很多人做研究时长期停留在左列突然跳到右列的项目里自然会摔跟头。2. 大规模阵列化绕不开的四大硬骨头2.1 一致性器件之间的“性格差异”决定生死新型存储器大多依赖某种“软物理”机制RRAM靠导电细丝的形成与断裂PCRAM靠相变材料的晶态和非晶态切换FeFET靠铁电极化翻转。这些机制本身就带随机性单个器件测出来都是一个分布放到阵列里就是成千上万个分布叠加。最直观的后果是Set和Reset电压不一致。有人会反驳分布是可以用迭代编程脉冲来修复的。确实可以但代价是写入时间变长、功耗上升、控制器设计变复杂。我见过一个设计为了把28nm工艺下的RRAM阵列写入时间压到100ns以内不得不引入write-verify循环结果平均写入次数翻了一倍耐久度直接打对折。所以一致性不只是器件问题它直接决定你外围电路和算法的复杂度。单纯抱怨“器件不够均一”是没有意义的真正的工程问题是在现有分布下怎么让大量器件协同工作还不翻车。2.2 良率思维容不下任何一个坏点DRAM和Flash发展几十年靠的是一套成熟的良率管理与冗余修复机制。新型存储阵列如果做不到单点修复哪怕99%的单元是好的一个大阵列也会因为那1%的坏点变成废品。比如一个1024x1024的阵列单元总数超过一百万即使单点良率是99.99%理论上平均也有一百个坏单元。这里就需要借鉴传统存储器的冗余行/列替换、纠错编码ECC、甚至针对新型存储器缺陷模式的特殊修复方案。但很多做材料出身的研究组对这套工程思维并不熟悉论文里往往只放一个“averaged”细丝图对良率只字不提。这是新型存储器从论文走向产品最缺的一块。没有良率意识流片回来的阵列可能连一个能用的存储块都找不到。2.3 阵列干扰最容易被低估的“串音”阵列干扰分很多种读干扰、写干扰、半选干扰、邻近单元热扰动。RRAM交叉阵列中的sneak path是最典型的例子但没有选通管的纯交叉阵列几乎很难做到大容量。后来大家用1T1R一个晶体管加一个RRAM或1S1R一个选通器件加一个RRAM本质就是把每个单元从“裸露”状态变成“可控”状态切断漏电路径。但即使有选通管干扰也不会消失。半选单元在读写时会被加上一半或部分电压长时间累积也会造成数据扰动。FeFET阵列里还有一类很麻烦的读后写干扰问题读操作本身会影响相邻单元的极化状态。这些问题单个器件测试完全测不出来必须靠阵列级测试和建模来抓。我见过一个团队器件物理特性做得很好结果阵列里的干扰问题把整个项目拖了大半年原因就是没人提前做阵列级仿真。2.4 外围电路真正被卡脖子的地方很多人一提到新型存储器眼睛盯着存储介质本身却忘了世界是模拟的。要驱动阵列你需要灵敏放大器、行译码器、列译码器、写驱动、电荷泵、参考单元和时序控制逻辑。这些外围电路的功耗、面积、速度经常比存储阵列本身还大尤其是低电压下灵敏放大器的失调电压可能让整个读写窗口变得不可用。我参与过一个MRAM项目单元本身在实验室里测出来磁电阻比高达180%相当漂亮。可一上到阵列因为参考电路设计得过紧加上工艺波动300mV的读窗口被各种寄生和失配吃掉了近半。最后只能靠冗余位和自参考读放大方案打补丁。可见阵列化的瓶颈很多时候不在“存储单元”而在它周围的那一圈“普通电路”。这就是为什么存储芯片工程师的价值被低估了——真刀真枪的大规模阵列拼的就是外围。器件类型阵列化主要瓶颈常见缓解手段RRAM一致性差、sneak path、细丝随机性1T1R/1S1R、write-verify、ECCMRAM读窗口小、写电流大、磁性层工艺波动自参考读放大、冗余位、磁矩校准FeFET读干扰、保持特性随温度衰退读电压优化、时序保护、刷新机制PCRAM相变功耗高、阻值漂移迭代写策略、参考单元追踪、漂移补偿这张表是我根据常见实践整理的不同工艺节点的表现会有差异但大方向基本如此。3. 跨界借鉴从毫米波大规模天线阵列建模里学到的三件事3.1 互耦效应与读写干扰本质同源把天线阵列和存储阵列放一起表面看风马牛不相及但实际建模逻辑高度相似。毫米波大规模天线阵列要解决天线单元之间的互耦问题每个天线的辐射方向图会因为邻近天线而变形天线的输入阻抗也会漂移。存储器阵列里的读写干扰严格来说也是一种“互耦”——单元与单元之间通过位线、字线、衬底、金属互连和共享外围电路产生寄生耦合导致你读A单元时B单元的状态也在被悄悄改变。所以天线领域那套耦合矩阵提取、互耦补偿、甚至通过调整单元间距和负载阻抗来去耦合的思路完全可以迁移到存储阵列的版图优化和读写时序设计里。把位线间距拉开一点给敏感节点加shielding这些看似“抄作业”的方法往往比在器件工艺层面较劲更省力。我在一个阵列项目里就试过只是调整了相邻位线之间的屏蔽地线读干扰下降了大概三成代价是面积增加不到5%性价比非常高。3.2 统计建模比单点标定更接近真相毫米波天线阵列建模里有一个非常成熟的习惯不能用单个天线的S参数复制N份就当作阵列的模型必须把全阵列的互耦矩阵、单元位置误差、材料公差都纳入统计模型然后做Monte Carlo仿真。因为阵列性能对相位失配和增益波动极其敏感单点“最优”设计根本没法上系统。这个思路搬到存储阵列也一样。新型存储器件天然存在工艺波动把单个器件的I-V特性测一个“平均值”塞进仿真得到的阵列时序一定是不准的。正确做法是拿到一批器件的统计分布做成带correlation的spice模型然后用Monte Carlo做全阵列的读写时序、功耗和良率仿真。这才是和天线阵列工程师同样的“工程成熟度”。具体来说我会先测50颗以上器件提取Set电压、Reset电压、高低阻值的均值和方差再算不同参数之间的相关系数把这些信息写进模型文件然后跑至少1000次Monte Carlo看最差情况的读写窗口是否还够。3.3 让仿真从“玩具模型”走向“全阵列模型”天线工程师不会拿着一个单元模型去评估整套系统的波束成形性能他们会对整个阵列规模做电磁场全波仿真再降阶成电路模型。存储阵列也应该这样从几x几的“玩具阵列”出发逐渐扩展到接近实际规模的子阵列提取寄生RC网络和器件模型联合仿真。这里有个很实际的困难全阵列级别的spice仿真可能慢到无法接受。天线的解法是分层次建模全波电磁仿真提取耦合参数再做等效电路降阶最后和系统级模型协同仿真。存储阵列完全可以抄这套分层路径单元级用物理模型小阵列用spice精确仿真大阵列用行为级模型压缩靠校准保证精度。我后来做64x64阵列仿真时就是用这个三层方案把单次仿真时间从几个小时压到十几分钟精度损失控制在5%以内。建模层次存储阵列对应做法天线阵列对应做法单元层器件物理模型、I-V实测拟合天线单元电磁模型子阵列层提取寄生RC、做小阵列spice耦合矩阵、子阵列全波仿真系统层行为级模型、Monte Carlo良率仿真波束成形系统级协同仿真这种跨领域的方法迁移恰恰是很多存储团队忽略的快速通道。4. 让阵列真正落地的补课清单4.1 测试与特征化不能照搬存储器老套路传统存储器的测试流程很成熟但新型存储器的缺陷模式不同只做传统的固定故障和转换故障测试远远不够。比如RRAM的导电细丝过剩或断裂不完全会形成一类模拟性故障你用blurry fail bitmap可能根本抓不住。更麻烦的是一些缺陷是时间相关的必须在特定读时序、特定温度和特定循环次数下才出现。所以阵列级测试模式设计要跟器件物理结合。我在做阵列测试时会先对几十颗单器件做full characterization找到Set/Reset电压、读电压、脉冲宽度的敏感区间再按这些敏感区间去设计array test pattern。很多人反着来先把电路测试模板套上去测出一堆奇怪的fail再回头debug效率极低。我现在常用的五类测试pattern是反复读写、地址翻转、保持、温度变化、电源抖动。宁可测试时间多花一点也不要在debug时靠猜。4.2 ECC、冗余与寿命管理是一等公民新型存储器要走上商用ECC和冗余不是“可选项”而是“默认项”。但和传统存储器相比新型存储器的失效模型有自己的性格有些错误是可恢复的比如一次读干扰导致的翻转重新写一次就回来了有些错误是永久性的比如RRAM细丝卡死。ECC方案必须能把“软错”和“硬错”区分开否则误判会严重浪费冗余。寿命管理也一样。RRAM和PCRAM的耐写次数远不如Flash但它们的写入是逐bit可控的这给了更细粒度的磨损均衡空间。在阵列层面可以按行或按块做动态映射让写压力平均分配。这些技术在SSD主控里已经非常成熟但在新型存储阵列里往往要到很后期才被想起来。早一点把ECC、冗余、磨损均衡纳入整体架构设计会少走很多弯路。如果只是把新型存储单元硬塞进老存储架构等于把跑车引擎装进拖拉机底盘根本发挥不出优势。4.3 从存储阵列到存内计算架构新型存储器对计算架构的真正价值不只是替代DRAM/SRAM更是把计算放进存储器里。存内计算最典型的例子是用RRAM交叉阵列做矩阵向量乘因为模拟乘法天然可以在阵列的电流累加中完成。这个方向非常火但很多人做实验时只测一个3x3或8x8的小阵列根本没处理过大阵列带来的精度衰减、ADC/DAC功耗和阵列非理想因素。一旦要做大规模存内计算前面说的一致性、干扰、良率问题全会叠加到计算精度上。比如同一列单元的电流累加结果会因为每个单元的阻值偏差而偏掉如果某个单元的良率不过关整列计算都会受污染。这里缺少的就不再是单纯的材料或电路而是一种“从算法到器件”的跨层级设计能力算法的容错性、阵列的统计分布、行/列的精度校准、甚至补偿网络都要一起考虑。这也是我认为新型存储器未来最值得深耕的方向。5. 实操复盘从8x8到64x64阵列我踩过的五个典型坑5.1 只看典型值不看分布上线就翻车第一次做阵列时我拿着单器件上测得的典型Set电压去设计写驱动觉得800mV一定够。结果上到16x16阵列有一排单元怎么都写不进去。把测试座拉回实验室一个个看才发现这些单元的Set电压分布在750mV到1.1V之间驱动电压余量根本没留够。从那以后我给自己定了一条规矩任何阵列设计启动前先跑一轮“器件分布摸底”至少测50颗以上画出Set/Reset电压、高阻值、低阻值的CDF曲线。分布比均值重要得多均值只能给你一个心理安慰分布才能告诉你设计余量到底够不够。5.2 忘掉寄生参数阵列仿真白做仿真初期我图省事直接在阵列单元外面加了理想电压源结果波形漂亮得不像话。一上版图后读写时序直接崩了。后来发现是位线的寄生电容太大写脉冲的上升沿被拖慢了几十纳秒导致单元实际加到的有效电压偏低。这个坑的根源在于我从cell level直接跳到array level中间漏了版图寄生提取。正确的流程应该是做一次局部版图寄生提取哪怕只提取一行一列也能把量级估个大概。我后来养成了习惯仿真模型里永远带一组“最差寄生”的RC值宁可在仿真时难看也不要到硅上难看。5.3 选通管没选对sneak path让你怀疑人生为追求面积效率我第一次做RRAM阵列时用了无选通管的纯交叉结构。8x8小阵列还好上到32x32读操作时背景漏电流比目标信号还大灵敏放大器怎么调都没用。最后只能老老实实改成1T1R面积代价看着心疼但阵列终于能读了。这里有个通用经验判断是否需要选通管不是在静态I-V曲线上看要在array read margin上算。如果一个位线上挂了32个单元目标单元的低阻态电流1uA其他31个单元即使都处于高阻态假设每个高阻态100MΩ串扰电流也有31 × Vread / 100MΩ。如果读电压是0.5V这个串扰就有155nA已经达到目标信号的15%以上灵敏放大器的判断很容易出错。所以做阵列架构选型先做最坏情况漏电估计再决定要不要上1T1R、1S1R还是自整流单元。5.4 测试模式设计晚了debug全靠猜有一次阵列里出现了间歇性写失败时好时坏没有任何物理损坏的迹象。我花了两周才定位到是某个相邻单元在读操作时产生干扰。如果一开始就设计专门的disturb测试模式比如反复读一个区域、再写另一个区域这类问题分分钟就能复现。现在我的流程是先花半天把测试pattern定下来至少包含前面提到的五类反复读写、地址翻转、保持、温度变化、电源抖动。这个习惯救了我很多次也让我真正明白测试模式不是产品验证阶段才想的事情而是和电路设计同步进行的“第一公民”。5.5 低估温度影响数据保持打折实验室里室温25度阵列测试一切都好但做高低温试验时同一个单元在85度下保持特性明显恶化有的单元隔几小时数据就丢了。后来查文献才意识到RRAM的导电细丝在高温下加速退火低阻态尤其容易往上漂。这是个物理问题不是电路问题靠外围电路只能缓解一半根本解法还是在材料和工艺层要把数据保持的温度窗口做宽。所以做新型存储阵列一定不要等到流片后才做温度测试前期的加速老化实验数据就要进入设计余量计算。我现在的习惯是器件选型阶段就先做85度、甚至105度下的保持实验拿出一张“温度-保持时间”曲线再决定阵列的刷新策略和ECC强度。6. 新型存储器阵列化真正缺的是“工程想象力”6.1 器件物理到系统架构之间的断层回过头看从单个器件到大规模阵列新型存储器缺的并不是聪明脑子而是一条把器件物理、版图设计、外围电路、测试算法、架构协同串起来的工程链路。很多团队擅长在透射电镜里拍出漂亮的细丝照片或者把单器件的耐久测到上天却在面对阵列良率时一筹莫展。原因很简单因为从单器件到阵列这中间的知识不是论文附录里会写的东西它藏在流片后的调试记录里藏在一次次信号完整的测试里藏在与代工厂的反复拉锯里。6.2 一点个人体会我个人在经历了多个阵列项目之后最大的体会是大规模阵列从来不是“放大版的小阵列”它是一类全新的工程对象。你必须在设计最开始阶段就把“分布”“寄生”“漏电路径”“冗余策略”放在和“新材料”“新机理”同样的高度去思考。好消息是很多现成的方法论可以从成熟芯片行业和相邻领域借过来——比如从毫米波天线阵列里借统计建模和耦合分析从存储行业里借ECC和冗余修复从射频设计里借寄生提取和屏蔽技巧。新型存储器还在追赶成熟存储的路上但这条路已经被拓得很宽。真正缺的是更多愿意从单个漂亮器件里抬起头来去面对阵列里那一堆乱七八糟问题的工程师和研究者。把这块短板补上新一代存储器从实验室到量产的最后一公里其实并没有那么远。