欢迎光临专业集成电路测试网~~欢迎加入IC测试QQ群:111938408

专业IC测试网

当前位置: 网站主页 > 测试工程 >

DFT--Test Point(测试点)详解

时间:2025-08-18 22:11来源: dpzc DFT-DS 作者:ictest8_edit 点击:

 

在现代数字集成电路(IC)设计中,可测性设计(Design for Testability, DFT)是确保芯片制造后能够被有效测试、快速定位缺陷并提升良率的关键技术。随着工艺节点不断缩小、芯片复杂度持续上升,传统的外部引脚测试已无法满足对内部逻辑的可观测性(Observability)和可控制性(Controllability)需求。
为此,DFT 引入了 Test Point(测试点) 技术,作为增强测试覆盖率、优化测试质量的重要手段。
 

一、什么是 Test Point?


Test Point(测试点) 是在芯片设计中人为插入的额外逻辑节点,用于:

· 提高内部信号的可控制性(Controllability):更容易将特定值驱动到难以到达的节点。

· 提高内部信号的可观测性(Observability):更容易将内部状态传递到可观察的输出端(如扫描链)。

测试点不是功能逻辑的一部分,而是专为测试服务的辅助结构,通常在功能模式下不工作,在测试模式(如扫描测试、MBIST)下启用。

它通过对关键节点的状态进行主动控制或被动观测,使原本无法被测试向量覆盖的故障变得可检测,从而降低测试难度、提高测试质量。

 

Uncontrollable and Unobservable Circuitry
 


二、为什么需要 Test Point?


随着芯片规模增大,以下问题日益突出:

1. 长组合路径难以驱动:
某些内部节点由于扇入大、逻辑层级深,难以通过输入引脚直接置为0或1。

2. 关键节点难以观测:某些内部信号无法通过扫描链捕获,导致故障覆盖率下降。

3. 冗余路径导致测试向量冗长:自动测试向量生成(ATPG)工具需要更多向量才能覆盖深层逻辑。

4. 低功耗设计引入隔离逻辑:电源门控(Power Gating)导致部分模块在测试时处于隔离状态。

Test Point 正是为了打破这些“测试瓶颈” 而引入的。
     
在插入scan chain后,design中的大部分内部节点都处于可控和可观测的状态(如上图中组合逻辑的输入和输出节点),但是不可避免的有部分节点会出现无法控制或观测的问题。如下图所示,由于与门U1的输入A被tie 0(接 tie cell 或由前面逻辑固定驱动为 0),导致其 B 端前面逻辑电路的值无法向后传播,从而在M点出现无法观测的问题;同理,由于U1的输出Y的值无法置为1,导致其后面的电路的部分Fault无法被激活,从而在N点出现无法控制的问题。如果Design中此类问题较多时,就会导致TC loss增加,无法达成Test Coverage的要求。

 
   
为了解决上述问题,可以在M点插入Observe point、在N点插入Control point来实现与门U1前后电路的可测试性。通过插入Test point,可以实现以下三个目的:

1. 减少deterministic pattern,缩短测试时间,节约测试成本;
2. 提升deterministic pattern的测试覆盖率;
3. 减少AU类型Fault的数量,提升ATPG整体测试覆盖率。
 

三、Test Point 的类型


根据功能和实现方式,Test Point 主要分为两类:

1. Controllability Test Point(可控性测试点)

· 目的:增强对某个难以驱动的内部节点的控制能力。
· 实现方式:
· 在目标节点前插入一个多路选择器(Mux),在测试模式下允许外部信号直接驱动该节点。
· 或插入一个强制逻辑(Forcing Logic),在测试模式下将节点拉高/拉低。

// 示例:在组合逻辑输入前插入 Mux

assign internal_ctrl = (test_mode) ? test_ctrl_in : normal_logic;

And control point

    下图在原电路中插入And控制点,即在待控制节点插入一个与门,与门的input2受DFT逻辑控制。当test_point_en为1时,通过new scan cell的值来控制And的输出。And control point用于功能逻辑上无法置为0的节点(固定为1),在DFT mode下,new scan cell为1时,与门input2为0;当New scan cell为0时,与门输出与原电路相同(固定为1)。通过插入And control point,可以激活控制点后面的电路测试。在非scan mode下,test_point_en为0,与门的input2为1,原电路的功能不受影响。
 
  由于在原电路路径上插入了与门,会导致原路径delay增加。对于timing critical的路径,可能会导致timing难以收敛,所以在插入control point时要综合考虑测试覆盖率、pattern数量、时序裕量等因素。



Or control point

    下图在原电路中插入或门,常用于功能逻辑上无法置为1的节点(固定为0),控制原理与And control point类似。在非Scan mode,test_point_en为0,或门的input2为0,原电路的功能不受影响。

    同理,Or control point也会对原路径的时序产生影响。


2. Observability Test Point(可观测性测试点)

· 目的:增强对某个难以观测的内部节点的观测能力。

· 实现方式:
· 将目标节点连接到一个额外的扫描寄存器观测路径
· 或通过压缩逻辑将其映射到输出端。

verilog
 
// 示例:将内部信号连接到观测寄存器

always @(posedge clk ornegedge rst_n) begin

