4. 测试点插入(Test Point Insertion, TPI)

好,咱们进入第四章。这一章聊的是测试点插入,简称 TPI。说实话,这是 DFT 里最“实在”的技术之一。你想想看,芯片做出来了,怎么知道它好不好使?靠的就是测试。但有些内部节点,你从外面根本摸不着,也看不见。这时候,测试点就派上用场了。

我个人习惯把 TPI 看作是给芯片内部装“摄像头”和“开关”。没有它们,你就是盲测。有了它们,内部信号一览无余。

4.1 什么是测试点?

测试点,说白了就是在芯片内部额外插入的逻辑单元。它不改变芯片的正常功能,只在测试模式下激活。目的是让那些原本难以控制或观察的内部节点,变得容易访问。

我遇到过不少工程师,觉得插测试点是“浪费面积”。嗯,这话对了一半。但你要算一笔账:不插测试点,故障覆盖率上不去,流片回来一堆坏片,那浪费的可就不是面积了,是时间和钱。

测试点通常分为两类:

  • 控制点(Control Point):强制内部节点为特定值(0 或 1)。
  • 观测点(Observation Point):把内部节点的值引出来,供测试设备观察。

核心思想:测试点就是 DFT 的“杠杆”——用少量硬件开销,撬动大幅度的可测试性提升。

4.2 控制点与观测点的区别

这两个概念容易混淆。我简单给你拆开讲。

特性 控制点(CP) 观测点(OP)
作用 强制内部节点为 0 或 1 将内部节点值引出到输出
提升能力 提升可控性(Controllability) 提升可观测性(Observability)
实现方式 MUX + 测试使能信号 寄存器 + 扫描链连接
典型场景 深层次组合逻辑的输入 内部状态机或计数器输出
面积开销 相对较大(需要 MUX 和驱动) 相对较小(只需寄存器)

为什么会这样?你想想看,控制点需要把一个信号“强塞”进去,这往往要打断原来的路径,加一个多路选择器。而观测点只是“偷看”一下,加个寄存器把值存下来就行。

我记得有一次做项目,一个 32 位计数器,内部进位链完全不可控。我插了 4 个控制点,覆盖率从 62% 直接跳到 91%。嗯,这就是控制点的威力。

4.3 TPI 对可控性和可观测性的提升

咱们用一张图来理解 TPI 是怎么工作的。

测试点插入(TPI)对可控性与可观测性的提升 原始电路(无测试点) 输入 → 组合逻辑 → 输出 内部节点 N1, N2, N3 可控性:低(仅靠输入控制) 可观测性:低(仅靠输出观察) 覆盖率:约 65% 插入测试点 改进后电路(带测试点) 输入 → 组合逻辑 → 输出 内部节点 N1, N2, N3 可控性:高(控制点可强制赋值) 可观测性:高(观测点可引出值) 覆盖率:约 95% 控制点(CP)示例 MUX 选择:正常路径 vs 测试值 测试使能 = 1 时,强制 N1 = 0/1 观测点(OP)示例 寄存器捕获 N2 的值 通过扫描链输出到测试设备 TPI 效果总结 可控性提升:控制点可绕过深层次组合逻辑,直接设置内部状态 可观测性提升:观测点可捕获原本无法到达输出的内部信号

从这张图你能看到,TPI 的核心就是“打破黑盒”。原始电路里,内部节点 N1、N2、N3 就像藏在盒子里,你只能靠输入去猜,靠输出去验证。插了测试点之后,控制点让你能直接“拧”这些节点,观测点让你能直接“读”这些节点。

我曾经在一个 SoC 项目里,有个内部仲裁器,逻辑深度有 15 级。不加测试点,覆盖率死活卡在 72%。我插了 3 个控制点和 2 个观测点,覆盖率直接冲到 96%。你说这 5 个点值不值?

4.4 TPI 对面积和时序的影响

好了,好处说完了,咱们得聊聊代价。TPI 不是免费的午餐。它有两个主要影响:面积和时序。

4.4.1 面积影响

每个测试点都需要额外的逻辑门。控制点需要 MUX,观测点需要寄存器。这些都会增加芯片面积。

测试点类型 典型面积开销(等效门数) 说明
控制点(CP) 4-6 门 MUX + 驱动缓冲
观测点(OP) 2-3 门 寄存器 + 扫描连接
组合 CP+OP 6-9 门 同时控制与观测

我建议你在做 TPI 时,心里有个预算。一般来说,测试点带来的面积开销控制在总面积的 1%-3% 是比较合理的。超过 5% 就要慎重了,得跟项目经理好好算算账。

我的经验:不要盲目插测试点。先用 ATPG 工具跑一遍,找出那些覆盖率低的“痛点”区域。针对性地插点,效率最高。我曾经见过有人全芯片均匀插点,结果面积涨了 8%,覆盖率只提升了 5%。这就是典型的“用力过猛”。

4.4.2 时序影响

时序问题更隐蔽。你想想看,控制点插在路径中间,加了一个 MUX,这就多了一级逻辑。路径延迟会增加。观测点虽然不打断路径,但它的寄存器会带来额外的负载电容。

具体来说:

  • 控制点:在正常路径上插入 MUX,路径延迟增加约 0.1-0.3 ns(取决于工艺)。
  • 观测点:在目标节点上增加负载,可能使该节点驱动能力不足,需要额外缓冲。
  • 扫描链:观测点寄存器需要接入扫描链,扫描链本身的时序也要满足。

注意:在关键路径上插控制点要格外小心。我曾经在一个 1GHz 的设计里,在关键路径上插了一个控制点,结果 setup slack 从 50ps 变成了 -20ps。最后不得不重新综合那一段逻辑。所以,插点之前一定要先看时序报告。

怎么缓解时序影响?我一般用这几个方法:

  1. 优先选非关键路径:工具会告诉你哪些路径时序紧张,避开它们。
  2. 用高速 MUX:有些工艺库提供专门的高速 MUX,延迟更小。
  3. 插在寄存器输出端:寄存器输出端的时序裕量通常比组合逻辑中间大。
  4. 分阶段插入:先插观测点(影响小),再根据需要插控制点。

嗯,说到这,我想起一个案例。有个无线通信芯片,基带处理器的内部状态机有 128 个状态。不加测试点,状态机覆盖率只有 45%。我插了 6 个控制点和 4 个观测点,面积增加了 2.1%,时序没有 violation,覆盖率提升到了 89%。这个投入产出比,项目经理看了直点头。

最后总结一下:TPI 是 DFT 里性价比很高的技术。控制点提升可控性,观测点提升可观测性。代价是面积和时序,但只要规划得当,这些代价完全可控。记住,测试点不是越多越好,而是越精准越好。