一种扫描链测试装置及实现方法与流程

文档序号:12061781阅读:506来源:国知局
一种扫描链测试装置及实现方法与流程

本发明涉及集成电路可测试设计(DFT)领域,尤指一种扫描链测试装置及实现方法。



背景技术:

随着集成电路设计的规模越来越大,同时工艺的尺寸越来越小,不断提升的集成度也提高了生产测试成本和难度,扫描链测试方法作为可测试设计(DFT)中一种重要手段,广泛用于提高芯片质量和成品率。根据扫描链测试原理,可以完成对内部电路的正确性测试时,但也带来了安全性隐患。由于扫描链电路将集成电路内部所有寄存器都串联到一起,通过移位的方法,扫描链输入端可以将任意的数值输送到电路任意一个寄存器,这些输入数据在内部电路完成测试逻辑功能后的响应数据,可以通过扫描链的移位操作到输出引脚被外部监测。这样情况下的集成电路,特别是金融安全类芯片,用于测试的扫描链电路就成为被外部探测内部敏感信息的安全漏洞。

目前其他已有的方案中,第一类是针对集成电路中扫描链的工作模式进行控制,保证外部探测无法使能扫描链进入测试模式,从而让扫描数据不被读写和探测;第二类是针对集成电路内部电路划分安全敏感电路和非安全敏感电路,安全敏感电路部分不进行扫描链测试,从而防止被外部探测。

现有其他技术中,通过对扫描链测试模式进行控制的方法,并未对扫描链中最安全敏感的数据进行保护,如果通过FIB(聚焦离子束,Focused Ionbeam)等方式可以跳过其测试模式的防护时,仍然将数据原始状态全部暴露到外部。同时,由于目前扫描链测试多在第三方工厂,扫描链测试模式方式需要与第三方共享,所以扫描链测试模式方式的保护方式仍然处于非安全状态。而对集成电路内部进行安全划分的方式,会导致了未划分到扫描链上的电路没有进行生产测试的功能分析,也存在进入扫描链的电路处于完全不受保护的状态。



技术实现要素:

为了解决上述技术问题,本发明提供了一种扫描链测试装置及实现方法,可以有效地提高电路安全性能、加固电路内部数据被探测的难度。

为了达到本发明目的,本发明提供了一种扫描链测试装置,包括扫描链逻辑电路,还包括输入解密模块和输出加密模块,其中

所述输入解密模块用于对输入的加密数据进行解密,将解密后的数据输入至所述扫描链逻辑电路;

所述输出加密模块用于对所述扫描链逻辑电路的输出数据进行加密并输出。

可选地,所述扫描链测试装置还包括输入动态密钥模块和输出动态密钥模块,其中

所述输入动态密钥模块与输入解密模块相连,用于生成动态变化的第一动态密钥,将生成的所述第一动态密钥输入至所述输入解密模块,以使所述输入解密模块使用所述第一动态密钥对所述加密数据进行解密;

所述输出动态密钥模块与输出加密模块相连,用于生成动态变化的第二动态密钥,将生成的所述第二动态密钥输入至所述输出加密模块,以使所述输出加密模块使用所述第二动态密钥对所述扫描链逻辑电路的输出数据进行加密并输出。

可选地,所述输入解密模块进一步用于采用对端口重映射进行逆运算和对异或进行逆运算的方式对输入的加密数据进行解密;

所述输出加密模块进一步用于采用异或和端口重映射的方式对所述扫描链逻辑电路的输出数据进行加密并输出。

可选地,所述输入解密模块进一步用于在一个时钟周期内完成解密过程;

所述输出加密模块进一步用于在一个时钟周期内完成加密过程。

可选地,所述输入动态密钥模块和输出动态密钥模块均包括:

两组寄存器和相应的组合电路,用于根据所述扫描链测试电路的复位信号使能寄存器内部初值后,时钟信号不断触发实现两组不整齐的乱序输出;

