Mentor MBIST实战:从内存列表到ATE测试向量全链路生成
2026/9/23 13:59:23 网站建设 项目流程

简介:本资源是一份面向数字电路验证工程师与IC测试初学者的Mentor MBIST工具系统性学习总结,聚焦于内置自测试(BIST)在嵌入式存储器(如SRAM、ROM)故障检测中的工程实践。内容覆盖MBIST添加必要性、存储器类型特性、典型结构(TPG/CUT/RA/DM)、适用场景、核心算法(LFSR/PRNG)、Mbistarchitect脚本生成方法、ATPG语法要点、BIST变量机制及ROM/SRAM库文件格式等12个关键模块,并附有makefile管理的完整脚本实现示例。资源为单个319KB的Word文档(.docx),结构清晰、目录完备,含详细原理说明与实操导向注解,便于快速查阅与复用。目前已有1435人学习下载,适合需深入理解MBIST集成流程、诊断逻辑及工具链使用的中初级芯片验证人员。

1. 为什么工程师在数字芯片测试中绕不开 Mentor_mbist:从寄存器级控制到量产良率闭环

你正在调试一块 SoC,ATE 测试发现某块 SRAM 宏单元偶发读写错误,但仿真和静态时序都通过了;或者你刚完成 RTL 综合,DFT 工程师突然问:“MBIST 的 controller 插入点定了吗?scan chain 和 MBIST 的 clock domain 怎么隔离?”——这类问题不是“要不要做 MBIST”,而是“怎么用 Mentor Graphics 的 mbist 工具链把 BIST 控制逻辑、测试向量、诊断能力真正落地到物理实现里”。Mentor_mbist 不是独立工具,它是 Calibre® 平台中与 DFT Compiler、Tessent™ 紧密协同的 MBIST 架构生成与验证子系统,核心价值在于把抽象的 BIST 意图(如“对 4×32KB SRAM 实现 March C+ 故障覆盖”)自动映射为可综合、可布线、可烧录、可复位的硬件模块,并输出符合 IEEE 1500 标准的 Wrapper 接口。它面向的是 ASIC/FPGA 前端验证工程师、DFT 工程师和测试开发工程师,尤其当项目进入 tape-out 前 3 个月,MBIST 的插入质量直接决定 ATE 测试时间、良率分析粒度和芯片失效定位精度。本文不讲概念定义,只拆解:如何用 Mentor_mbist 在真实项目中完成从 memory list 定义、test plan 编写、controller 生成、RTL 集成到 ATPG 向量生成的全链路实操。

2. 用 Mentor_mbist 定义 MBIST 架构:从 memory list 到 test plan 的最小可执行配置

MBIST 架构设计不是写文档,而是用 Mentor_mbist 的命令行或 Tcl 脚本驱动 Calibre DFT 工具链生成可综合的 RTL 和约束。整个流程始于一份结构化的 memory list,终于一份可被 ATPG 工具消费的 test plan 文件。这一步的成败,决定了后续所有步骤是否能自动推进。

2.1 memory list 的 4 个必填字段与物理约束映射

Mentor_mbist 要求 memory list 必须是 CSV 或 Tcl 格式,其中namewidthdepthtech是强制字段,缺一不可。name必须与 RTL 中 memory instance 的 hierarchy path 完全一致(例如top/u_dut/u_sram_ctrl/u_sram_0),widthdepth决定地址线/数据线数量,tech则指定工艺节点对应的 memory compiler 类型(如tsmc65lpgf12lp)。常见错误是name写成模块名而非 instance path,导致后续 RTL 插入失败;或tech选错,使生成的 controller 无法匹配 memory 的 timing model。

提示:tech参数不是随意填写的字符串,它必须与 Calibre DFT 库中预置的 memory tech file 名称严格一致。可通过mbist_list_techs命令查看当前 license 支持的所有 tech 名称,避免因拼写差异(如tsmc65lpvstsmc_65lp)导致 controller 生成中断。

以下是一个典型 memory list(mem_list.tcl)内容:

# mem_list.tcl set_mem_list { {name top/u_dut/u_sram_ctrl/u_sram_0 width 64 depth 1024 tech tsmc65lp} {name top/u_dut/u_sram_ctrl/u_sram_1 width 32 depth 2048 tech tsmc65lp} {name top/u_dut/u_sram_ctrl/u_sram_2 width 128 depth 512 tech tsmc65lp} }

