应对扫描压缩逻辑的合成挑战
所有现代SoC都使用扫描结构来检测设计中是否存在制造缺陷。扫描链的目的就是用于测试并按照串行顺序连接芯片的时序元件。然而,随着现代SOC几何尺寸不断缩小及复杂性不断增加,如今已能将数百万个晶体管集成到单一芯片之中。因此,时序元件总数与可用的扫描IO总数之比在不断增加。而测试仪的成本(测试仪使用时间)高昂,传统的扫描结构已不足以支持这些复杂的SoC。压缩逻辑被看作是针对上述问题的解决方案,但它在逻辑合成阶段却带来了扫描拼接方面的新挑战。我们将详细讨论这些挑战和针对这些扫描拼接问题的解决方案,但在此之前,我们先通过一个示例来了解对压缩逻辑的需求。
要讨论控制扫描结构的各种参数,需要考虑具有以下配置的设计:可用测试仪内存=每测试信道1M向量(测试仪提供的固定内存);可用扫描输入/输出端口=5+5;每个链的触发器数=200(总触发器=1000);完整测试设计所需模式数=2400。
因此,所需测试仪内存=200×2400≈每测试信道0.48M。
在上述情况中,所需的测试仪内存小于可用内存,因此,此设计可测试。但随着现代SOC尺寸的增加(即设计中时序元件数增加),现有的测试仪内存可能不足。应考虑另一种含20k个触发器且有更多扫描IO的设计:可用测试仪内存=每测试信道1M向量;可用扫描输入/输出端口=10+10(封装上的有限数量测试引脚);每个链的触发器数=2000(总触发器=20000);完整测试设计所需模式数=2400(这是最保守的数字,因为模式数会随着设计尺寸的增加而增加)。
因此,所需测试仪内存=2000×2400≈每测试信道4.8M。
在上例中,由于该模式不适合现有的测试仪内存,因而上述简单的扫描结构已不足以对设计进行完全测试。这个问题可以通过扫描压缩来解决。
压缩逻辑概念
压缩逻辑旨在解决与测试芯片制造缺陷有关的问题。在这种结构中,芯片级链被分为多个内部链,因此,通过压缩激励(扫描输入)和解压结果(扫描输出),在芯片级便能解决有多个扫描输入和输出端口的问题。此后,我们将把这种压缩和解压逻辑简称为CDL
压缩逻辑解决了较大测试仪内存的问题,如下所示(压缩因子=10):
可用测试仪内存=每测试信道1M向量(测试仪提供的固定内存);可用扫描输入端口=10(封装上的有限数量测试引脚);可用扫描输出端口=10(封装上的有限数量测试引脚);扫描链总数=100;每个链的触发器数=200(总触发器=20000);完整测试设计所需模式数=2400。因此,所需测试仪内存=200*2400≈每测试信道0.48M。
由于所需测试仪内存较小,因此设计现在可进行测试。
问题是什么?
扫描压缩逻辑是所有现代复杂SOC必须提供的功能。然而,引入这种扫描压缩逻辑也带来了逻辑合成阶段扫描拼接方面的新挑战。如图3所示,扫描链从CDL(扫描输入引脚)的输出拼接到CDL(扫描输出引脚)的输入。压缩逻辑的扫描输入引脚连接到触发器的扫描输入。
根据成功进行DFT检查的要求,每个窗口只应进行一次捕捉。违反此条件将导致测试覆盖率下降,因为所有触发器都不是独立可控的。对于本文涉及的所有讨论,我们已经考虑了图4所示的窗口。
拼接了扫描链后,由于CDL触发器和设计的其他部分可能由不同时钟域的时钟进行计时(因为设计中存在不同功能的时钟域),这些时钟可能包含不常见的宽时钟路径,因此可能会发生保持(HOLD)时间冲突。为考虑所有可能的冲突,图5列出了以下情况。
因此,发生以下两种情况时将产生冲突。
到达发起和捕捉触发器的时钟出现倾斜,在以下两种场景下,正边沿-正边沿和负边沿-负边沿触发器对将发生这种情况(图6中已展示):1.在一个扫描链中拼接的触发器由同一时钟记录时间。由于到达发起和捕捉触发器的时钟之间存在偏差,时钟到达捕捉触发器的时间可能远比到达发起触发器的时间晚;2.在一个扫描链中属于不同时钟域的两个触发器由不同时钟进行计时,由于OCV的存在,时钟之间的偏差可能足以使发起和捕捉操作在同一个窗口发生。当其中一个触发器在CDL内部而另一个触发器在其外部时,发生这种情况的几率最大。
发起和捕捉操作在一个窗口内执行。当发起触发器是正边沿触发器而捕捉触发器是负边沿触发器时,会发生这种情况。在这种情况下,即使时钟边沿之间不存在偏差,在一个时钟周期内也将发生两次捕捉(图6)。由于扫描拼接在逻辑合成后执行,因此,在进行CDL编码时,设计人员无须考虑扫描链中第一个或最后一个触发器(正或负边沿触发器)的特性。
目前有哪些技术可用?
设计人员可以采用各种不同技术来避免这一问题。下面介绍其中的一些技术。
定制的CDL:在这种方法中,扫描链
- 晶体管热阻测试系统的设计与实现(01-01)
- 一种超宽脉冲发生器的设计(02-16)
- 各种晶体管的检测方法大全 (07-05)
- 晶体管的检测经验(09-17)
- 判别端子晶体管测试仪(09-09)
- 内置波形发生器的示波器进行元器件测试(10-28)