异或电路,用于将所述两组不整齐的乱序输出进行异或处理并相应地输出第一动态密钥或第二动态密钥。

本发明还提供了一种扫描链测试的实现方法,包括:

对输入的加密数据进行解密;

将解密后的数据输入至扫描链逻辑电路进行测试;

对所述扫描链逻辑电路的输出数据进行加密并输出。

可选地,所述实现方法还包括:生成动态变化的第一动态密钥;

所述对输入的加密数据进行解密包括:使用所述第一动态密钥对所述加密数据进行解密;

所述实现方法还包括:生成动态变化的第二动态密钥;

所述对所述扫描链逻辑电路的输出数据进行加密并输出包括:使用所述第二动态密钥对所述扫描链逻辑电路的输出数据进行加密并输出。

可选地,所述对输入的加密数据进行解密包括:采用对端口重映射进行逆运算和对异或进行逆运算的方式对输入的加密数据进行解密;

所述对所述扫描链逻辑电路的输出数据进行加密并输出包括:采用异或和端口重映射的方式对所述扫描链逻辑电路的输出数据进行加密并输出。

可选地,所述对输入的加密数据进行解密的步骤中,在一个时钟周期内完成解密过程;

所述对所述扫描链逻辑电路的输出数据进行加密并输出的步骤中,在一个时钟周期内完成加密过程。

可选地,所述生成动态变化的第一动态密钥包括:根据所述扫描链测试电路的复位信号使能内部初值后,触发时钟信号得到两组不整齐的乱序输出,作为第一乱序输出,将所述第一乱序输出进行异或处理得到动态变化的第一动态密钥;

所述生成动态变化的第二动态密钥包括:根据所述扫描链测试电路的复位信号使能内部初值后,触发时钟信号得到两组不整齐的乱序输出,作为第二乱序输出,将所述第二乱序输出进行异或处理得到动态变化的第二动态密钥。

本发明实施例通过对扫描链测试电路输入和输出的数据进行解密/加密,实现扫描链测试功能正确的同时,也保证了芯片内部数据的安全。而且,本发明实施例能更全面的把集成电路所有内部数据都加入安全保护内,具有更广泛的测试覆盖能力和安全覆盖能力。

进一步地,本发明实施例通过采用动态密钥方式,增加了破解难度;采用但不限于两组寄存器和组合逻辑来输出动态变化的密钥,从而加强了加密算法对输入全0攻击和复位攻击的防护。

进一步地,本发明实施例的加解密采用但不限于端口重映射和异或的方式,在增加逻辑较少的情况下,实现对原始数据进行加解密,达到数据加扰和防探测功能。另外,加解密一个时钟周期内完成,可以减少前后时钟周期的数据叠加而带来的后期调试难度。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例的扫描链测试装置示意图;

图2为本发明实施例的扫描链测试的实现方法的流程图;

图3为本发明应用实例的扫描链测试装置应用框图;

图4为本发明应用实例的扫描链测试装置的组成示意图;

图5为本发明应用实例的输入解密模块示意图;

图6为本发明应用实例的输入动态密钥模块示意图;

图7为本发明应用实例的输出动态密钥模块示意图;

图8为本发明应用实例的输出加密模块示意图;

图9为本发明应用实例的扫描链测试装置仿真结果。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本发明实施例提供一种扫描链测试装置及实现方法,针对集成电路可测试设计(DFT)中扫描链测试,本装置可以有效地提高电路安全性能、加固电路内部数据被探测的难度。所述装置可以保证扫描链数据高效地进行功能测试前提下,在扫描链的输入端和输出端加解密,以实现集成电路扫描链测试过程中隔离内部电路真实数据,同时达到从外部端口观测点不能探测到电路内部数据的效果。

如图1所述,本发明实施例的扫描链测试装置包括:扫描链逻辑电路11、输入解密模块12和输出加密模块13,其中

所述扫描链逻辑电路11用于进行扫描链测试;