该文件需在 mbist session 中通过read_mem_list mem_list.tcl加载。加载后,Mentor_mbist 会自动解析每个 memory 的 port 数量、clock/reset 引脚名,并建立内部 memory database。

2.2 test plan 的 3 类关键参数:算法、模式与诊断粒度

test plan 是 MBIST 的“作战指令”,由mbist_create_testplan命令生成,其核心参数分为三类:

  • Algorithm:指定故障检测算法,march_c_plus是最常用选项(覆盖 stuck-at、transition、coupling 故障),galpat用于高可靠性场景,checkerboard适合大容量 memory 的快速筛查;
  • Mode:控制测试运行方式,parallel允许多个 memory 同时测试(节省 ATE 时间),serial保证单 memory 独占 controller 资源(便于 debug);
  • Diagnosis:启用诊断功能,on时生成 failure bitmap 和 address log,off仅返回 pass/fail 结果。

实际项目中,一个典型的 test plan 配置如下:

# test_plan.tcl mbist_create_testplan -name "tp_sram_all" \ -algorithm march_c_plus \ -mode parallel \ -diagnosis on \ -mem_list mem_list.tcl \ -output_dir ./mbist_output

执行该命令后,Mentor_mbist 会:

  1. 根据 memory list 中每个 memory 的width/depth计算所需 address/data bus 位宽;
  2. 自动推导 controller 的 clock frequency(基于 memory tech file 中的 tAC/tRC 参数);
  3. 生成tp_sram_all.mbist文件,该文件是后续 RTL 插入和 ATPG 的输入源。

注意:-mode parallel并非无条件启用。若两个 memory 共享同一 clock domain 且 controller 资源不足(如 address decoder size 不足),Mentor_mbist 会自动降级为 serial mode 并在 log 中提示Parallel execution disabled due to resource conflict。此时需手动在 test plan 中为冲突 memory 指定group_id,强制分组调度。

2.3 controller 生成与 wrapper 接口规范

mbist_generate_controller是架构落地的关键命令,它将 test plan 编译为可综合 RTL。输出包含三部分:

  • mbist_controller.v:顶层 controller 模块,含 clock/reset/domain interface;
  • mbist_wrapper.v:IEEE 1500 标准 wrapper,封装 memory core,暴露wir(wrapper instruction register)、wdr(wrapper data register)等标准端口;
  • mbist_constraints.sdc:针对 controller 的 timing constraint,包括 clock uncertainty、input delay、output delay。

控制器类型由-type参数指定:auto(默认,根据 memory 数量和 width 自适应)、shared(多个 memory 复用一个 controller)、dedicated(每个 memory 独立 controller)。在 10+ memory 的 SoC 中,shared可减少面积 30%,但会增加 test time;dedicated则相反。选择依据是 ATE 测试成本与芯片面积的 trade-off。

生成命令示例:

mbist_generate_controller \ -testplan tp_sram_all.mbist \ -type shared \ -output_dir ./mbist_output \ -top_module top

该命令执行后,./mbist_output目录下将生成上述三类文件。其中mbist_wrapper.v的接口完全遵循 IEEE 1500,例如:

