DFT结构的目的是使设计可控和可观察。我们知道扫描链如何允许我们通过测试值和观察捕获的值来测试设计。
当ATPG生成扫描pattern时,它还会提供覆盖编号,此覆盖编号指定了故障百分比。它还被分为某些类别进行详细分析。
没有覆盖的原因之一是“scan”无法控制/观察设计的某些部分。与SCAN类似,测试点(TP)也由DFT插入工具自动插入。DFT工程师需要使用各种选项来管理TP插入,增强测试覆盖率。
注意:DFT中的测试“覆盖率”与验证中的功能/代码覆盖率不同。
让我们看看下图中给出的例子。实际场景要复杂得多。以下示例是为了让你了解TP的重要性。
A:由于OR门的另一个输入是“1”,因此输出将始终是“1”。如果缺陷发生在“A”处,则永远不会被识别。因此,“A”被称为unobservable net。
B:由于OR门的输入之一是“1”,因此输出将始终为“1”。这意味着不可能将值“0”放在“B”上。进一步的逻辑(在B之后)不能在B=0时进行测试。所以,“B”被称为uncontrollable net。
插入TP来解决上述问题。它们本质上有两种:控制点和观察点。
行业中用于DFT插入的最常见的工具是:DFT Compiler(由Synopsys提供)和Tessent DFT工具(由西门子提供)。
控制点:
西门子提供的Tessent DFT工具插入的基本控制点的结构如图所示。这是一个AND型控制点,该工具还提供了OR型控制点。
在TP插入过程中,插入一个新的触发器,用于将测试值传递给需要控制的net。
如果test_point_en为“0”,则输出与original_net相同。
如果test_point_en是“1”,测试值可以从新的触发器传播到NAND门的输出。如果NAND的输出为“1”,则AND门输出的值与原始净值相同。但是,如果NAND的输出为“0”,则AND门输出的值被控制为“0”。同样,OR型TP的功能也类似。
观察点:
西门子测试工具插入的观察点示例见下图。如果test_point_en是“0”,则original_net的值被AND门阻止,因为它将始终输出“0”。但如果test_point_en为“1”,AND门输出将与original_net相同,它将传播到触发器输出以进行观察。
从上述数字中可以看出,添加TP会导致额外的逻辑,因此也会增加面积。因此,高效的DFT测试需要最佳的TP配置。DFT工具提供了多个配置选项,这些选项在插入TP时使用。这些选项允许DFT工程师决定TP的数量、TP的类型甚至TP的区域。通过一些实验,可以决定最佳的TP,并放入设计中,以获得目标覆盖率。