所述输入解密模块12用于对输入的加密数据进行解密,将解密后的数据输入至所述扫描链逻辑电路;

所述输出加密模块13用于对所述扫描链逻辑电路11的输出数据进行加密并输出。

本发明实施例通过对扫描链测试电路输入和输出的数据进行解密/加密,实现扫描链测试功能正确的同时,也保证了芯片内部数据的安全。而且,本发明实施例能更全面的把集成电路所有内部数据都加入安全保护内,具有更广泛的测试覆盖能力和安全覆盖能力。

其中,所述扫描链逻辑电路11实现传统的扫描链测试功能,包括:将解密后的数据移位到内部寄存器的输入端,将内部寄存器的响应数据移位到输出,捕获所述响应数据,并将所述响应数据输出至所述输出加密模块13。

可选地,所述扫描链测试装置还包括输入动态密钥模块14和输出动态密钥模块15,其中

所述输入动态密钥模块14与输入解密模块相连12,用于生成动态变化的第一动态密钥,将生成的所述第一动态密钥输入至所述输入解密模块12,以使所述输入解密模块12使用所述第一动态密钥对所述加密数据进行解密;

所述输出动态密钥模块15与输出加密模块13相连,用于生成动态变化的第二动态密钥,将生成的所述第二动态密钥输入至所述输出加密模块13,以使所述输出加密模块13使用所述第二动态密钥对所述扫描链逻辑电路11的输出数据进行加密并输出。

本发明实施例通过采用动态密钥方式,增加了破解难度。

可选地,所述输入解密模块12进一步用于采用对端口重映射进行逆运算和对异或进行逆运算的方式对输入的加密数据进行解密;

所述输出加密模块13进一步用于采用异或和端口重映射的方式对所述扫描链逻辑电路11的输出数据进行加密并输出。

本发明实施例的加解密可采用端口重映射和异或的方式,在增加逻辑较少的情况下,实现对原始数据进行加解密,达到数据加扰和防探测功能。

需要说明的是,加解密可采用端口重映射和异或的方式仅是本发明实施例的一种实现方式,本发明不限于此,可以采用其他加解密的实现方式。

可选地,所述输入解密模块12进一步用于在一个时钟周期内完成解密过程;

所述输出加密模块13进一步用于在一个时钟周期内完成加密过程。

本发明实施例的加解密一个时钟周期内完成,可以减少前后时钟周期的数据叠加而带来的后期调试难度。

可选地,所述输入动态密钥模块14和输出动态密钥模块15均包括:

两组寄存器和相应的组合电路,用于根据所述扫描链测试电路11的复位信号使能寄存器内部初值后,时钟信号不断触发,实现两组不整齐的乱序输出;

异或电路,用于将所述两组不整齐的乱序输出进行异或处理并相应地输出第一动态密钥或第二动态密钥。

本发明实施例采用两组寄存器和组合逻辑来输出动态变化的密钥,从而加强了加密算法对输入全0攻击和复位攻击的防护。

需要说明的是,生成动态变化的密钥有多种方式,采用采用两组寄存器和组合逻辑的方式仅是本发明实施例的一种实现方式,本发明不限于此,可以采用其他方式生成动态密钥。

如图2所示,本发明实施例的扫描链测试的实现方法,包括:

步骤201,对输入的加密数据进行解密;

步骤202,将解密后的数据输入至扫描链逻辑电路进行测试;

步骤203,对所述扫描链逻辑电路的输出数据进行加密并输出。

本发明实施例通过对扫描链测试电路输入和输出的数据进行解密/加密,实现扫描链测试功能正确的同时,也保证了芯片内部数据的安全。而且,本发明实施例能更全面的把集成电路所有内部数据都加入安全保护内,具有更广泛的测试覆盖能力和安全覆盖能力。

其中,步骤202可包括:将解密后的数据移位到扫描链逻辑电路的内部寄存器的输入端,将所述内部寄存器的响应数据移位到输出,捕获所述响应数据并输出。

