一种jtag模块及应用该模块的调试方法

文档序号:5930412阅读:210来源:国知局
专利名称:一种jtag模块及应用该模块的调试方法
技术领域
本发明涉及集成电路设计与测试技术领域,特别是指一种JTAG(JointTest Action Group)模块及应用该模块的调试方法。
背景技术
测试是集成电路设计与生产过程中最重要的环节之一,一般分为功能测试和结构测试两种。其中,功能测试的目的在于保证所设计的操作系统芯片(SOC)与设计意图相匹配,即验证SOC内的集成电路能否正确地按照技术条件实现预先设计的功能;结构测试的目的在于测试所生产的每一个SOC在结构上是否合格。
目前,大部分CPU核都提供JTAG边界扫描测试结构以供测试、开发与仿真。边界扫描测试技术最初是由各大半导体公司(Philips、IBM、Intel等)成立的联和测试行动小组(JTAG,Join Test Action Group)于1988年提出的,1990年被IEEE规定为电子产品可测试性设计的标准(IEEE1149.1/2/3)。
JTAG边界扫描测试结构是在芯片的每一I/O引脚及内部所有要求逻辑测试的部位增加一个边界扫描寄存器(BSR)单元,并将所有的BSR依次连接,从而形成扫描链。在芯片正常工作时,所有BSR单元都是透明的,不影响芯片的正常工作;在对芯片进行测试时,所有BSR单元根据接收到的指令串行地存储、读出测试数据,实现对芯片内部状态以及数据的观察与控制。
图1所示为现有技术的带有JTAG边界扫描链的芯片的结构示意图。图示虚框内为JTAG模块,待测芯片的每个引脚通过JTAG模块中的边界扫描寄存器连接于待测芯片的内核逻辑。JTAG模块包括以下四个部分用于提供测试所需各种数据的测试访问端口(TAP);用于将串行输入的测试模式选择(TMS)信号进行译码,使边界扫描系统进入相应测试模式并产生各种控制信号的TAP控制器;用来寄存测试指令的由附有锁存器的移位寄存器来担任的指令寄存器(IR)和由旁路寄存器、边界扫描寄存器和数据寄存器组成的测试数据寄存器组(TDR)。其中,TAP端口内包含有5个端口,分别为测试时钟(TCK)端口,测试模式选择(TMS)端口,测试数据输入(TDI)端口,测试数据输出(TDO)端口以及可选的测试复位信号(TRST)端口。
图2所示为现有技术的带有JTAG边界扫描链的芯片的工作原理示意图。测试访问端口控制器240接收来自测试访问端口250内的控制指令,对接收到的指令进行译码后,控制边界扫描寄存器进入控制指令所要求的状态,如测试状态、仿真状态或开发状态等,其中,TMS端口接收测试模式选择指令,TCK端口接收时钟信号,TRST端口接收测试复位指令;指令寄存器230用于接收来自测试访问端口250内TDI端口的控制指令,并对接收到的控制指令进行寄存;测试数据寄存器组220内数据寄存器用于接收来自测试访问端口250内TDI端口的数据,并对接收到的数据进行寄存,指令寄存器根据接收到的指令对数据寄存器中的数据进行控制,进而实现对边界扫描寄存器的控制。来自TDI端口的信号是传送给指令寄存器还是传送给数据寄存器是根据TMS端口的信号加以区分的;测试数据寄存器组220内的边界扫描寄存器对待测芯片的内核逻辑210进行调试,并由边界扫描寄存器将调试结果经测试访问端口250内的TDO端口传送给外部设备。
应用JTAG模块即可实现对芯片内部的功能测试,或通过控制芯片引脚实现参数测试,如测试输出缓冲的驱动能力,漏电,输入阀值等交流和直流特性等,或实现访问内部扫描路径,以提高难以访问的内部节点的可观测性,或在不需要额外引脚的情况下,用于片上调试。
上述可测性设计能够很方便地观察和控制SOC的电路输入、输出以及SOC芯片内部的各个节点,便于系统的测试、仿真和软件的跟踪开发与调试。但由于可测试设计与JTAG的存在,使得SOC失去了最基本的安全性,原本用来增加器件内部可观测性的逻辑电路也可以被攻击者用来查看SOC内部状态信息,从而轻而易举的通过JTAG获取SOC中的全部程序与数据,这对于IP的保护是极其不利的,特别是对于密码芯片,这种可测性设计方式与JTAG的存在使得其中的密钥与敏感信息毫无安全可言。
为了解决上述可测性设计中可测性与可靠性及安全性的矛盾,目前主要采用以下两种方法来解决方法一人工破坏法。该方法是在SOC测试完成,SOC中的固件(FIRMWARE)装载后,人为破坏JTAG模块的TAP,通过加大攻击者攻击难度来实现对SOC芯片的保护。
上述方法的缺陷在于由于芯片内部的可测性结构与JTAG电路并没有破坏,因而并不能从根本上防止被攻击。同时,该方法需要生产厂商具备专用的生产设备,实现难度大,成本高,且应用该方法大批量生产芯片时,效率很低。
方法二消除JTAG法。该方法是首先应用具有仿真与调试功能的带有JTAG模块的芯片样片对FIRMWARE进行开发,待FIRMWARE开发调试完成后,再进行第二次流片,去掉芯片中JTAG模块的TAP,从而实现保护SOC内的IP和敏感信息特别是密码芯片中的密钥等信息。
上述方法的缺陷在于由于需要第二次流片,增加了生产成本,且该方法为以后的FIRMWARE升级开发带来不便。

