如何验证ReRAM存储阵列的读写操作?

解读

面试官抛出该问题,核心想考察三点:

  1. 是否理解ReRAM(阻变存储器)“写→形成导电细丝→读→复位”这一物理机制带来的特殊行为;
  2. 能否把“特殊行为”翻译成可量化的验证功能点,并映射到SystemVerilog/UVM的测试结构;
  3. 是否具备“质量守门员”意识:除了功能,还要覆盖可靠性、良率、寿命、性能、功耗等多维度,最终给出可sign-off的量化结论。

国内一线IC公司(华为海思、兆易、长鑫、长江存储、平头哥、寒武纪等)的验证团队普遍把ReRAM阵列验证拆成“单元级→阵列级→系统级”三档,每档都要回片前闭环。回答时必须体现出“三档闭环”思维,否则会被认为只做过SRAM/DRAM的“移植式验证”,深度不够。

知识点

  1. ReRAM物理特性

    • 写操作:SET(低阻态LRS)、RESET(高阻态HRS)需不同极性/脉宽;存在Forming一次性激活;有写次数上限(~1M)及数据保持力(~10年@85℃)。
    • 读操作:非破坏性读,但读电压窗口窄(0.2~0.4 V),过读会导致误写(read disturb)。
    • 阵列结构:1T1R、1S1R、Cross-point;存在sneak path电流,需SL/BL偏置方案及IR-Drop补偿。
  2. 验证维度

    • 功能:写验证、读验证、写后读、写失败回退、写前擦除、坏块替换。
    • 时序:写脉冲宽度±5 ns、上升/下降沿<2 ns;读访问时间tRCD/tAA;阵列唤醒时间。
    • 模拟-混合信号:Ron/Roff分布(3σ)、读电流灵敏放大器offset、位线漏电<1 nA。
    • 可靠性:Endurance、Retention、Read-Disturb、温度循环-40~125℃。
    • 良率/修复:冗余列、ECC(BCH/LDPC)、内建自测试BIST、自修复ISR。
    • 性能-功耗:写能量pJ/bit、读电流mA、待机功耗μW;并需与Spec对比给出margin。
  3. UVM验证结构

    • 专用ReRAM VIP:产生BL/SL/WL模拟级真实波形,支持分布模型(Ron均值3 kΩ,σ 300 Ω)。
    • 参考模型:行为级RRAM_model,用SystemVerilog DPI-C耦合SPICE级分布,实现cycle-accurate。
    • Scoreboard:双向对比RTL与参考模型的阻态、电流、功耗;自动计算BER、SNM。
    • FC:covergroup写脉宽、读电压、温度、地址跳变、endurance计数;要求覆盖100% cross。
    • 断言:写脉冲宽度范围、读窗口电压、BL预充电完成、ECC纠正上限。
  4. 形式验证与加速

    • Formal:用Synopsys VC Formal证明“任何地址在写后读必返回写入值”,穷举sneak path。
    • FPGA原型:将阵列控制器+ECC+DMA放进Xilinx VU19P,跑Linux文件系统级压力;同步dump功耗波形。
    • 硬件加速器(Zebu、Palladium):跑>100M cycle的Retention+Disturb混合场景,回注波形到UVM。
  5. Sign-off标准(国内主流)

    • 功能bug清零,FC 100%,断言无fire;
    • 可靠性闭环:Endurance 2×Spec,Retention 1000 h@125℃等效,Read-Disturb 1×10^10次无fail;
    • 性能功耗margin>10%;
    • 良率模型预测>99.5%,冗余列修复后bitmap零缺陷。

答案

“我会把ReRAM阵列读写验证拆成五步闭环,确保回片前风险清零。

第一步,拆解特殊行为并量化功能点。写侧覆盖Forming、SET、RESET三种阻态切换,脉宽范围250 ns,电压±0.1 V精度;读侧覆盖0.20.4 V窗口,电流判别阈值±5 μA。同时定义误写概率<1 ppm,读错误率<1e-12。

第二步,搭建混合信号UVM环境。VIP用Wreal模型驱动BL/SL,内部调用DPI-C耦合的SPICE分布,实时输出Ron/Roff;参考模型在同一仿真域更新阻态,scoreboard对比RTL的sense amp输出。FC对写脉宽、地址gray跳变、温度-电压交叉全覆盖;断言检查sneak path电流<500 nA。

第三步,可靠性专项。用UVM序列循环跑Endurance 2×10^6次,每1×10^4次回读并做Retention Bake(125℃/0.5 h等效),同步统计Ron/Roff漂移。Read-Disturb采用背靠背读,地址滑动hammer,目标1×10^10次。所有fail自动dump阻态分布,定位到具体1T1R单元。

第四步,形式+加速兜底。VC Formal证明‘写→读一致性’与‘sneak path无旁路’;FPGA原型跑Linux FIO压力,对比功耗仪实测与PowerArtist估算,误差<5%。Palladium跑100M cycle的随机扰动,回注波形到UVM,确保无新corner。

第五步,量化sign-off。汇总功能、可靠、性能、良率四张表,给出margin:写能量pJ/bit低于Spec 15%,读电流margin 12%,ECC纠正后误码率零,预测良率99.7%。评审通过后归档,版本锁定。”

拓展思考

  1. 若阵列采用2D 1S1R无Selector结构,sneak path电流增大一个量级,验证如何收紧?
    提示:需在VIP里引入非线性selector IV曲线,scoreboard增加“半选漏电积分”检查,FC增加半选/全选交叉覆盖,formal约束增加“半选单元阻态不变”断言。

  2. 国内ReRAM产品常做“存内计算”MAC阵列,验证如何证明“乘加结果误差<1%”?
    提示:参考模型需把阻态映射为权重,阵列电流向量映射为输入,用SystemVerilog实数向量累加;scoreboard对比RTL输出的ADC编码与浮点黄金结果,统计INL/DNL。

  3. 回片后发现Retention早期失效,如何复现并定位到工艺缺陷?
    提示:在ATE加高温Bake同时,通过MBIST循环扫描bitmap;把失效地址反标到GDS,用Calibre PERC做IR-Drop+热耦合分析,验证团队需提供“失效-阻态漂移”关联脚本,闭环到工艺。