可选地,所述实现方法还包括:生成动态变化的第一动态密钥;

所述对输入的加密数据进行解密包括:使用所述第一动态密钥对所述加密数据进行解密;

所述实现方法还包括:生成动态变化的第二动态密钥;

所述对所述扫描链逻辑电路的输出数据进行加密并输出包括:使用所述第二动态密钥对所述扫描链逻辑电路的输出数据进行加密并输出。

本发明实施例通过采用动态密钥方式,增加了破解难度。

可选地,所述对输入的加密数据进行解密包括:采用对端口重映射进行逆运算和对异或进行逆运算的方式对输入的加密数据进行解密;

所述对所述扫描链逻辑电路的输出数据进行加密并输出包括:采用异或和端口重映射的方式对所述扫描链逻辑电路的输出数据进行加密并输出。

本发明实施例的加解密可采用端口重映射和异或的方式,在增加逻辑较少的情况下,实现对原始数据进行加解密,达到数据加扰和防探测功能。

需要说明的是,加解密可采用端口重映射和异或的方式仅是本发明实施例的一种实现方式,本发明不限于此,可以采用其他加解密的实现方式。

可选地,所述对输入的加密数据进行解密的步骤中,在一个时钟周期内完成解密过程;

所述对所述扫描链逻辑电路的输出数据进行加密并输出的步骤中,在一个时钟周期内完成加密过程。

本发明实施例的加解密一个时钟周期内完成,可以减少前后时钟周期的数据叠加而带来的后期调试难度。

可选地,所述生成动态变化的第一动态密钥包括:根据所述扫描链测试电路的复位信号使能内部初值后,触发时钟信号得到两组不整齐的乱序输出,作为第一乱序输出,将所述第一乱序输出进行异或处理得到动态变化的第一动态密钥;

所述生成动态变化的第二动态密钥包括:根据所述扫描链测试电路的复位信号使能内部初值后,触发时钟信号得到两组不整齐的乱序输出,作为第二乱序输出,将所述第二乱序输出进行异或处理得到动态变化的第二动态密钥。

本发明实施例通过将两组不整齐的乱序输出进行异或得到动态变化的密钥,从而加强了加密算法对输入全0攻击和复位攻击的防护。

需要说明的是,生成动态变化的密钥有多种方式,采用采用两组寄存器和组合逻辑的方式仅是本发明实施例的一种实现方式,本发明不限于此,可以采用其他方式生成动态密钥。

如图3所示,为本发明应用实例的扫描链测试装置应用框图,其中,芯片部分为本发明实施例的扫描链测试装置,芯片的集成电路在第三方测试机台上进行DFT扫描链形式的生产测试,第三方测试机台通过其数据输入通道将测试数据传送到芯片的输入引脚,由于第三方测试机台输入的数据是芯片设计方以加密形式提供,在芯片得到输入数据后,首先经过本发明实施例的输入数据解密模块,解密后的明文形式的真实数据在芯片内部进行扫描链测试。在扫描链测试后,芯片将响应数据输出时,通过本发明实施例的输出数据加密模块,将扫描链测试结果加密后再通过输出引脚,传递到第三方测试机台的数据检测通道,并与期望的输出数据进行对比是否一致。本发明实施例的扫描链测试装置,为扫描链数据提供了安全机制,实现在芯片内部明文形式进行测试,在芯片外部均以密文形式的保护功能。

如图4所示,为本发明应用实例的扫描链测试装置的组成示意图,该装置包括五个部分,分别是输入动态密钥模块、输入解密模块、扫描链逻辑电路、输出动态密钥模块、输出加密模块。本应用实例中以扫描链测试电路为五组测试数据输入和五组测试数据输出为例,其中装置输入信号包括测试控制信号scan_clk、scan_rst、scan_mode、scan_en、scan_comp和测试数据输入信号si[0]、si[1]、si[2]、si[3]、si[4],装置输出信号包括so[0]、so[1]、so[2]、so[3]、so[4]。

