ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Mentor MBIST实战:从内存列表到ATE测试向量全链路生成

Mentor MBIST实战:从内存列表到ATE测试向量全链路生成 简介本资源是一份面向数字电路验证工程师与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从寄存器级控制到量产良率闭环你正在调试一块 SoCATE 测试发现某块 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 格式其中name、width、depth、tech是强制字段缺一不可。name必须与 RTL 中 memory instance 的 hierarchy path 完全一致例如top/u_dut/u_sram_ctrl/u_sram_0width和depth决定地址线/数据线数量tech则指定工艺节点对应的 memory compiler 类型如tsmc65lp、gf12lp。常见错误是name写成模块名而非 instance path导致后续 RTL 插入失败或tech选错使生成的 controller 无法匹配 memory 的 timing model。提示tech参数不是随意填写的字符串它必须与 Calibre DFT 库中预置的 memory tech file 名称严格一致。可通过mbist_list_techs命令查看当前 license 支持的所有 tech 名称避免因拼写差异如tsmc65lpvstsmc_65lp导致 controller 生成中断。以下是一个典型 memory listmem_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 资源便于 debugDiagnosis启用诊断功能on时生成 failure bitmap 和 address logoff仅返回 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 会根据 memory list 中每个 memory 的width/depth计算所需 address/data bus 位宽自动推导 controller 的 clock frequency基于 memory tech file 中的 tAC/tRC 参数生成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 interfacembist_wrapper.vIEEE 1500 标准 wrapper封装 memory core暴露wirwrapper instruction register、wdrwrapper 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 timededicated则相反。选择依据是 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-insertMentor_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该命令会解析top.v找到u_sram_0等 instance在其上游插入mbist_wrapper并将原 memory 的 port 重映射到 wrapper 的 internal port输出带 wrapper 的 RTLtop_mbist.v和 flat netlisttop_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/VSDBMentor_mbist 本身不生成最终 ATE pattern而是通过mbist_generate_patterns命令调用 Tessent ATPG 引擎输出 industry-standard 格式。关键参数包括-format指定输出格式stilStandard Test Interface Language主流 ATE 支持、vsdbVerigy Scan DatabaseKeysight 平台专用、wglWaveform 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.stilSTIL 格式 pattern含 test header、pattern body、timing sectionsram_mbist_stil.vsdbVSDB 格式用于 Keysight 9070 等平台sram_mbist_stil.summary覆盖率报告含Stuck-at、Transition、Address 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 insertionMBIST controller 本身必须支持 scan 测试否则无法在 ATE 上初始化和控制。Mentor_mbist 默认在 controller RTL 中插入 scan chain但需确保 DFT Compiler 的 scan configuration 与之兼容。关键操作是在 DFT Compiler 中将 MBIST controller 的 top module 添加到 scan chainadd_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运行compile_scan生成带 scan 的 netlist使用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 causeMentor_mbist 生成的 diagnosis report.diag文件包含 failure bitmap 和 address log这是定位物理缺陷的起点。诊断分两级Level 1memory instance 级定位解析.diag文件提取 fail address 和 bit mask。例如FAIL at addr0x1A2, bits0x00000003 (bit 0 and bit 1 stuck low)结合 memory list确认该 address 属于u_sram_064-bit width则故障在第 0x1A2 行的 bit 0 和 bit 1。此时可判断是 memory array 的局部缺陷而非 controller 逻辑错误。Level 2layout 级 correlation将 fail address 映射到 GDSII 坐标用 Calibre RVE 打开u_sram_0的 layout根据 memory compiler 文档计算0x1A2行对应的 wordline metal layer 位置通常为 M2 或 M3检查该位置附近是否有 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 的 testbenchfsdbwaveform可在 Verdi 或 SimVision 中打开观察 controller state machinestate IDLE/RUNNING/DONE、WDR 读回值、memory data bus 波形。关键 debug 点若state卡在IDLE检查 WIR 写入是否成功WIR[0] 是否为 1若state进入RUNNING但WDR[0]始终为 0检查 memory 的dout是否被其他 logic 驱动bus contention若WDR返回非零值但 ATE fail对比仿真与 ATE 的 clock edge alignmentATE 通常采样 clock rising edge仿真需 match。通过 waveform 对比可 100% 复现 ATE fail 场景避免盲目改版。本文还有配套的精品资源点击获取
返回列表