5. TCAM学习笔记

5. TCAM学习笔记

L5:TestMax —— 把 SMS「插进」SoC RTL

L1~L4 学的是:macro 是什么、SMS 子系统怎么工作、Server 怎么对外。但真实芯片里,功能 RTL 最初只有一颗裸 macrocore_rtl/core.v里直接例化 TCAM),并没有 Server/Processor/Wrapper。

TestMax干的事就是:读功能 RTL +.masis_c自动规划、生成、插入、连接整套 SMS,并做连通性检查和 BIST 仿真验证。

本 case 入口脚本:run_testmax.shscripts/testmax_sms.tcl,在WORK/目录下跑testmax_shell

本篇(L5)目标:搞懂 TestMax MBIST 流程里每条命令干什么、和 L3 Integrator 的关系、本 case 输入输出是什么、以及 validate 报告怎么读。


0. L5 在全局地图里的位置

L1 .masis_c(接口合同) │ ▼ L2 Macro RTL(黑盒或全模型) │ ▼ L3 Processor + Wrapper ─┐ L4 Server(IEEE1500) ─┤ SMS 子系统(Integrator / core_prj.ish; │ generate_dft 内部也会调同一套 Compiler) │ ▼ L5 TestMax:plan → generate → connect → validate ←── 本篇(焊进 SoC RTL) │ ▼ 插 SMS 后的 core.v + SMS_constraints → 综合/STA/量产 │ ▼ L6 Verifier(validate_dft 里也会调) / L7 YA pattern

一句话:L3+L4 是 SMS 子系统本身;L5 是把它插进 SoC 并做连通/BIST 验证。


1. 本 case 输入 vs 输出

输入(插 SMS 前)

core_rtl/core.v——极简功能顶层,只有时钟 + 1 颗 macro:

module core ( clk1001 ); input clk1001; sadtcs0g4l1p128x68... u_tcam128x68_inst1 ( .CLK(clk1001), ... ); endmodule

另需:

输入路径作用
.masis_cmasis/sadtcs...masis_cTestMax 识别 memory 类型、BIST 口
RTL filelistscripts/sms_rtl.f目前只含core_rtl/core.v
仿真模型sms_sim_model/Verifier 仿真用
标准单元库$ILANE_LIB_PATHNDM lib

输出(connect_dft 后)

输出路径内容
插 SMS 后的 RTLWORK/output/Verilog/core.v顶层冒出 IEEE1500 + SMART BIST pin
StubWORK/output/stub/综合用黑盒 stub
SMS 约束WORK/SMS_constraints/write_dft_constraint写出
报告WORK/tmm_wdir/report/plan / connectivity / memory 等
Verifier 仿真WORK/verifier_project_simulation/verify_mbist_system产物

插完后的顶层端口(节选)——这就是 L4 Server 要对外的口:

clk1001 vl_srv_WRCK, vl_srv_WSI, vl_srv_WSO, vl_srv_SelectWIR, ... vl_srv_smart_bist_srv, vl_srv_fast_mode_srv, ... vl_srv_ready_sms_srv, vl_srv_fail_sms_srv, ... vl_sms_dm0, vl_sms_dm1, vl_sms_dm2

内部层次:core_srv_1core_proc_1core_wrap_...→ macro 黑盒。