输入信号介绍:

scan_clk是扫描链测试电路的时钟信号,用于驱动扫描链测试电路中寄存器等时序类器件。

scan_rst是扫描链测试电路的复位信号,用于复位扫描链测试电路中寄存器等时序类器件。

scan_mode是扫描链测试电路的模式选择信号,用于将集成电路状态切换到扫描链测试模式。

scan_en是扫描链测试电路的测试数据选择信号,用于设置扫描链上器件对测试数据和功能数据之间的选择。

si[0]是扫描链测试电路的数据输入端口,第一路数据的输入端口。

si[1]是扫描链测试电路的数据输入端口,第二路数据的输入端口。

si[2]是扫描链测试电路的数据输入端口,第三路数据的输入端口。

si[3]是扫描链测试电路的数据输入端口,第四路数据的输入端口。

si[4]是扫描链测试电路的数据输入端口,第五路数据的输入端口。

输出信号介绍:

so[0]是扫描链测试电路的数据输出端口,第一路数据的输出端口。

so[1]是扫描链测试电路的数据输出端口,第二路数据的输出端口。

so[2]是扫描链测试电路的数据输出端口,第三路数据的输出端口。

so[3]是扫描链测试电路的数据输出端口,第四路数据的输出端口。

so[4]是扫描链测试电路的数据输出端口,第五路数据的输出端口。

扫描链逻辑电路用于实现传统的扫描链测试功能,在外部信号scan_mode和scan_en控制下,可以在功能模式和测试模式之间切换。在测试模式下工作时,基于扫描原理实现对内部寄存器串联成链,实现移位功能和捕获功能。移位功能阶段是将输入数据移位到内部寄存器的输入端和内部寄存器的响应数据移位到输出,捕获阶段是将输入数据移位到内部寄存器的输入端后触发一次捕获操作从而得到响应数据。

输入解密模块是本装置的安全防护部分,用于实现对输入的加密数据进行解密,将解密后的真实数据输送到后续扫描链逻辑电路中进行扫描链的工作。由于芯片设计方将测试数据加密后,才交予第三方测试方,所以测试机台通过引脚输入的数据都是加密的,不能直接用于扫描链逻辑中。通过输入解密模块来实现密文到明文数据的转换,既保证了扫描链正确工作,也对交予第三方的数据采用了加密形式的安全保护。

输入解密模块的具体实现电路,和芯片方提供给第三方测试数据的加密算法是对应关系,实现对其加密算法的一个解密过程。由于考虑扫描链测试后期需要调试,加解密算法在一个时钟周期内完成,以减少前后时钟周期的数据叠加而带来的调试难度。本发明应用实例中,以芯片设计方采用异或和端口重映射的加密算法为例,所以输入解密电路的硬件逻辑为先对端口重映射进行逆运算,再对异或逆运算的方式。如图5所示。

输入动态密钥模块,实现本装置的输入解密模块中密钥的动态化。如图6所示,输入动态密钥模块输出输入解密模块中使用到的动态密钥,原理是采用两组寄存器和相应组合电路分别实现不整齐的乱序输出,两组乱序输出再做异或操作,来保证乱序输出的周期更长,这样实现密钥在测试过程中动态变化,输入动态密钥来防止外界输入全0时的探测攻击。

输出动态密钥模块,实现本装置的输出加密模块中密钥的动态化。如图7所示,本模块跟输入动态密钥模块结构类似,但寄存器的初始值不一样,动态输出的密钥也完全不一样。原理也是采用两组寄存器和相应组合电路分别实现不整齐的乱序输出,两组乱序输出再做异或操作,来保证乱序输出的周期更长,这样实现密钥在测试过程中动态变化。由于内部寄存器初始态大多数为0的情况,外界的复位攻击对固定密钥下可以很容易破解,而采用上述更安全的动态密钥,将避免复位攻击的漏洞。