if (!rst_n)

        obs_reg <= 0;

elseif (test_mode)

        obs_reg <= internal_node;  // 捕获内部状态

end

    在下图中,原电路节点的值无法通过后面电路传播到scan chain上进而被观测。通过插入Observe point,新增new scan cell来捕获该节点的值。在scan mode下,observe_point_en为1,待observe节点的值可以通过与门到达new scan cell,而 new scan cell 串在 scan chain 上,可以进行测试;在非scan mode下,observe_point_en为0,原电路的值不会传播到new scan cell。

    由于Observe point不在原路径上插入cell,因此不会对时序造成影响。

    为了减少插入Observe cell的数量,可以通过插入异或门来实现多个节点共享一个Observe point,如下图。

 


四、Test Point 的典型应用场景


场景 问题 Test Point 解决方案
深层组合逻辑 输入难以驱动内部节点 插入可控性测试点(Mux)
高扇出节点 信号变化难以观测 插入可观测性测试点
异步逻辑块 不在扫描链中,不可测 添加旁路或观测路径
加密模块 功能模式下不可访问 测试模式下启用测试接口
模拟/混合信号接口 数字测试难以覆盖 添加数字scan loop 电路
 

五、测试点的插入流程与策略


    测试点的插入需结合 ATPG 工具的故障分析结果,遵循 “最小代价最大化覆盖率” 原则,流程如下:

1. 故障覆盖率分析(Pre-TP Analysis)

在插入测试点前,首先通过 ATPG 工具对初始设计进行故障仿真,生成未覆盖故障列表,并分析未覆盖原因:
   
标记 “因可控性不足未覆盖” 的故障(需插入控制测试点);
   
标记 “因可观测性不足未覆盖” 的故障(需插入观测测试点);    排除 “固有不可测故障”(如冗余逻辑故障,无需处理)。

2. 测试点位置优化

为避免过度插入(增加面积和功耗),需通过算法优化测试点位置:

共享性优先

:优先选择能覆盖多个未测故障的节点(如高扇出节点,一个测试点可解决多个下游故障);逻辑深度优先:优先处理深逻辑层节点(表层节点通常可控 / 可观测性更好);代价评估:计算每个潜在测试点的 “覆盖率收益 / 面积开销比”,优先插入高收益点。

3. 插入与验证(Post-TP Implementation)

· 插入测试点后,需更新网表和 DFT 约束(如test_en、test_ctrl的时序约束);
· 重新运行 ATPG,验证故障覆盖率提升效果以及pattern数目减少的数量;
· 进行时序验证(STA),确保测试点引入的延迟不影响功能模式和测试模式的时序收敛;
· 进行功能仿真,验证测试点在功能模式下的透明性(不干扰正常逻辑)。

 

工具插入流程(以 Tessent 为例)
 
SETUP> 

set_system_mode analysis

ANALYSIS>
 set_test_point_analysis_options -total_number 1000

ANALYSIS>
 set_test_point_analysis_options

ANALYSIS>
 set_test_point_insertion_options \  -control_point_enable cp_en -observe_point_enable op_en

ANALYSIS> 
analyze_test_points

ANALYSIS>
insert_test_logic //生成带 TP 的新网表 + 新 SDC。

INSERTION> report_test_points > testpoints.txt

INSERTION> write_design -output_file my_modified_design.v

 

六、插入Test Point 的优缺点

优点 缺点
✅ 提高测试覆盖率(尤其是 transition fault) ❌ 增加芯片面积(每点约几十到几百μm²)
✅ 减少测试向量数量,缩短测试时间 ❌ 可能影响功能时序(插入逻辑引入延迟)
✅ 改善难测节点的可控制性与可观测性 ❌ 增加功耗(额外逻辑翻转)
✅ 有助于调试和良率分析 ❌ 设计复杂度上升
 

七、最佳实践与设计建议

1. 优先使用工具自动分析:让 ATPG 工具识别“难测”节点,再决定是否插入。
2. 控制数量:避免过度插入,平衡覆盖率与面积开销。
3. 避免关键路径:不要在时序关键路径上插入 Test Point,以免影响性能。
4. 测试模式隔离:确保 Test Point 在功能模式下不干扰正常逻辑。
5. DFT 模式控制:使用统一的 test_mode 信号控制所有 Test Point。
6. 避免增加Function功耗:确保 Test Point 相关逻辑在功能模式下处于静态(不消耗电流)。
7. 验证 Test Point 功能:
· 形式验证(Formal Verification)确保功能模式下无影响。
· DFT pattern的仿真验证测试模式下的行为正确。
 

总结


Test Point 是 DFT 中一种“以小换大”的优化策略 —— 通过少量面积开销,换取显著的测试质量提升。它不是必须的,但在以下场景中极具价值:
· 高复杂度 SoC
· 低良率产品(需精细故障分析)
· 安全关键应用(如汽车、医疗)
· 先进工艺节点(7nm 及以下)
掌握 Test Point 的原理、类型与插入方法,是 DFT 工程师和数字设计工程师的重要技能。在实际项目中,应结合 ATPG 工具分析,适时、节制地使用 Test Point,实现测试覆盖率、测试成本与芯片性能的最佳平衡。
 
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片