发明内容
有鉴于此,本发明的目的在于提供一种JTAG模块及其应用该模块的调试方法,以解决针对SOC的可测性、可控性及安全性的矛盾。
为达到上述目的,本发明的技术方案是这样实现的一种JTAG模块,至少包括测试访问端口460,测试访问端口控制器440、指令寄存器430和包含边界扫描寄存器的测试数据寄存器组420,该JTAG模块进一步包括由寄存器模块451和逻辑处理模块452构成的安全模块450,其中,所述寄存器模块451,接收来自待测芯片内核逻辑410的片选信号和启闭安全模块的数据信号,并将接收的信号传送给逻辑处理模块452;所述逻辑处理模块452,经测试访问端口460接收来自外部设备的控制指令或数据,并根据来自寄存器模块451的信号对接收到的指令进行逻辑处理后,将逻辑处理后的控制指令传送给测试访问端口控制器440和指令寄存器430,将逻辑处理后的数据传送给测试数据寄存器组420;或者,接收来自测试数据寄存器组420的测试结果信息,并根据来自寄存器模块451的信号将该接收到结果信息进行逻辑处理后,将逻辑处理后的结果信息经测试访问端口460传送给外部设备。
较佳地,所述测试访问端口内包括一个以上端口,所述逻辑处理模块内包括一个以上逻辑门,所述寄存器模块内包括一个以上寄存器,所述寄存器模块内的每个寄存器分别独立接收来自待测芯片内核逻辑的片选信号和开启安全模块的数据信号,每个寄存器的输出信号分别对应逻辑处理模块内一个逻辑门的一个输入端,逻辑处理模块内每个逻辑门的另一输入端分别对应测试访问端口内的一个端口的信号。
较佳地,所述测试访问端口内包括一个以上端口,所述逻辑处理模块内包括一个以上逻辑门,所述寄存器模块内包括两个寄存器,较佳地,所述逻辑处理模块内每个逻辑门的一个输入端分别对应测试访问端口内一个端口的信号,所述寄存器模块内的每个寄存器分别独立接收来自待测芯片内核逻辑的片选信号和开启安全模块的数据信号,一个寄存器的输出信号对应所有高电平有效逻辑门的另一个输入端,另一个寄存器的输出信号对应所有低电平有效逻辑门的另一个输入端。
较佳地,所述逻辑门为与门,所述寄存器为1位寄存器。
一种应用如上所述JTAG模块的调试方法,该方法包括以下步骤当需要对待测芯片进行调试时,首先判断安全模块是否处于开启状态,如果是,则向安全模块的寄存器中写入关闭安全模块的控制字后,进行正常的调试操作,否则,直接进行正常的调试操作。
较佳地,如果安全模块处于关闭状态,该方法进一步包括判断安全模块内寄存器的值是否正常,如果是,则直接进行正常的调试操作,否则向安全模块的寄存器中写入关闭安全模块的控制字后,再进行正常的调试操作。
较佳地,当对待测芯片调试完毕后,该方法进一步包括向安全模块的寄存器中写入开启安全模块的控制字。
较佳地,所述向安全模块的寄存器中写入的控制字能够同时开启或关闭测试访问端口内的一个或一个以上端口。
本发明的核心是在现有的JTAG模块中增加一安全模块,该安全模块能够用控制字的方式控制JTAG模块中的测试访问端口开启或关闭,即在芯片的测试与FIRMWARE的调试开发时,该安全模块处于关闭状态,其不干预芯片的测试与开发流程,在FIRMWARE的调试开发结束后,该安全模块在控制字的操作下进入开启状态,关闭JTAG边界扫描测试结构中的测试访问端口,即封闭JTAG模块中的时钟、输入和或输出信号等端口,从而使攻击者无法利用JTAG模块内的TAP获取SOC芯片内部的数据,进而解决了针对SOC的可测性、可控性及安全性的矛盾。
本发明易于实现,且成本低廉。与人工破坏法相比,本发明的方法实现可靠,且效率高;与消除JTAG法相比,无需进行第二次流片,降低了成本。并且,能够随时方便地对FIRMWARE或芯片进行升级调试操作。