2. TestMax 流程(本 casetestmax_sms.tcl

Phase 1:读设计

analyze -format sverilog -vcs "-f ../scripts/sms_rtl.f" elaborate core set_top_module core setup_rtl_flow create_clock -name clkgrp_user_1001 -period 1 { clk1001 } # 1ns = 1GHz

macro 此时是unresolved reference(黑盒),TestMax 仍可通过.masis_c识别 memory 实例。

Phase 2:DFT 配置

set_dft_configuration -mbist enable

set_dft_access_element——把 L3core_prj.ish里的参数告诉 TestMax,保证生成的 SMS 与手工一致:

type本 case 参数
sub_serversrv_smart_bist_en true,enable_hard_repair true
cam_processorsmart_bist_en true,talgo_prog_enable true,treg_algo 1
cam_wrapperadd_user_pins_to_builder_list false

set_mbist_configuration——绑定 SMS 工程资源:

set_mbist_configuration -project_name core_prj set_mbist_configuration -masis_file "../masis" set_mbist_configuration -simulation_models "../sms_sim_model" set_mbist_configuration -allow_module_override on set_mbist_configuration -setup_options { extract_rcl.limited_test_pin_propagation true extract_rcl.connect_proc_clocks 1 extract_rcl.connect_proc_resets 1 extract_rcl.connect_proc_dms 1 }

要点:

  • -masis_file:L1 的.masis_c在此被 TestMax 消费
  • connect_proc_clocks:把 Processor 的clk_sms接到 macro 的CLKclk1001
  • limited_test_pin_propagation:避免 memory 功能 pin 全部 propagate 到 chip top

Phase 3:SMS 三步走

步骤命令内部工具干什么
① 规划plan_dftSTAR Planner读 memory、分组、时钟检查;出dft_memory_report.rpt
② 生成generate_dftIntegrator + Builder生成 Server/Proc/Wrapper RTL(≈ L3core_prj.ish
③ 连接connect_dftrtl_modifier把 SMS 层次插进core.v,连线到 macro BIST 口

本 caseplan_dft结果:1 个 memory 实例core.u_tcam128x68_inst1,时钟clk1001@ 1000 MHz。

Phase 4:约束 + 验证

write_dft_constraint -sms -sms_outdir SMS_constraints validate_dft -check connectivity validate_dft -check verify_mbist_system
检查干什么
connectivity静态分析 Processor→Wrapper→macro 路径是否可达
verify_mbist_systemSTAR Verifier跑 BIST 仿真(bist_allrepair_verification等)

3. 本 case 实际跑通结果

plan_dft/generate_dft/connect_dft

成功(STAR Planner / Integrator / Builder completed successfully)。

validate_dft -check connectivity

统计数值
Total messages1884
Error69
Info(路径 OK)1815

69 个 Error 的原因:macro 是黑盒,RTL 里看不到TWETVBIBISTEQ[67:0]等内部 pin,工具报no design object found。这是blackbox 预期行为,不是 SMS 连错。

真正重要的 Info 路径都 OK,例如:

clk1001 → vl_sms_core_proc_1_sms_1_stp/clk_sms Processor/biste → Wrapper/biste Processor/WSO → Server/sms_wso

validate_dft -check verify_mbist_system

全部PASSED

<signature_reg_check> TEST FLOW PASSED <sms_status> TEST FLOW PASSED <bist_all> TEST FLOW PASSED <bist_all_fail> TEST FLOW PASSED <repair_verification> TEST FLOW PASSED

说明:插 SMS 后的设计能跑通 VLCAM BIST 和 repair 验证(L6 Verifier 细讲)。


4. L3 Integrator vs L5 TestMax

L3(core_prj.ishL5(testmax_sms.tcl
工具Embed-It IntegratorTestMax Shell
输入手工指定组件/参数功能 RTL +.masis_c
输出core_prj/compout/views/WORK/output/Verilog/core.v
连线不连 SoCconnect_dft 自动连线
验证QA sim argsvalidate_dft
关系可单独跑;TestMaxgenerate_dft会调同一套 Compiler自动化端到端

本 case 两者参数对齐:srv_smart_bist_ensmart_bist_entalgo_prog_enable等完全一致。


5. 关键命令速查

命令一句话
set_dft_configuration -mbist enable打开 MBIST client
set_dft_access_element指定 SMS 组件类型和编译参数
set_mbist_configuration.masis_c、仿真模型、Integrator 选项
plan_dft规划 memory 分组和时钟
generate_dft生成 SMS IP(Server/Proc/Wrapper)
connect_dft插入并连接 RTL
write_dft_constraint -sms写 SMS 时序/约束
validate_dft -check connectivity静态连通性
validate_dft -check verify_mbist_systemVerifier BIST 系统仿真

Man page:man -M /global/apps/tmm_2025.06/doc/TESTMAX/man <command>


6. 和 L4/L6/L7 的衔接

L5 connect_dft 后的顶层 IEEE1500 pin ↓ L4 Server 行为(WRCK 移位 BIST_RUN) ↓ L5 validate_dft → 调 L6 Verifier 仿真 ↓ L7 YA 根据 SMS_constraints / UDS 生成 ATE pattern

量产时:TestMax 插完 SMS → 约束给 DC/PT → YA 出 pattern → ATE 从vl_srv_*pin 进 Server 跑 BIST。


7. L5 小结

TestMax = 读裸 macro RTL +.masis_c,自动 plan/generate/connect 整套 SMS 到 SoC,写出带 IEEE1500 端口的core.v,并用 Verifier 验证 BIST 能跑通。本 case 连通性 69 个 error 是黑盒 macro 所致,系统级 BIST 仿真全部 PASS。


8. 自测题

  1. 本 case TestMax 入口脚本?
  2. 插 SMS 前后的core.v顶层端口差多少?
  3. set_mbist_configuration -masis_file指向哪?
  4. plan_dft/generate_dft/connect_dft各调什么工具?
  5. connect_proc_clocks解决什么问题?
  6. 本 case 有几个 memory 实例?
  7. connectivity 69 个 Error 的主要原因?
  8. verify_mbist_system测了哪些 flow?
  9. L3 和 L5 生成的 SMS 参数怎么对齐?
  10. 插 SMS 后的 RTL 输出路径?
答案
  1. run_testmax.shscripts/testmax_sms.tcl
  2. 插前只有clk1001;插后增加~20 个vl_srv_*/vl_sms_dm*DFT pin。
  3. ../masis(含本 macro 的.masis_c)。
  4. Planner /Integrator+Builder/rtl_modifier
  5. 把 Processorclk_sms接到 macroCLK
  6. 1 个u_tcam128x68_inst1)。
  7. macro黑盒看不到TWEBISTE等 BIST pin。
  8. signature_reg_checksms_statusbist_allbist_all_failrepair_verification
  9. 通过set_dft_access_element设与core_prj.ish相同参数。
  10. WORK/output/Verilog/core.v

速查(L5)

  • 脚本:run_testmax.sh·scripts/testmax_sms.tcl
  • 功能 RTL:core_rtl/core.v
  • 插 SMS 后 RTL:WORK/output/Verilog/core.v
  • 报告:WORK/tmm_wdir/report/plan_dft/·validate_dft_connectivity/
  • 约束:WORK/SMS_constraints/
  • Man page:DOC/L5_TestMax/man_pages/*.2
  • 本 case:1×128×68 XYCAM;connectivity 69 err(blackbox);verify_mbist_system 全 PASS

下一篇:L6 — Verifier 仿真验证(fault injection、+chk_bist)