输出加密模块也是本装置的安全防护部分,用于实现对输出数据先进行加密,然后才通过引脚输出。由于从扫描链逻辑电路中传送过来的数据,都是内部真实数据,如果直接输出到外部引脚,那么真实数据有可能被外部探测。通过输出加密模块将明文形式的真实数据加密,再输出到芯片引脚,这样隔离了内部真实数据和外部测试机,从而提升了芯片数据的安全性。

输出加密模块的具体实现电路,和芯片方提供给第三方响应数据的加密算法是对应关系,都是实现相同加密算法的过程,前者对芯片测试时实测响应数据的加密,后者是对芯片设计方期望响应数据的加密,同时输出到测试机台进行对比对错。输出加密模块同样考虑扫描链测试后期需要调试,加解密算法在一个时钟周期内完成,以减少前后时钟周期的数据叠加而带来的调试难度。本发明的应用中采用异或和端口重映射的加密算法,所以输出加密电路的硬件逻辑为先进行异或运算,再采用端口重映射运算的方式,结果连接到输出引脚。如图8所示。

下面针对图3~图8说明本应用实例中扫描链测试过程:

1、芯片设计方对扫描链电路硬件电路确定后,将扫描链测试电路的测试数据和预期响应数据,在确定输入密钥和输出密钥初始值后,利用动态密钥原理,分别采用端口重映射和异或的加密上述两组测试数据方式后,将两套测试数据提供第三方测试机台。

2、第三方测试机台将扫描链控制信号连接到扫描链测试的芯片,使能测试模式信号scan_mode,提供测试时钟scan_clk、测试复位scan_rst、测试数据控制信号scan_en。

3、在扫描链控制信号有效时,输入密钥模块每个scan_clk会动态变化一次密钥,动态密钥和加密的测试数据不断传递到输入解密模块,该模块对密文测试数据进行端口重映射和异或方式下解密。

4、经过输入解密模块后的测试数据,已经是传递到芯片内部的真实测试数据,进入扫描链逻辑电路。

5、扫描链逻辑电路会完成输入测试数据的移位阶段,触发捕获阶段以便进行捕获测试的响应数据,进而将响应数据再依次移位并传送到输出加密模块。

6、输出密钥模块也是每个scan_clk会动态变化一次密钥,动态输出加密模块得到密钥和扫描链的真实响应数据,进行端口重映射和异或加密后,通过输出引脚到第三方测试机台。第三方测试机台根据芯片输出加密后的实测响应数据和芯片设计方提供加密后的预期响应数据,进行对比,如果所有数据均一致,表示该芯片生产测试无缺陷,后则表示所测试芯片有生产缺陷。

本发明应用实例通过Verilog语言在芯片设计中实现所述功能,通过仿真得到如图9所示结果,在扫描链控制信号scan_clk、scan_rst、scan_mode、scan_en正确提供输入的情况下,外部输入的加密数据si[0]、si[1]、si[2]、si[3]、si[4],进过输入解密模块后将真实数据si_p[0]、si_p[1]、si_p[2]、si_p[3]、si_p[4]进入扫描链测试逻辑,扫描响应结果so_p[0]、so_p[1]、so_p[2]、so_p[3]、so_p[4]数据通过输出加密模块后得到so[0]、so[1]、so[2]、so[3]、so[4],输出到外部引脚。

所述装置可以保证不影响原有传统的扫描链测试逻辑的正常工作,并且在输入解密模块和输出加密模块的安全保证下,实现芯片内部真实数据和外部加密数据的隔离,避免芯片内部数据被第三方探测。从图9可以看出当复位攻击内部连续多个初始值为0的寄存器时,动态密钥将连续0序列的真实数据加密成变化的数据,有效地应对复位攻击,避免内部寄存器真实数据泄露的危险。另外所述安全扫描链测试电路规模增加不大,电路时序影响较小,应用场景要求小,在芯片实际测试中功能正确。

显然,本领域的技术人员应该明白,上述的本发明实施例的模块或步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1