从ATPG到LBIST:Test Point分析与插入的完整工作流解析(基于Tessent Shell)
从ATPG到LBIST:Test Point分析与插入的完整工作流解析(基于Tessent Shell)
在现代芯片设计中,测试点的分析与插入已成为提升可测试性的关键环节。随着工艺节点不断演进,设计复杂度呈指数级增长,传统扫描测试方法面临严峻挑战。本文将深入剖析如何利用Tessent Shell工具链,构建从ATPG到LBIST的完整测试点工作流,帮助工程师在门级网表阶段制定最优测试策略。
1. 测试点基础与核心价值
测试点本质上是为增强电路可控性和可观测性而插入的特殊结构。想象一下,当我们需要检测一个深埋在数百万门电路中的特定故障时,传统扫描链可能无法有效传播故障效应。此时, strategically placed test points就像在迷宫中设置的观察哨,能够显著提升故障检测效率。
测试点的三大核心价值:
- ATPG向量压缩:通过减少确定性测试模式数量,直接降低测试成本。某28nm芯片案例中,合理插入测试点后向量减少37%。
- LBIST覆盖率提升:针对随机模式抗性故障(random pattern resistant faults),测试点能改善伪随机测试的有效性。
- 不可测故障挽救:对于ATPG无法检测的故障,测试点提供额外观察或控制通道。
表:测试点类型对比
| 类型 | 功能原理 | 典型应用场景 | 插入位置 |
|---|---|---|---|
| 控制点 | 通过AND/OR门注入控制信号 | 解决不可控节点 | 组合逻辑输出 |
| 观察点 | 新增扫描单元捕获内部状态 | 解决不可观测节点 | 关键路径分叉点 |
注意:AND控制点和OR控制点互斥,工具无法在同一网络同时插入两种类型。
2. Tessent环境准备与配置
开始测试点流程前,必须确保环境配置完整。这里分享一个实战中的checklist:
# Tessent环境初始化示例 set_context dft -top top_module read_verilog gate_level_netlist.v read_cell_library tessent_tech.lib read_sdc functional_constraints.sdc关键配置要素:
网表质量验证:
- 确保门级网表已通过形式验证(LEC)
- 检查所有black box已正确定义(
add_black_boxes命令)
时序约束处理:
- 功能SDC需包含所有false path和多周期路径
- 使用
set_test_point_exclusion避免在敏感路径插入测试点
非扫描单元声明:
add_nonscan_instances [get_cells *mem*]防止工具误用memory元素作为测试点目标
3. 测试点类型分析与策略制定
在Tessent中,测试点策略的制定始于set_test_point_type命令的精准配置。我们来看两种典型场景:
3.1 ATPG向量优化模式
set_test_point_type -pattern_reduction analyze_test_points此模式下,工具会优先识别能最大程度减少deterministic patterns的节点。实际项目中,建议配合以下参数:
set_test_point_analysis_options -max_points 500 -coverage_impact_threshold 0.2%3.2 LBIST覆盖率提升模式
set_test_point_type -random_pattern_coverage set_test_point_analysis_options -lbist_pattern_count 100000此时需要特别注意:
当目标LBIST模式数少于20k时,必须通过故障模拟验证真实覆盖率,工具预估可能误差较大。
时钟域选择逻辑深度解析: 工具采用三级递进策略选择测试点时钟:
- 首选fan-out cone中驱动最多scan flop的时钟
- 次选fan-in cone中的主导时钟
- 最终fallback到test clock
4. 测试点插入与实现细节
4.1 控制点实现机制
- AND型控制点:通过插入与门,在测试模式下拉低节点
- OR型控制点:通过插入或门,在测试模式上拉节点
典型控制点电路结构:
[原有逻辑] ----\ AND/OR ---- [后续逻辑] test_enable ----/4.2 观察点优化策略
现代设计更倾向采用共享scan cell方案:
set_test_point_options -share_observation_cells true -max_xor_fanin 4工具会自动构建XOR树合并多个观察点,节省面积开销。某7nm项目采用此方案后,观察点面积减少62%。
5. 后处理与流程集成
测试点插入后,需要生成两套关键输出:
网表处理:
write_verilog -modified netlist_with_testpoints.v后续流程集成:
create_scan_insertion_dofile -output scan_flow.do -include_xbounding create_lbist_dofile -output lbist_flow.do跨时钟域测试点处理技巧: 对于多时钟域设计,建议添加以下约束:
set_test_point_clock_domains -domain_list {CLK1 CLK2} set_test_point_cdc_options -sync_stages 2在实际项目中,我们发现最有效的测试点往往位于控制流与数据流的交汇处。例如在某AI加速器芯片中,通过在权重加载路径插入3个关键观察点,使LBIST覆盖率提升8.2个百分点。
