从 Scan Chain 结构到 ATPG 流程DFT工程师必备技能图解#DFT #Tessent #扫描链 #ATPG #时钟控制一、Scan Chain 扫描链基础核心思想测试模式下所有触发器FF串联成一条链通过串行移位注入测试向量、读出响应从而检测内部故障。正常模式下 FF 捕获功能数据scan_en1 时切换到 SI扫描输入。1.1 Scan CellMUX-D 结构原理每个 Scan Cell 由一个 D 触发器和一个 MUX 组成scan_en 0 → MUX 选择 D功能数据输入scan_en 1 → MUX 选择 SI扫描链前级输出时钟上升沿 → D-FF 锁存当前 MUX 输出Q 同时作为功能输出 SO扫描链后级输入1.2 report_scan_cells 输出解读在 Tessent Shell 中执行 report_scan_cells主要关注以下字段chaintypegateshift_clkcell_namechain1FF-LE (前沿)70/clk/top/u30/u13chain1FF-LE (前沿)6/clk/top/u30/u12chain1FF-LE (前沿)9/clk/top/u30/u11 gate 字段代表等效门数inv 字段指示 shift_clk 是否取反T取反/F不取反。同链内所有 FF 的 shift_clk 极性须一致否则 Tessent 会自动插入 LockUp Latch。二、LockUp Latch — 跨时钟域的安全阀当 Scan Chain 跨越两个不同时钟域如 CLK_A 上升沿 → CLK_B 下降沿时相邻 FF 之间可能出现建立/保持时间违例导致 Scan 数据错误传播。LockUp Latch高电平透明低电平锁存插入两段链之间保证数据在 Capture 时钟到来前已稳定。2.1 三种 Scan Cell 类型类型结构特点典型场景MASTER主 FF连接功能逻辑普通 D-FFSHADOW影子 FF存储前一个值需要并行测试时COPY复制 FF与主 FF 数据同步时序敏感路径 工程实践LockUp Latch 对功能路径无影响功能模式不在扫描链中会增加芯片面积功耗开销是 DFT 工具自动插入的标准操作。三、故障模型Fault Model深度对比Tessent 支持两种主要故障模型覆盖不同类型的制造缺陷故障模型触发条件检测缺陷类型时钟需求向量数量Stuck-AtSA节点永久固定为 0/1桥接、开路等制造缺陷1个时钟捕获少TransitionTF节点跳变速度过慢延迟缺陷、时序违例2个时钟LaunchCapture多3.1 Launch-on-ShiftLoS时序最后一次 Scan Shift 时钟沿同时作为 Launch 沿下一个 Capture 时钟沿捕获测试响应① Shift PhaseN 个时钟循环移入测试向量② Last Shift Launch最后一次 Shift同时触发被测路径跳变③ Capture1 个时钟后捕获路径延迟响应特点向量效率高但 Launch→Capture 间隔仅 1 个时钟周期时序最严3.2 Launch-on-CaptureLoC时序Shift 结束后第1个 Capture 时钟沿触发 Launch第2个沿 Capture① Shift Phase移入测试向量N 个时钟② 1st Capture Clock → Launch激励被测路径③ 2nd Capture Clock → Capture读出延迟响应特点Launch→Capture 有完整一个时钟周期时序较宽松但需额外一个 Capture 时钟 实际工程中常见的 Dead Clock 问题在某些时钟门控配置下Launch 沿时钟被屏蔽导致 TF 测试向量失效。需要在 OCC 配置中确保 Launch/Capture 时钟正确打开。四、ATPG 测试向量生成流程Tessent 推荐的双故障模型Transition Stuck-At覆盖率优化流程Step 1读入网表 初始化read_cell_library lib.tcelllibread_design netlist.vgset_current_design topset_system_mode analysisStep 2设置 DFT 信号 分析扫描链add_dft_signalsreport_scan_chainsreport_scan_cellsStep 3生成 Critical Path Patterns同时覆盖 TF SAcreate_patterns -pattern_type transition \-critical_path_file path_list.txtreport_statistics # 查看当前覆盖率Step 4补充生成 Transition Fault 向量set_fault_type transitioncreate_patterns -pattern_type transitionStep 5补充生成 Stuck-At 向量确保 SA 覆盖率set_fault_type stuckcreate_patterns -pattern_type stuckreport_statistics # 目标通常 ≥ 99%Step 6写出测试向量文件write_patterns -format stil -mode internal out.stilwrite_testbench -top tb_top Critical Path Patterns 优先生成的原因关键路径向量能同时覆盖路径上的 TF 和 SA 故障效率最高。先生成它再分别补充剩余 TF/SA 故障的专项向量避免重复。五、On-Chip Clock ControllerOCC芯片内部的 PLL 无法在测试时被直接控制OCC 负责①在 Scan Shift 期间切换为低速 Ref/Slow 时钟②在 Launch/Capture 时切换回高速 PLL 时钟At-Speed 测试③精确控制每阶段的时钟脉冲数量Per-Cycle Clock Control。5.1 时钟架构三层次时钟来源频率使用阶段作用Reference Clock低速稳定Scan Shift数据移位不要求速度Slow Clock可配置Scan Shift可灵活配置的慢速时钟PLL Fast Clock芯片工作频率Launch / CaptureAt-Speed 速度测试关键5.2 Clock Chopping 机制Clock Chopping时钟斩波在 Scan Shift 期间只输出固定数量脉冲精准控制链长防止多余时钟脉冲干扰测试结果Shift 期间Clock Chopping Control 01b → Gating 开输出 N 个 Shift 时钟Launch 期间切换 Clock Selection → 接通 PLL Fast ClockCapture 期间Per-Cycle Clock Control 精确输出 1~2 个高速时钟Capture 结束Clock Gating 关闭返回低速模式5.3 PLL Sequence Control在正式测试开始前通过 Scan 链加载 PLL 控制寄存器使 PLL 进入 bypass 模式直接使用外部测试时钟ATE 提供避免等待 PLL lock 时间通常数百微秒① ATE 驱动 Scan 链将 PLL bypass 配置写入控制寄存器② 芯片进入 bypass 模式PLL 输出被外部测试时钟替代③ 开始正式 Scan 测试Stuck-At / Transition④ 测试结束后恢复 PLL 正常模式 不使用 PLL Sequence Control 的后果每次测试前都需要等待 PLL 重新 lock100μs~1ms乘以成千上万的测试向量ATE 测试时间会大幅增加直接拉升量产成本。六、write_patterns -mode internal 详解DFT 验证阶段通常不仿真 PLL 和 Clock Control 逻辑仿真太慢。-mode internal 参数使 Tessent 生成内部 bypass版本的测试向量testbench 通过 force 信号直接驱动核心时钟。# 标准写出命令仿真验证用write_patterns \-format stil \-mode internal \ # 关键bypass PLL Clock Control-output test.stil# -mode internal 的工作原理# 1. Bypass PLL 实例不仿真 PLL 延迟# 2. 绕过 Clock Control 逻辑# 3. Testbench 通过 $force 直接驱动核心时钟# 4. 大幅缩短功能仿真时间6.1 三种模式对比参数适用场景PLL 仿真Clock Ctrl仿真速度-mode internal功能验证、DFT debugBypassBypass最快 ✓-mode externalATE 向量导出完整建模完整建模慢-mode binary压缩格式 ATE完整建模完整建模中七、Tessent Shell 常用命令速查7.1读入 初始化命令常用参数说明read_cell_librarylib.tcelllib读入标准单元库read_designnetlist.vg读入门级网表set_current_designtop_module设置当前设计顶层set_system_modeanalysis进入分析模式7.2分析 报告命令常用参数说明report_scan_cells查看扫描链单元详情report_scan_chains查看扫描链统计信息report_statistics查看故障覆盖率统计report_faults-summary查看故障类型摘要7.3向量生成 导出命令常用参数说明set_fault_typestuck / transition设置故障类型create_patterns-pattern_type stuck生成测试向量write_patterns-format stil -mode internal写出测试向量write_testbench-top tb_top生成仿真 Testbench八、核心要点总结面试必背知识点关键词一句话说明 Scan Chain 本质scan_en1 时所有 FF 串联成移位寄存器串行加载测试向量并读出响应 LockUp Latch解决跨时钟域 Scan Chain 时序竞争问题高电平透明低电平锁存⚡ Stuck-At vs TransitionSA1个时钟捕获静态TF需 LaunchCapture 2个时钟检测速度缺陷 LoS vs LoCLaunch-on-Shift 向量效率更高Launch-on-Capture 时序更宽松 OCC 作用Scan Shift 用低速时钟Launch/Capture 用高速 PLL 时钟精确 Per-Cycle 控制 ATPG 最佳策略Critical Path Patterns 优先兼顾 TFSA不足时再专项补充 -mode internal仿真验证时 bypass PLL用 force 直接驱动时钟速度最快