如何验证AI芯片中的片上存储器层次?

解读

AI芯片的存储子系统通常由L1 SRAM(紧耦合/共享)、L2 SRAM、全局共享SRAM、HBM控制器以及一致性管理单元组成,验证目标不仅是“能否读写”,而是要在真实AI业务流量下证明:容量、带宽、延迟、功耗、一致性、可靠性全部达标,且对数据复用、稀疏计算、算子融合等场景友好。面试官想听的是:你如何把“存储”从RTL列表拆成可量化、可收敛、可sign-off的验证任务,并能在流片前把风险降到零。

知识点

  1. 存储器验证金字塔:功能正确 → 性能达标 → 功耗/噪声 → 可靠性 → 系统级场景。
  2. AI流量三特征:脉动阵列突发(beat长度固定)、权重/特征图复用(行/列重复访问)、稀疏跳过(地址不连续)。
  3. 关键指标:每周期有效带宽利用率、bank冲突率、读写延迟直方图、功耗-带宽曲线、ECC静默错误率。
  4. 验证手段:UVM-SV/UVM-C 混合平台、形式化(Formal)地址别名与一致性检查、硬件仿真(Palladium/Zebu)跑真实算子、FPGA原型跑PyTorch/TensorFlow子图、门级SDF反标后仿真、IR-drop与EM分析。
  5. 国内流片红线:SMIC/TSMC 7 nm及以下必须提供“ECC静默错误率 <1 FIT”的实验数据,否则无法进入MPW。

答案

我会把验证拆成五步,每一步都有量化指标和闭环方法。

第一步,功能基线。
搭建可配置UVM环境,把每一级存储抽象成agent:端口协议(AXI4/CHI/自定义NOC)、ECC、redundant column、BIST、power-gating。用SVA+Formal证明:

  • 任意地址不会出现同时读写冲突;
  • ECC encode/decode在1bit flip下能正确纠正,2bit flip上报中断;
  • power-gating唤醒后,数据完整性保持。
    覆盖率目标:代码覆盖率100%,断言覆盖率>95%, Formal COI(Cone of Influence)无空集。

第二步,性能微基准。
用SystemC cycle-accurate模型做golden,在UVM里注入AI微基准(conv3×3、GEMM、transformer self-attention),收集:

  • 每周期有效带宽 = 实际transfer byte / (频率×总线宽度);
  • bank冲突率 = 冲突周期 / 总周期;
  • 读写延迟直方图(P50/P99)。
    若P99延迟超过设计预算10%,立即反标给架构,调整bank数或换XOR-hash地址映射。

第三步,系统级真实流量。
把PyTorch训练好的ResNet50/BERT子图通过“编译器→指令流→DMA描述符”转成二进制,下载到Palladium。跑1000 batch,对比RTL与golden C-model的逐层feature map,余弦相似度>0.9999。同时用VCS+SDF跑门级仿真,统计动态功耗,与PowerArtist误差<10%。

第四步,可靠性应力。
在FPGA原型上跑memtester 72小时,温度85 ℃,电压±10% margin,要求ECC静默错误率换算到硅后FIT<1。若出现单bit错误,记录地址、温度、电压,用JTAG回读SRAM内容,确认与期望一致,否则定位是cell还是外围逻辑问题。

第五步,sign-off评审。
汇总覆盖率、性能、功耗、可靠性四张表,由设计、架构、后端、量产四方评审。只有当“bank冲突率<2%、P99延迟<预算、ECC FIT<1、功耗<预算95%”四指标同时满足,才在验证报告上签字,放行tape-out。

拓展思考

  1. 如果AI芯片采用近存计算(Compute-In-Memory,CIM)宏,验证重点会从“读写”转向“MAC精度”:需用Verilog-AMS跑蒙特卡洛仿真,确认8bit乘加在3σ工艺偏差下SNR>52 dB,否则网络Top1会掉点。
  2. 国内越来越多项目用Chiplet,把HBM3/4 die与AI Core die通过3D Hybrid Bonding堆叠。此时要验证TSV冗余修复:在UVM里插入TSV开路/短路故障,看冗余fuse能否在100 ns内切换,且不影响带宽。
  3. 面对大模型稀疏化,未来存储验证需引入“地址跳变随机约束”:在UVM sequence里让地址服从幂律分布,模拟真实稀疏索引,防止传统均匀随机掩盖bank热点。