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 就像藏在盒子里,你只能靠输入去猜,靠输出去验证。插了测试点之后,控制点让你能直接“拧”这些节点,观测点让你能直接“读”这些节点。
我曾经在一个 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。最后不得不重新综合那一段逻辑。所以,插点之前一定要先看时序报告。
怎么缓解时序影响?我一般用这几个方法:
- 优先选非关键路径:工具会告诉你哪些路径时序紧张,避开它们。
- 用高速 MUX:有些工艺库提供专门的高速 MUX,延迟更小。
- 插在寄存器输出端:寄存器输出端的时序裕量通常比组合逻辑中间大。
- 分阶段插入:先插观测点(影响小),再根据需要插控制点。
嗯,说到这,我想起一个案例。有个无线通信芯片,基带处理器的内部状态机有 128 个状态。不加测试点,状态机覆盖率只有 45%。我插了 6 个控制点和 4 个观测点,面积增加了 2.1%,时序没有 violation,覆盖率提升到了 89%。这个投入产出比,项目经理看了直点头。
最后总结一下:TPI 是 DFT 里性价比很高的技术。控制点提升可控性,观测点提升可观测性。代价是面积和时序,但只要规划得当,这些代价完全可控。记住,测试点不是越多越好,而是越精准越好。