module mbist_wrapper ( input logic wir_clk, input logic wir_rst_n, input logic [31:0] wir_wir, output logic [31:0] wir_wdr, // ... other IEEE 1500 ports );

这个 wrapper 就是后续 RTL 集成的锚点,也是 ATPG 工具识别 BIST 接口的唯一依据。

3. Mentor_mbist 与 RTL 集成及 ATPG 向量生成:从 Verilog 插入到 ATE 可执行文件

生成 controller 和 wrapper 只是开始,真正的工程挑战在于将其无缝嵌入现有 RTL 流程,并产出 ATE 设备能直接加载的二进制测试向量。Mentor_mbist 通过与 Synopsys DFT Compiler 和 Tessent Shell 的深度集成,实现了从 RTL 到 pattern 的端到端自动化。

3.1 RTL 插入的两种模式:manual edit 与 auto-insert

Mentor_mbist 支持两种 RTL 集成方式,选择取决于项目阶段和团队习惯:

  • Manual edit:适用于早期原型验证。工程师手动将mbist_wrapper.v实例化到 memory instance 上游,替换原 memory 的 port connection。例如,原 memory 实例:

    sram_64x1024 u_sram_0 ( .clk(clk), .rst_n(rst_n), .addr(addr), .din(din), .we(we), .dout(dout) );

    替换为 wrapper 实例化:

    mbist_wrapper u_sram_0_wrapper ( .wir_clk(clk), .wir_rst_n(rst_n), .wir_wir(wir_wir), .wir_wdr(wir_wdr), // ... 连接 wrapper 与原 memory 的内部信号 );

    此方式可控性强,但易出错,需严格遵循 wrapper 的 port mapping 文档。

  • Auto-insert:推荐用于量产项目。使用mbist_insert_wrapper命令,输入 RTL 文件和 memory list,工具自动定位 memory instance 并插入 wrapper,同时修改 netlist connectivity。命令如下:

    mbist_insert_wrapper \ -rtl_file ./rtl/top.v \ -mem_list mem_list.tcl \ -wrapper_file ./mbist_output/mbist_wrapper.v \ -output_rtl ./rtl/top_mbist.v \ -output_netlist ./netlist/top_mbist.v

    该命令会:

    1. 解析top.v,找到u_sram_0等 instance;
    2. 在其上游插入mbist_wrapper,并将原 memory 的 port 重映射到 wrapper 的 internal port;
    3. 输出带 wrapper 的 RTL(top_mbist.v)和 flat netlist(top_mbist.v),后者供后续 synthesis 使用。

提示:auto-insert 成功的前提是 memory list 中的name与 RTL 中 instance path 完全一致,且 RTL 已完成 hierarchy flatten。若 RTL 使用 generate block 或 parameterized instance,需先运行synth_design -flatten_hierarchy,否则工具无法定位 instance。

3.2 ATPG 向量生成:从 mbist_pattern.tcl 到 STIL/VSDB

Mentor_mbist 本身不生成最终 ATE pattern,而是通过mbist_generate_patterns命令调用 Tessent ATPG 引擎,输出 industry-standard 格式。关键参数包括:

  • -format:指定输出格式,stil(Standard Test Interface Language,主流 ATE 支持)、vsdb(Verigy Scan Database,Keysight 平台专用)、wgl(Waveform Generation Language);
  • -speed:设置测试频率,单位 MHz,必须 ≤ memory tech file 中定义的最大 operating frequency;
  • -voltage:设置测试电压,影响 fault coverage 计算。

典型命令:

mbist_generate_patterns \ -testplan tp_sram_all.mbist \ -format stil \ -speed 100 \ -voltage 1.2 \ -output_dir ./patterns \ -pattern_name sram_mbist_stil

执行后,./patterns目录生成:

  • sram_mbist_stil.stil:STIL 格式 pattern,含 test header、pattern body、timing section;
  • sram_mbist_stil.vsdb:VSDB 格式,用于 Keysight 9070 等平台;
  • sram_mbist_stil.summary:覆盖率报告,含Stuck-atTransitionAddress Decoder三类 fault 的 detection rate。

STIL 文件结构示例(节选):

// sram_mbist_stil.stil TestSession "MBIST_SRAM_ALL" { Timing "mbist_timing" { Waveform "mbist_wf" { Period 10.0ns; Clock "clk" @0.0ns; Reset "rst_n" @2.0ns; } } Pattern "p_sram_0_march_c_plus" { // ... thousands of vector lines } }

该文件可直接加载到 Advantest V93000 或 Teradyne UltraFLEX ATE 中执行。

3.3 与 scan chain 的协同:BIST controller 的 scan insertion

MBIST controller 本身必须支持 scan 测试,否则无法在 ATE 上初始化和控制。Mentor_mbist 默认在 controller RTL 中插入 scan chain,但需确保 DFT Compiler 的 scan configuration 与之兼容。关键操作是:

  1. 在 DFT Compiler 中,将 MBIST controller 的 top module 添加到 scan chain:

    add_scan_chain -name mbist_chain -scan_cell "sdff" -scan_in "scan_in" -scan_out "scan_out" add_to_scan_chain -chain mbist_chain -module mbist_controller
  2. 运行compile_scan,生成带 scan 的 netlist;

  3. 使用mbist_verify_scan命令验证 controller 的 scan path 是否完整:

    mbist_verify_scan \ -netlist ./netlist/top_mbist_scan.v \ -controller_name mbist_controller \ -report_file ./reports/scan_verification.rpt

    报告中若出现Scan path broken at port wir_wir[31],说明 controller 的 WIR 寄存器未正确连接 scan chain,需检查 DFT Compiler 的add_scan_cell是否覆盖了 controller 内部所有 flops。

4. Mentor_mbist 的 3 个必调参数与 2 类典型故障诊断方法

参数调优和故障定位是 Mentor_mbist 工程落地的核心能力。很多项目卡在“生成了 pattern 但 ATE fail”,根源常在于参数未适配物理实现,或诊断信息未被有效利用。以下是最常调整的三个参数和两种实战诊断路径。

4.1 三个影响覆盖率与测试时间的关键参数

参数默认值调整场景效果说明
-max_retries3ATE 测试中 memory 出现 intermittent fail增加重试次数可过滤噪声,但延长 test time;设为 0 则禁用重试,fail 立即上报
-address_offset0memory 地址空间被 firmware 占用部分区域设置 offset(如0x1000)使 MBIST 只测试有效地址段,避免误报
-data_seed0多次运行 pattern 得到不同 fail address修改 seed 值(如0xdeadbeef)可验证 fail 是否 reproducible,排除 PRBS 伪随机性干扰

调整示例(在 test plan 中):

mbist_create_testplan -name "tp_sram_debug" \ -algorithm march_c_plus \ -max_retries 5 \ -address_offset 0x1000 \ -data_seed 0xdeadbeef \ -output_dir ./mbist_debug

提示:-data_seed不影响 fault coverage,只改变测试数据 pattern。若同一 fail 在不同 seed 下均出现,则基本确认为硬故障(如 bridging fault);若仅在特定 seed 下出现,则可能是 timing margin 不足或电源噪声导致。

4.2 基于 failure bitmap 的两级诊断:从 memory instance 到 transistor-level root cause

Mentor_mbist 生成的 diagnosis report(.diag文件)包含 failure bitmap 和 address log,这是定位物理缺陷的起点。诊断分两级:

  • Level 1:memory instance 级定位
    解析.diag文件,提取 fail address 和 bit mask。例如:

    FAIL at addr=0x1A2, bits=0x00000003 (bit 0 and bit 1 stuck low)

    结合 memory list,确认该 address 属于u_sram_0(64-bit width),则故障在第 0x1A2 行的 bit 0 和 bit 1。此时可判断是 memory array 的局部缺陷,而非 controller 逻辑错误。

  • Level 2:layout 级 correlation
    将 fail address 映射到 GDSII 坐标:

    1. 用 Calibre RVE 打开u_sram_0的 layout;
    2. 根据 memory compiler 文档,计算0x1A2行对应的 wordline metal layer 位置(通常为 M2 或 M3);
    3. 检查该位置附近是否有 design rule violation(如 min spacing violation)、antenna effect 或 dummy fill density 不足。

    实际案例中,70% 的bit 0 and bit 1 stuck low故障最终定位为 wordline driver 的 poly gate 与 diffusion 间距过小,在 fab process 中引发 leakage。

4.3 用 mbist_simulate 验证 controller 行为:本地 waveform debug

当 ATE fail 但仿真 pass 时,需在 RTL level 重现问题。Mentor_mbist 提供mbist_simulate命令,可生成 testbench 并启动仿真:

mbist_simulate \ -testplan tp_sram_all.mbist \ -rtl_dir ./rtl \ -tb_dir ./tb \ -simulator vcs \ -waveform fsdb

该命令生成:

  • mbist_tb.v:含 clock/reset generation、WIR/WDR 初始化、pattern playback 的 testbench;
  • fsdbwaveform:可在 Verdi 或 SimVision 中打开,观察 controller state machine(state == IDLE/RUNNING/DONE)、WDR 读回值、memory data bus 波形。

关键 debug 点:

  • state卡在IDLE,检查 WIR 写入是否成功(WIR[0] 是否为 1);
  • state进入RUNNINGWDR[0]始终为 0,检查 memory 的dout是否被其他 logic 驱动(bus contention);
  • WDR返回非零值但 ATE fail,对比仿真与 ATE 的 clock edge alignment(ATE 通常采样 clock rising edge,仿真需 match)。

通过 waveform 对比,可 100% 复现 ATE fail 场景,避免盲目改版。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询