图1所示为现有技术的带有JTAG边界扫描链的芯片的结构示意图;图2所示为现有技术的带有JTAG边界扫描链的芯片的工作原理示意图;
图3所示为本发明的带有JTAG边界扫描链的芯片的结构示意图;图4所示为应用本发明的带有JTAG边界扫描链的芯片的工作原理示意图;图5所示为应用本发明实施例一的安全模块的原理结构图;图6所示为应用本发明实施例二的安全模块的原理结构图;图7所示为应用本发明的开启关闭JTAG模块测试访问端口处理流程图。
具体实施例方式
为使本发明的技术方案更加清楚,下面结合附图及具体实施例再对本发明做进一步详细说明。
本发明的思路是在现有的JTAG模块中增加一安全模块,该安全模块在控制字的控制下,开启或关闭JTAG模块中的测试访问端口,即在芯片测试与FIRMWARE的调试开发时,控制该安全模块处于关闭状态,使其不干预芯片的测试与开发流程,当芯片测试结束,对FIRMWARE的调试开发完成后,通过控制字控制该安全模块进入开启状态,关闭JTAG边界扫描测试结构中的测试访问端口,即封闭JTAG模块中的时钟、输入和或输出信号等端口,从而使攻击者无法利用JTAG模块内的TAP获取SOC芯片内部的数据,进而解决了针对SOC的可测性、可控性及安全性的矛盾。
图3所示为本发明的带有JTAG边界扫描链的芯片的结构示意图。图示虚框内为应用本发明的带有安全模块的JTAG模块,待测芯片的每个引脚通过JTAG模块中的边界扫描寄存器连接于待测芯片的内核逻辑。此时,该JTAG模块中的TAP端口接收到的所有指令或数据,需通过安全模块才能送达相应的寄存器或控制器。这样,在安全模块关闭的情况下,来自TAP端口的指令或信号能够正常到达相应的寄存器或控制器,即通过JTAG边界扫描链能够对芯片进行正常的调试,同时也能获取芯片内部状态、数据等信息;在安全模块开启的情况下,来自TAP端口的指令或数据无法达到相应的寄存器或控制器,即通过JTAG边界扫描链不能对芯片进行调试操作,因而也就不能通过JTAG边界扫描链获取芯片内部状态、数据等信息。
图4所示为应用本发明的带有JTAG边界扫描链的芯片工作原理示意图。本发明的JTAG模块内进一步包括由寄存器模块451和逻辑处理模块452构成的安全模块450,其中,安全模块450内的寄存器模块451,接收来自待测芯片内核逻辑410的片选信号和启闭安全模块数据的信号,并将接收的信号传送给逻辑处理模块452;安全模块450内的逻辑处理模块452,经测试访问端口460接收到的控制指令或数据,并根据来自寄存器模块451的信号对接收到的指令信号进行逻辑处理后,将经逻辑处理后的控制指令传送给测试访问端口控制器460和指令寄存器430,将经逻辑处理后的数据传送给测试数据寄存器组420;或者,安全模块450内的逻辑处理模块452接收来自测试数据寄存器组420的测试结果信息,并根据来自寄存器模块451的信号对该接收到结果信息进行逻辑处理,并将逻辑处理后的结果信息经测试访问端口460传送给外部设备。
测试访问端口控制器440接收来自安全模块的控制指令后,对接收到的指令进行译码,控制边界扫描寄存器进入控制指令所要求的状态,如测试状态、仿真状态或开发状态等,其中,来自安全模块的Inner_TMS端口的指令为测试模式选择指令,来自安全模块的Inner_TCK端口的为时钟信号,来自安全模块的Inner_TRST端口为测试复位指令;指令寄存器430用于接收来自安全模块的Inner_TDI端口的控制指令,并对接收到的控制指令进行寄存;测试数据寄存器组420内数据寄存器用于接收来自安全模块的Inner_TDI端口的数据,并对接收到的数据进行寄存,指令寄存器根据接收到的指令对数据寄存器中的数据进行控制,进而实现对边界扫描寄存器的控制。来自Inner_TDI端口的信号是传送给指令寄存器还是传送给数据寄存器是根据Inner_TMS端口的信号加以区分的;测试数据寄存器组420内的边界扫描寄存器对待测芯片的内核逻辑410进行调试,并由边界扫描寄存器将调试结果经Inner_TDO端口传送给安全模块,再由安全模块通过TDO端口传送给外部设备。这样,在安全模块的控制下,实现开启或关闭测试访问端口的目的。
图5所示为应用本发明实施例一的安全模块的原理结构图。在本实施例中,安全模块中的逻辑处理模块内包括一个以上逻辑门,安全模块中的寄存器模块内包括一个以上寄存器。每个逻辑门的一个输入端分别对应测试访问端口内的一个端口,每个逻辑门的输出端与输入该逻辑门的测试访问端口的信号相对应,即TMS、TDI、TDO、TCK和TRST端口分别对应一个逻辑门的输入端,相应地,每个逻辑门的输出端依次为Inner_TMS、Inner_TDI、Inner_TDO、Inner_TCK和Inner_TRST,每个逻辑门的另一个输入端分别对应寄存器模块内一个寄存器的输出端,每个寄存器分别独立的接收来自待测芯片内核逻辑的片选信号和开启安全模块的数据信号。
参见图5,假设安全芯片中的逻辑处理模块内的逻辑门为“与门”和“或门”,寄存器模块内的寄存器均为1位寄存器,且待测芯片在正常调试期间,测试访问端口内的TMS、TDI、TDO、TCK和TRST端口分别为高、低、低、高、高电平有效,则在调试待测芯片时,向安全模块内的寄存器中分别写入数据信号1、0、0、1、1,使安全模块输出的Inner_TMS、Inner_TDI、Inner_TDO、Inner_TCK和Inner_TRST信号分别与TMS、TDI、TDO、TCK和TRST信号保持相同的电平信号,即关闭安全模块,这样,安全模块对JTAG模块的测试访问端口没有任何影响。当对待测芯片的调试结束时,向安全模块内的寄存器中分别写入数据信号0、1、1、0、0,使安全模块输出的Inner_TMS、Inner_TDI、Inner_TDO、Inner_TCK和Inner_TRST信号分别与TMS、TDI、TDO、TCK和TRST的正常工作信号保持相反的电平信号,即开启安全模块,这样,使得外部的TMS、TDI、TDO、TCK和TRST信号不再起作用,进而到达了封闭JTAG模块的访问测试端口的目的。
图6所示为应用本发明实施例二的安全模块的原理结构图。在本实施例中,安全模块中的逻辑处理模块内包括一个以上逻辑门,安全模块中的寄存器模块内包括两个寄存器。每个逻辑门的一个输入端分别对应测试访问端口内的一个端口,每个逻辑门的输出端与输入该逻辑门的测试访问端口的信号相对应,即TMS、TDI、TDO、TCK和TRST端口分别对应逻辑门的一个输入端,相应地,每个逻辑门的输出端依次为Inner_TMS、Inner_TDI、Inner_TDO、Inner_TCK和Inner_TRST,寄存器模块内一个寄存器的输出信号对应所有低电平有效端口所在逻辑门的另一输入端,另一个寄存器的输出信号对应所有高电平有效端口所在逻辑门的另一输入端,即让所有需要相同电平信号的逻辑门另一输入端口接受同一个寄存器的控制;每个寄存器分别独立接收来自待测芯片内核逻辑的片选信号和开启安全模块的数据信号。
参见图6,在本实施例中,假设安全芯片中的逻辑处理模块内的逻辑门为“与门”和“或门”,寄存器模块内的寄存器均为1位寄存器,且待测芯片在正常调试期间,测试访问端口内的TMS、TDI、TDO、TCK和TRST端口分别为高、低、低、高、高电平有效,则在调试待测芯片时,向安全模块内的寄存器中分别写入数据信号1、0,使安全模块输出的Inner_TMS、Inner_TDI、Inner_TDO、Inner_TCK和Inner_TRST信号分别与TMS、TDI、TDO、TCK和TRST信号保持相同的电平信号,即关闭安全模块,这样,安全模块对JTAG模块的测试访问端口没有任何影响。当对待测芯片的调试结束时,向安全模块内的寄存器中分别写入数据信号0、1,使安全模块输出的Inner_TMS、Inner_TDI、Inner_TDO、Inner_TCK和Inner_TRST信号分别与TMS、TDI、TDO、TCK和TRST的正常工作信号保持相反的电平信号,即开启安全模块,使外部的TMS、TDI、TDO、TCK和TRST信号不再起作用,进而到达了封闭JTAG模块的访问测试端口的目的。
以上所述仅为安全芯片的两种具体实施方式
,但并不限于此,安全模块可以有多种实现方式,只要保证通过向寄存器中写入不同的控制字达到同时开启、关闭JTAG模块中测试访问端口内的一个或一个以上端口的目的即可。例如,安全模块中的寄存器模块可以用1位寄存器也可以用多位寄存器,该寄存器可以控制多条信号线,也可以只控制其中1条信号线,只要达到通过软件实现开启、关闭JTAG内测试访问端口中的一个或一个以上端口的目的即可。
图7所示为应用本发明的开启关闭JTAG模块测试访问端口处理流程图。
步骤701,系统启动并初始化;步骤702,系统检测安全模块内的寄存器设定值;步骤703,用户根据检测得到的设定值输入启动或关闭安全模块的信息,系统根据用户输入的信息判断是否启动安全模块,如果是,则执行步骤707,否则执行步骤704;步骤704,根据安全模块内的寄存器的设置值,判断安全模块当前是否处于正常关闭状态,如果是,则执行步骤706,否则执行步骤705;步骤705,向安全模块的寄存器中写入关闭安全模块的控制字;步骤706,对FIRMWARE和芯片进行调试,调试完毕后执行步骤709;步骤707,向安全模块的寄存器中写入开启安全模块的控制字;步骤708,判断通过JTAG内的测试访问端口是否能够检测芯片内部状态、数据等信息,如果是,重新执行步骤707,否则执行步骤709;步骤709,结束本流程。
至此,本流程保证了在安全模块关闭的状态下,JTAG的测试访问端口能够正常工作,即通过JTAG的测试访问端口能够获取芯片内部状态、数据等信息;在安全模块开启的状态下,JTAG内的测试访问端口不可用,即不能通过JTAG的测试访问端口获取芯片内部状态、数据等信息。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种JTAG模块,至少包括测试访问端口460,测试访问端口控制器440、指令寄存器430和包含边界扫描寄存器的测试数据寄存器组420,其特征在于,该JTAG模块进一步包括由寄存器模块451和逻辑处理模块452构成的安全模块450,其中,所述寄存器模块451,接收来自待测芯片内核逻辑410的片选信号和启闭安全模块的数据信号,并将接收的信号传送给逻辑处理模块452;所述逻辑处理模块452,经测试访问端口460接收来自外部设备的控制指令或数据,并根据来自寄存器模块451的信号对接收到的指令进行逻辑处理后,将逻辑处理后的控制指令传送给测试访问端口控制器440和指令寄存器430,将逻辑处理后的数据传送给测试数据寄存器组420;或者,接收来自测试数据寄存器组420的测试结果信息,并根据来自寄存器模块451的信号将该接收到结果信息进行逻辑处理后,将逻辑处理后的结果信息经测试访问端口460传送给外部设备。
2.根据权利要求1所述模块,其特征在于,所述测试访问端口内包括一个以上端口,所述逻辑处理模块内包括一个以上逻辑门,所述寄存器模块内包括一个以上寄存器,所述寄存器模块内的每个寄存器分别独立接收来自待测芯片内核逻辑的片选信号和开启安全模块的数据信号,每个寄存器的输出信号分别对应逻辑处理模块内一个逻辑门的一个输入端,逻辑处理模块内每个逻辑门的另一输入端分别对应测试访问端口内的一个端口的信号。
3.根据权利要求1所述模块,其特征在于,所述测试访问端口内包括一个以上端口,所述逻辑处理模块内包括一个以上逻辑门,所述寄存器模块内包括两个寄存器,所述逻辑处理模块内每个逻辑门的一个输入端分别对应测试访问端口内一个端口的信号,所述寄存器模块内的每个寄存器分别独立接收来自待测芯片内核逻辑的片选信号和开启安全模块的数据信号,一个寄存器的输出信号对应所有高电平有效逻辑门的另一个输入端,另一个寄存器的输出信号对应所有低电平有效逻辑门的另一个输入端。
4.根据权利要求2或3所述模块,其特征在于,所述逻辑门为与门,所述寄存器为1位寄存器。
5.一种应用权利要求1所述JTAG模块的调试方法,其特征在于,该方法包括以下步骤当需要对待测芯片进行调试时,首先判断安全模块是否处于开启状态,如果是,则向安全模块的寄存器中写入关闭安全模块的控制字后,进行正常的调试操作,否则,直接进行正常的调试操作。
6.根据权利要求5所述的方法,其特征在于,如果安全模块处于关闭状态,该方法进一步包括判断安全模块内寄存器的值是否正常,如果是,则直接进行正常的调试操作,否则向安全模块的寄存器中写入关闭安全模块的控制字后,再进行正常的调试操作。
7.根据权利要求5或6所述的方法,其特征在于,当对待测芯片调试完毕后,该方法进一步包括向安全模块的寄存器中写入开启安全模块的控制字。
8.根据权利要求7所述的方法,其特征在于,所述向安全模块的寄存器中写入的控制字能够同时开启或关闭测试访问端口内的一个或一个以上端口。
全文摘要
本发明提供了一种JTAG模块,其核心是在JTAG模块中增加一安全模块,该安全模块接收JTAG模块中测试访问端口(TAP)的指令,并将接收到的指令传送给相应的寄存器或测试访问端口控制器。同时,本发明还提供了一种应用上述JTAG模块的调试方法,当需要调试时,首先将安全模块关闭,然后再进行正常的调试工作,此时安全模块不干预芯片的测试与开发流程从,当调试工作完成后,开启安全模块,从而关闭JTAG边界扫描测试结构中的测试访问端口,即封闭JTAG接口中的时钟,输入,输出信号,从而使攻击者无法利用JTAG口获取SOC芯片内部的数据,因而解决了针对SOC的可测性与可控性及安全性的矛盾。
文档编号G01R31/28GK1661385SQ20041000319
公开日2005年8月31日 申请日期2004年2月26日 优先权日2004年2月26日
发明者谢巍, 王新成 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1