what are test points?
设计包含许多难以控制和观察的内部模式,即使是在全扫描插入的设计中也是如此,通过在这些位置添加被称为test points的特殊测试电路,可以增加设计的可测试性。
例如,图1显示具有可控性和可观测性问题的电路。
在这个例子中,OR门的一个输入被固定为1,这个静态值为阻止通过该OR门的第二条路径上的故障效应的传播,所以在OR门的第二条输入路径上需要观察测试点以提高观察性。固定输入也会导致OR门的输出端为常数1,意味着从输出之后的任何电路都是不可控制的。门输出pin变成一个测试点以提高可控制性。一旦识别出这些点,增加电路可以改善可控制和可观测性问题。
why you use test points?
使用测试点有三个不同的目的:
- 为了减少确定性pattern的数量,在这些情况下,覆盖率也可能被改善,但是改善很小。
- 提高抗随机模式故障的测试覆盖率。插入测试点以提高random patterns的可能性,以此来控制或观测给定故障的位置。
- 为了在ATPG期间提高不可检测的故障覆盖率。ATPG的故障损失可能由于各种因素,包括不可测试电路或者放弃故障。
Control Points and Observe Points
插入的测试点包括control points和observe points
Control Points
可以插入两种类型的control points,AND Control Points或者OR Control points。
在capture cycles期间,control points不会改变,AND和OR control points相互排斥,工具不能在同一个net中插入AND和OR control point。
工具会查找test point的fan-out cone中所有的flop,选择fan-out cone中驱动最多scan flops的时钟作为test point的时钟,如果fan-out中没有scan flops,则选择fan-in cone中驱动最多scan flops的时钟作为test point的时钟。如果在fanout和fanin cone中都没有scan flops,那么进行跨层级查找,若仍然失败,则使用test clock信号作为test point的时钟。
Observe Points
工具会在gate outputs行以新scan cells的形式插入observe points以提高网表的可观测性。工具支持每个observe point专用scan cell或者多个observation points共享scan cell,当几个observation points共享新的scan cell时,工具会插入XOR tree。
工具会查找test point的fan-in cone中所有的flop,选择fan-in cone中驱动最多scan flops的时钟作为test point的时钟,如果fan-in中没有scan flops,则选择fan-out cone中驱动最多scan flops的时钟作为test point的时钟。如果在fanout和fanin cone中都没有scan flops,那么进行跨层级查找,若仍然失败,则使用test clock信号作为test point的时钟(与control point的时钟选择类似)。
Test Point Insertion Flows
图1展示了在Pre-scan或者Post-scan门级网表中插入test points的设计流程。
post-scan流程不推荐在已存在wrapper chains的设计中插入测试点。可以在core isolation逻辑的外部插入测试点寄存器,工具连接这些寄存器为单独的扫描链作为增加的扫描插入步骤的一部分。
Test Point Usage Scenarios
使用test points有四种不同的目的。
Test Points for ATPG Pattern Count Reduction
在设计中使用test points可以改进compression和test coverage。
Test Points for Reducing Pattern Count
test points主要时减少EDT pattern数量,可能改善test coverage,但影响很小。
首先分析并将test points插入到netlist中,以减少pattern数量,从而改善compression(先分析后插入)。
Requirements for Test Point Analysis and Insertion
进行test point分析和插入有几点要求:
- 需要门级网表和Tessent Cell Library。
- 可以读取功能sdc,为了工具忽略在multicycle paths或者false paths上添加test points。
- 工具会为了正确的controllability/observability分析识别潜在的scan candidates。为了确保最终的non-scan cells不被用作观察点的destination和控制点的源头,应该在test point插入期间使用add_nonscan_instances命令声明所有的non-scan memory element。
- 应该使用add_black_boxes命令定义black boxes,为了test point分析合并这些信息。
- 如果在pre-scan netlist(在做scan插入之前,插入test point)上执行test point分析,不能连接clock gaters(?)。
Specify Test Point Type
默认情况下,工具为减少deterministic pattern数量生成test point,可以使用set_test_point_type命令指定test point的类型(在setup mode下设置)。
Test Points for LBIST Test Coverage Improvement
可以使用test points来提高random pattern resistan(?)t故障的测试覆盖率。
Test Points Analysis and Insertion Step Overview
在hybrid TK/LBIST流程的test point的分析和插入步骤,生成和插入test points到netlist中以实现高test coverage。
在test point分析和插入期间,增加add pattern test points到设计的某些位置,通过添加这些测试点,改进可控制性或可观察行来提高可测试性。
test point分析和插入之后,可写出修改后包括test point的设计netlist和为下一步流程(Scan Insertion和X-Bounding)包含多有必须steps的dofile。
Test Point Analysis With Small LBIST Pattern Counts
当为LBIST coverage插入test point时,估计的test coverage是基于指定数量的patterns检测到的faults的可能性。
就像统计样品一样,patterns数量越少,误差范围越大,如果target pattern集少于20k patterns,要求准确的test coverage数字,推荐使用带有test points的netlist进行fault simulate而不是依赖执行test points分析的覆盖率预估。