发明内容
本发明的目的是提供一种半导体集成电路及其控制方法,其能够缩短半导体集成电路内部状态的保存和恢复时间,同时将电路设定成等待状态。
在本发明的一个方面,一种半导体集成电路包括:目标(target)电路,该目标电路至少带有具有子扫描链级的扫描链,用于在扫描通路测试模式中响应于时钟信号依次移位测试数据,并且每个子扫描链包括串联连接的第一触发器。备份控制电路控制目标电路和存储器,使得在保存模式中,通过子扫描链,将指出目标电路内部状态的多个子内部状态数据存储在存储器中,作为多个写入数据,并且在恢复模式中将多个子内部状态数据从存储器中读出作为多个读取数据,并且设定在子扫描链中。
这里,存储器可以包含在半导体集成电路中。
此外,半导体集成电路可以包括总线接口部分。备份控制电路控制目标电路和存储器,使得在保存模式中,通过子扫描链将多个子内部状态数据提取并且通过总线接口部分将多个子内部状态数据存储到存储器中,作为多个写入数据,并且在恢复模式中,通过总线接口部分,将多个子内部状态数据从存储器中读出,作为多个读取数据。
此外,多个子扫描链中的每一个可以包括:选择器部分,其被构成为用于选择多个输入数据中的一个,该输入数据包括:从前一级子扫描链输出到当前级子扫描链的作为多个写入数据中的一个的前一级写入数据、和对应于当前级子扫描链的作为多个读取数据中的一个的当前级读取数据;以及,第一触发器,其串联连接在选择器部分之后,并且被构成为用于响应于时钟信号,对选择器部分的所选数据进行移位。
此外,选择器部分可以选择下述内容中的一个:前一级写入数据、当前级读取数据、和从当前级子扫描链输出作为多个写入数据中的一个的当前级写入数据。
在这种情况下,选择器部分可以包括:第一选择器电路,其被构成为用于选择当前级读取数据和当前级写入数据中的一个;以及,第二选择器电路,其被构成为用于选择前一级写入数据和第一选择器电路的所选数据中的一个。
此外,优选的是,在多个子扫描链上第一触发器的数目相同。
此外,当多个子扫描链的第一触发器的数目不同时,可以基于子扫描链的第一触发器数目,确定提供给多个子扫描链中每一个的时钟信号的脉冲数目。
此外,半导体集成电路还可以包括:第二触发器,其添加到多个子扫描链中的某些子扫描链,使得在多个子扫描链上触发器的数目变成相同。这种情况下,可以将至少一个第二触发器添加在第一触发器之后,并且可以添加在选择器部分之前。
此外,多个子扫描链可以在相同时间将多个写入数据输出到存储器。
此外,半导体集成电路还可以包括:开关,其被构成为用于当响应于第一控制信号接通开关时向目标电路供电,并且当响应于第二控制信号关断开关时停止电源。这种情况下,在将内部状态数据存储在存储器中之后,备份控制电路向开关发出第二控制信号。
此外,在将内部状态数据设定到多个子扫描链之后,备份控制电路可以向开关发出第一控制信号。
在本发明的第二个方面,通过以下方式获得了半导体集成电路的操作方法:选择目标电路扫描链中多个子扫描链的每一个子扫描链中的多个输入数据中的一个,该目标电路在扫描通路测试模式中响应于时钟信号依次移位测试数据;在保存模式中,将来自多个子扫描链的、指出目标电路内部状态数据的多个子内部状态数据存储到存储器中,作为多个写入数据;以及,在恢复模式中,将多个子内部状态数据从存储器读出,作为多个读取数据,用于设定到多个子扫描链中。
这里,在保存模式中,通过总线接口部分,将多个子内部状态数据作为多个写入数据保存到存储器中,作为多个写入数据,可以实现存储。在恢复模式中,通过总线接口部分,将多个子内部状态数据从存储器读出,作为多个读取数据用于设定到子扫描链,可以实现读出。
此外,当多个输入数据包括前一级写入数据和当前级读取数据时,选择前一级写入数据和当前级读取数据中的一个,该前一级写入数据是从前一级子扫描链输出到当前级子扫描链,作为多个写入数据中的一个,该当前级读取数据对应于当前级子扫描链,作为多个读取数据中的一个。
此外,当多个输入数据包括前一级写入数据、当前级读取数据、和当前级写入数据时,可以通过选择前一级写入数据、当前级读取数据、和当前级写入数据中的一个来实现选择,该前一级写入数据是从前一级子扫描链输出到当前级子扫描链,作为多个写入数据中的一个,该当前级读取数据对应于当前级子扫描链,作为多个读取数据中的一个,并且该当前级写入数据是从当前级子扫描链输出,作为多个写入数据中的一个。
此外,可以通过以下方式实现操作方法:在将内部状态数据设定到多个子扫描链之后,进一步发出第一控制信号;以及,响应于第一控制信号,向目标表面供电。
此外,可以通过以下方式实现操作方法:在将内部状态数据存储在存储器中之后,进一步发出第二控制信号;以及,响应于第二控制信号,停止目标电路的电源。
具体实施方式
下文中将参考附图对本发明的半导体集成电路进行说明。
图1是表示根据本发明第一实施例的半导体集成电路构成的框图。参考图1,该半导体集成电路包括:目标电路11,其内部状态被作为内部状态数据进行保存;备份存储器13,其存储目标电路11的内部状态数据;备份控制电路12,其控制目标电路11内部状态数据的保存操作和恢复操作;以及,开关14,其控制目标电路11的电源。基于在目标电路11中由触发器保持的内部状态数据,恢复该目标电路11的内部状态。
备份控制电路12接收来自目标电路11的指令(WFI),切换该目标电路11的操作模式(MD),并且保存指出目标电路11内部状态的数据,即备份存储器13中的内部状态数据。此外,该备份控制电路12响应于外部中断信号(INT)而启动,用以将备份存储器13中存储的内部状态数据设定到目标电路11,并且用以恢复目标电路11的内部状态。在该内部状态的保存/恢复操作中,备份控制电路12控制备份存储器13的存储地址(ADDR)和目标电路11的写入/读取定时(CTR)。
目标电路11的电源系统与集成电路中的其它电路分开。因此,可以仅关断目标电路11的电源。开关14基于由备份控制电路12控制(PWC)接通/关断电源。
备份存储器13保持指出目标电路11内部状态的内部状态数据。备份存储器13具有用于目标电路11内部状态数据的足够的容量。将数据宽度(字长)加宽,以有效地获得内部节点数据(TO)。例如,当有32个扫描链时,如果从32个扫描链中的每个链获得4个位置的内部状态数据,那么每扫描时钟要并行输出128比特的数据。因此,在备份存储器13中需要128比特或更大的字长。从备份控制电路12给出备份存储器13的读取/写入操作定时CTR和地址ADDR。备份存储器13具有高阈值电压和低漏电流。因此,尽管备份存储器13的操作速度不是很快,但是功耗很少。而且,如果将例如闪速存储器的非易失性存储器用于备份存储器13,则可以在待机状态下将备份存储器13的电源关断,以减小功耗。
向和从扫描链15提供和输出指出目标电路11内部状态的内部状态数据。将扫描链15用于检查半导体集成电路非缺陷性(non-defectiveness)的扫描通路。当在扫描通路测试模式中测试该扫描通路时,扫描链15接收到来自串行的扫描输入SI的测试数据并且从扫描输出SO输出测试结果。尽管在这里没有描述,但是备份控制电路12和备份存储器13可以作为扫描通路测试的目标。
目标电路11是具有在保存模式中应当在待机状态保持的内部状态。该目标电路11在其中包括用于扫描通路测试的电路,以检测目标电路11的产品缺陷。在这样用于扫描通路测试的电路中,在测试执行时,以链型连接触发器,以形成移位寄存器。这样的移位寄存器就是通常所说的扫描链。在目标电路11中,至少设定一个扫描链15。尽管在最近的半导体集成电路中设定了32个扫描链15,但是可以设定更多的扫描链,或者可以仅仅设定一个扫描链。向每个扫描链15的扫描输入SI(SI1到SIn到SIN)提供用于扫描通路测试的串行数据,并且从其扫描输出SO(SO1到Son到SON)串行地输出扫描通路测试结果数据。向/从每个扫描链输入/输出的串行数据不必是同步的,并且各个扫描链可以单独操作。下文中,作为例子,将按照具有扫描输入SIn和扫描输出Son(n=1、2、……N)的电路描述扫描链15。
在目标电路11中,当内部逻辑电路操作时,保持包括在逻辑电路中的依次(sequential)电路(触发器)的操作状态。也就是说,触发器保持目标电路11的内部状态。保持在这些触发器中的内部状态数据可以作为目标电路11的内部状态数据进行保存,并且可以通过将内部状态数据设定到这些触发器来恢复目标电路11的内部状态。另一方面,当测试扫描通路时,触发器形成扫描链15,并且可以串行输出保持的数据。此外,扫描链15串行地接收数据,并且将扫描通路测试的数据设定到触发器。因此,通过使用扫描链15可以读取和写入触发器的状态。
基于备份控制电路12的控制,目标电路11将来自多个扫描链15中的扫描输出SO作为数据TO输出到备份存储器13。当在目标电路11的全部触发器中保持的数据都输出时,目标电路11的内部状态就保存在了备份存储器13中。而且,目标电路11基于备份控制电路12的控制,取得从备份存储器13输出的数据TI并且将数据设定到扫描链15。当把数据设定到扫描链15中时,就恢复了目标电路11的内部状态。当目标电路11从恢复状态切换到正常操作状态时,该目标电路11返回正常操作。
图2表示当扫描链有效时的扫描链15的构成。扫描链15是由在扫描测试是连接的多个移位寄存器组成的电路。该链分割成子扫描链(scan chain)。也就是说,扫描链15包括多个子扫描链。在本例中,假设扫描链15包括四个子扫描链21、22、23和24。子扫描链21、22、23和24分别包括相同数目的触发器。当测试扫描通路时,子扫描链21、22、23和24层叠连接并且作为一个扫描链15操作。当内部状态数据被作为多个子内部状态数据接收时,子扫描链21、22、23和24并行操作,并且同时接收这多个子内部状态数据。子扫描链21包括选择器电路210和触发器211至214。类似的,子扫描链22包括选择器电路220和触发器221至224,子扫描链23包括选择器电路230和触发器231至234,并且子扫描链24包括选择器电路240和触发器241至244。选择器电路210、220、230和240中的每一个基于选择信号TB,来选择并且输出两个输入信号中的一个。
在子扫描链21中,选择器电路210接收来自备份存储器13的扫描输入Sin和子内部状态数据TI1。当测试扫描通路时,选择器电路210选择和输出来自扫描输入Sin的数据,并且当恢复内部状态数据时,选择器电路210响应于选择信号TB,选择并且输出子内部状态数据TI1。触发器211至214以链型方式连接,以形成移位寄存器,并且接收选择器电路210的输出。将触发器214的输出连接作为子内部状态数据TO1,并且发送到后一级中的子扫描链22。
在该子扫描链22中,选择器电路220接收来自前一级中的子扫描链21的子内部状态数据TO1和来自备份存储器13的当前级的子内部状态数据TI2。基于选择信号TB,当测试扫描通路时,选择器电路220选择并且输出来自前一级的子内部状态数据TO1,并且当恢复子内部状态数据时,选择器电路220选择并且输出来自存储器13的子内部节点数据TI2。触发器221至224以链型方式连接,以形成移位寄存器,并且接收选择器电路220的输出。将触发器224的输出连接作为子内部状态数据TO2,并且发送到后一级中的子扫描链23。
类似的,在子扫描链23中,选择器电路230接收来自前一级中子扫描链22的子内部状态数据TO2和来自备份存储器13的子内部状态数据TI3。基于选择信号TB,当测试扫描通路时,选择器电路230选择并且输出来自前一级的输出数据TO2,并且当恢复内部状态时,选择器电路230选择并且输出来自存储器13的子内部状态数据TI3。触发器231至234以链型方式连接,以形成移位寄存器,并且接收选择器电路230的输出。将触发器234的输出连接作为子内部状态数据TO3,并且发送到后一级中的子扫描链24。
类似的,在子扫描链24中,选择器电路240输入来自前一级中子扫描链23的输出数据TO3和来自备份存储器13的内部状态数据TI4。基于选择信号TB,当测试扫描通路时,选择器电路240选择并且输出来自前一级的输出数据TO3,并且当保存/恢复内部状态时,选择器电路240选择并且输出来自存储器13的内部状态数据TI4。触发器241至244以链型方式连接,以形成移位寄存器,并且接收选择器电路240的输出。将触发器244的输出作为内部状态数据TO4输出,并且作为扫描链15的输出Son输出。
接下来,将说明扫描链15的操作。当执行目标电路11的原始功能时,触发器211至214、触发器221至224、触发器231至234、和触发器241至244作为内部逻辑电路的寄存器保持目标电路11的内部状态作为内部状态数据。
如图2中所示,在扫描通路测试时,将目标电路11中的触发器连接,以形成扫描链15。事实上,切换在触发器中建立的选择电路(未示出)的信号选择,以形成扫描链。将选择器电路210、220、230和240设定为响应于选择信号TB来在扫描链侧选择数据。因此,包含在子扫描链21至24中的触发器形成移位寄存器。同步于扫描时钟信号,从扫描输入Sin接收扫描数据并且在触发器中朝着扫描输出Son依次移位。当将扫描数据设定到全部触发器时,每个触发器从扫描链15释放一次,并且取得目标电路11中原始内部逻辑电路的数据。这时,由于每个触发器输出扫描数据,因此每个触发器保持扫描通路测试的结果。然后,触发器返回扫描链15。移位寄存器基于扫描时钟,输出来自扫描输出Son的扫描通路测试结果。
当在保存模式中保存内部状态数据时,将扫描链15设定为使得子扫描链21至24并行操作。在本例中,将选择信号TB设定为选择备份存储器13的子内部状态数据(TI),尽管也可以将其设定为另一种。当测试扫描通路时,以相同的方式,同步于时钟信号将保持在触发器中的内部状态数据并行依次输出到备份存储器13,作为子扫描链的子内部状态数据TO1至TO4。同步于时钟信号由备份控制电路12更新备份存储器13的地址ADDR。接着,将子扫描链的子内部状态数据TO1至TO4依次存储在备份存储器13中。如果子内部状态数据输出了子扫描链触发器的数目,则针对备份存储器13的该扫描链15的整个内部状态数据保存操作完成。因此,和仅仅将扫描链15的内部状态数据Son和存储器13连接的情况相比,输出时间可以缩短。如图2所示,当把扫描链15分成四个子扫描链21至24时,输出时间减小到1/4。
当恢复内部状态数据时,即,当把保持在备份存储器13中的子内部状态数据设定到原始触发器中时,将扫描链15设定为使得子扫描链21至24并行操作。将选择信号TB设定为选择来自备份存储器13的子内部状态数据TI。将子内部状态数据TI1至TI4从备份存储器13提供到子扫描链21至24。备份控制电路12同步于时钟信号从缺省值更新备份存储器13的地址ADDR,从而按照保存的次序将子内部状态数据TI1至TI4提供到子扫描链21至24。通过选择器电路210、220、230和240,将提供到子扫描链21至24中的子内部状态数据TI1至TI4在移位寄存器的子扫描链上朝着输出TO1至TO4移位。当子内部状态数据TI1至TI4移位了子扫描链中触发器数目时,就将原始内部状态数据设定到触发器中。这样,就恢复了目标电路11的内部状态。然后,当结束该恢复操作时,目标电路11返回到正常操作。
参考图3,将描述半导体集成电路的操作,其中通过使用扫描链或子扫描链将内部状态数据保存在备份存储器13中,并且从备份存储器13恢复内部状态数据。这里,假设目标电路11是建立在半导体集成电路中的中央处理单元(CPU),并且将描述由CPU执行的软件处理状态作为该目标电路11的状态。在图3的左侧示出了半导体集成电路在软件方面的操作状态。在图3的右侧示出了半导体集成电路在硬件方面目标电路11、备份控制电路12和备份存储器13的操作状态。
由于在正常操作中的周期性处理、人机接口处理和类似处理,有时候将半导体集成电路设定为待机状态。这时,CPU11执行“等待中断”指令并且进入等待状态。通常,在该等待状态中将停止软件的执行。这种情况下,为了减小功耗,硬件将电源电压减小到待机电压的。当接收到指令恢复处理的中断信号INT时,硬件可以立即重新开始软件的执行。为了减小功耗,根据本发明由图3中点划线包围部分所示,停止CPU11的电源,并且减小等待状态中的漏电流。由于当关断CPU11的电源时CPU11的内部状态被复位,因此在关断电源之前将CPU11的内部状态保存在备份存储器13中。
当向备份控制电路12提供中断信号INT以使CPU11重新启动时,CPU11的电源接通。从备份存储器13中恢复CPU11的内部状态,并且重新开始软件的执行。由于接收到中断信号INT,软件首先执行中断处理,并且然后返回到常规处理。因此,不管电源是接通/关断,软件执行就好像保持等待状态。也就是说,因为目标电路(CPU)11处于常规操作状态一直到发出WFI指令并且然后软件响应于该WFI指令而停止,因此内部状态是冻结的。当发出WFI指令时,从等待状态中激活备份控制电路12和备份存储器13。备份控制电路12将目标电路(CPU)11设定到组成扫描链的保存状态。备份控制电路12将冻结的目标电路(CPU)11的内部状态数据保存到备份存储器13中。当保存了目标电路(CPU)11的整个内部状态数据时,备份控制电路12控制开关14,使得目标电路(CPU)11的电源停止。备份控制电路12变为等待状态直到接收到中断信号INT。由于备份控制电路12和备份存储器13的电路尺寸要小于目标电路(CPU)11,因此漏电流减小,从而减小了功耗。
当接收到中断信号INT时,备份控制电路12从等待状态返回到操作状态。首先,备份控制电路12控制开关14,以重新启动目标电路(CPU)11的电源。然后,备份控制电路12将目标电路(CPU)11设定到组成扫描链的恢复状态。备份控制电路12将内部状态数据TI从备份存储器13提供到子扫描链,并且恢复目标电路11的内部状态。当目标电路(CPU)11的内部状态恢复到原始状态时,备份控制电路12从恢复状态释放目标电路(CPU)11,并且激活目标电路(CPU)11。这样,目标电路(CPU)11重新开始操作。备份控制电路12和备份存储器13进入到等待状态直到接下来发出下WFI指令。这里,尽管将CPU作为目标电路11进行描述,但是目标电路11并且不限于CPU,并且可以是随机逻辑电路。为此,将串行数据发送到子扫描链21至24,并且重新创建内部状态。结果,缩短了恢复时间。如上所述,根据本发明,可以实现更短时间的内部状态保存/恢复,并且可以减小在等待状态中的漏电流。
图4是表示根据本发明第二实施例的用于缩短最小恢复时间的半导体集成电路中扫描链构成的框图。最小恢复时间是当开始保存内部状态数据之后立刻指示内部状态数据恢复时、恢复目标电路初始状态所需的时间。在图4中所示的扫描链15中,为在图2中所示的子扫描链21至24的头部提供选择器电路。该扫描链15包括子扫描链31、32、33和34。该子扫描链31包括选择器电路319和310以及触发器311至314。类似的,子扫描链32包括选择器电路329和320以及触发器321至324。子扫描链33包括选择器电路339和330以及触发器331至334,并且子扫描链34包括选择器电路349和340以及触发器341至344。扫描链15除了选择器电路319、329、339和349以外的部分和在图2中所示的扫描链相同。
选择器电路319、329、339和349基于选择信号BR,选择从备份存储器13提供的所保存的子内部状态数据TI、或从子扫描链输出的子内部状态数据TO,并且向选择器电路310、320、330和340输出所选的数据。在子扫描链31中,选择器电路319接收从备份存储器13提供的子内部状态数据TI1和从子扫描链31输出的子内部状态数据TO1。基于选择信号BR,选择器电路319在保存内部状态时选择子内部状态数据TO1,并且在恢复内部状态时选择并且输出所保存的子内部状态数据TI1。选择器电路310接收扫描输入SIn和来自选择器电路319的输出数据。基于选择信号TB,选择器电路310在测试扫描通路时选择扫描输入数据SIn,并且在保存和恢复内部状态数据时选择来自扫描链319的输出数据。触发器311至314以链型连接,以形成移位寄存器,并且接收来自选择器电路310的输出数据。来自触发器314的输出数据作为子内部状态数据TO1输出,并且发送到在后一级中的子扫描链32。
在子扫描链32中,选择器电路329接收从备份存储器13提供的子内部状态数据TI2和从子扫描链32输出的子内部状态数据TO2。基于选择信号BR,选择器电路329在保存内部状态时选择子内部状态数据TO2,并且在恢复内部状态数据时选择所保存的子内部状态数据TI2。选择器电路320接收来自前级(former stage)中子扫描链31的子内部状态数据TO1和来自选择器电路329的输出数据。基于选择信号TB,选择器电路320在测试扫描通路时选择来自前一级的输出数据TO1,在保存和恢复内部状态数据时选择选择器电路329的输出数据。触发器321至324以链型连接,以形成移位寄存器,并且接收来自选择器电路320的输出数据。将来自触发器324的输出数据作为子内部状态数据TO2输出,并且发送到在后一级中的子扫描链33。
类似的,在子扫描链33中,选择器电路339接收从备份存储器13提供的子内部状态数据TI3和从子扫描链33输出的子内部状态数据TO3。基于选择信号BR,选择器电路339在保存内部状态时选择子内部状态数据TO3,并且在恢复内部状态数据时选择所保存的子内部状态数据TI3。选择器电路330接收来自前一级中子扫描链32的输出数据TO2和来自选择器电路339的输出数据。基于选择信号TB,选择器电路330在测试扫描通路时选择来自前一级的输出数据TO2,在保存和恢复内部状态数据时选择来自选择器电路339的输出数据。触发器331至334以链型连接,以形成移位寄存器,并且接收来自选择器电路330的输出数据。将来自触发器334的输出数据作为子内部状态数据TO3输出,并且发送到在后一级中的子扫描链34。
类似的,在子扫描链34中,选择器电路349接收从备份存储器13提供的子内部状态数据TI4和从子扫描链34输出的子内部状态数据TO4。基于选择信号BR,选择器电路349在保存内部状态时选择子内部状态数据TO4,并且在恢复内部状态数据时选择所保存的子内部状态数据TI4。选择器电路340接收来自前一级中子扫描链33的输出数据TO3和来自选择器电路349的输出数据。基于选择信号TB,选择器电路340在测试扫描通路时选择来自前一级的输出数据TO3,并且在保存和恢复内部状态数据时选择来自选择器电路349的输出数据。触发器341至344以链型连接,以形成移位寄存器,并且接收来自选择器电路340的输出数据。将触发器344的输出作为子内部状态数据TO4输出,并且作为扫描链5的输出Son输出。
将参考图5A、5B和5C描述扫描链15的操作。当没有形成扫描链时,触发器311至314、触发器321至324、触发器331至334和触发器341至344保持目标电路11的内部状态。
如图5A所示,当测试扫描通路时,在目标电路11中的触发器形成扫描链。在本例中,选择信号TB设定为选择用于扫描通路测试的数据。但是,由于选择信号BR的设定并且不影响数据的通路,因此两者都是可接受的。触发器311至314、触发器321至324、触发器331至334和触发器341至344形成一个连续的移位寄存器。如图5A中粗线所示,从扫描输入SIn提供用于扫描通路测试的数据,并且将该数据在触发器中依次移位并且设定到每个触发器。当把用于扫描通路测试的数据设定到每个触发器中时,扫描链就释放一次,并且执行内部逻辑电路的操作检查。在每个触发器中取得结果,并且然后再次形成扫描链。在触发器中移位设定到每个触发器的检查结果,并且依次从扫描输出Son输出。这样,在扫描通路测试中接收和输出了数据。
接下来,参考图5B,将描述将目标电路11的内部状态数据保存到备份存储器13的保存操作。在内部状态数据的保存操作情况中,基于选择信号TB,将选择器电路310、320、330和340设定为分别选择从选择器电路319、329、339和349输出的数据。将选择信号BR设定为选择来自子扫描链31至34的输出数据TO1至TO4。也就是说,如图5B中粗线所示,子内部状态数据在每个子扫描链中移位,以进行循环。因此,当由子扫描链31保持的整个子内部状态数据作为子内部状态数据TO1输出时,将原始的子内部状态数据设定到触发器311至314中。类似的,在子扫描链32、33和34中,当输出整个子内部状态数据之后,触发器321至324、触发器331至334和触发器341至344保持原始的子内部状态数据。这也正是子内部状态数据的保存操作和恢复操作所同时进行的。例如,当提供中断信号INT时目标电路11的内部状态数据保存在备份存储器13中,因此必需开始恢复操作,当保存操作完成时,可以重新开始目标电路的该操作。在图2中所示的扫描链15的构成中,当保存操作一旦开始,则将整个内部状态数据保存在备份存储器13中,并且然后必需将子内部状态数据从备份存储器13中恢复到扫描链15。另一方面,由于子扫描链31至34的子内部状态数据TO1至TO4是循环的,所以在完成保存操作之后可以立即恢复目标电路11的正常操作。因此,可以缩短从保存操作开始到恢复操作结束的时间周期。
将参考图5C描述从存储在备份存储器13中的子内部状态数据恢复目标电路11内部状态的恢复操作。如参考图5B所述,将目标电路11内部状态数据的子内部状态数据依次存储在备份存储器13中。当在目标电路11中恢复该内部状态数据时,基于选择信号TB,将选择器电路310、320、330和340设定为分别选择从选择器电路319、329、339和349输出的数据。选择信号BR设定为,使得选择器电路319、329、339和349选择从备份存储器13输出的子内部状态数据TI。也就是说,如图5C中粗线所示,将从备份存储器13提供的子内部状态数据TI1在子扫描链31上移位并且设定到触发器311至314。类似的,将子内部状态数据TI2在子扫描链32上移位并且设定到触发器321至324。将子内部状态数据TI3在子扫描链33上移位并且设定到触发器331至334。将子内部状态数据TI4在子扫描链34上移位并且设定到触发器341至344。以这种方式,将保持在备份存储器13中的子内部状态数据存储在触发器311至314、触发器321至324、触发器331至334和触发器341至344中,并且目标电路11返回到原始内部状态。然后,释放扫描链并且目标电路11返回到正常操作。
如上所述,尽管在假设子扫描链具有相同数目的触发器的情况下已经对其进行了描述,但是在扫描链15中的触发器不必是子扫描链数目的倍数。因此,当包含在每个子扫描链中的触发器的数目不同时,就要求插入虚设触发器,用于暂时保存内部状态数据,从而在子扫描链中的触发器数目是相同的。将每个子扫描链组成为使得对具有相同数目触发器的子扫描链在相同时间将数据输出到备份存储器。在这种情况下,插入的虚设触发器的数目可以是几个。而且,通过改变用于每个子扫描链的移位时钟的数目,可以保存/恢复带有不同数目触发器的子扫描链的内部状态数据。
图6是表示在根据本发明第三实施例的半导体集成电路中包含虚设触发器的扫描链15的例子的框图。该虚设触发器属于另一个扫描链,并且当测试该扫描通路时作为该另一个扫描链的一部分操作。在图6中所示的扫描链15不包括在图2中所示的扫描链的触发器224和241。也就是说,在子扫描链22和24中包含的触发器的数目少于在图6中所示的扫描链15中的子扫描链21和23的触发器数目。在子扫描链22中,将不包含在扫描链15中的触发器224’(下文中称为“虚设触发器”)连接在触发器223后面。因此,触发器223连接有虚设触发器224’和在后一级中子扫描链23的选择器电路230。虚设触发器224’将来自触发器223的数据输出到备份存储器13。此外,在子扫描链24中,虚设触发器241’连接有选择器电路240。将从备份存储器13输出的子内部状态数据TI4提供到虚设触发器241’。将虚设触发器241’的输出通过选择器电路240到组成移位寄存器的触发器242至244。这样,通过将虚设触发器224’和241’与子扫描链22和24连接,形成了包含和在子扫描链21和23中相同数目触发器的子扫描链22’和24’。因此,子扫描链21、22’、23和24’变成可以向备份存储器13输出相同数目的子内部状态数据。而且,子扫描链21、22’、23和24’变成可以从备份存储器13中取得相同数目的子内部状态数据,并且可以将其设定到每个触发器。这里,尽管已经描述了对于子扫描链超出和缺少的触发器数目是1,但是也可以是多个。而且,即使虚设触发器连接在原有子扫描链前面和/或后面,该虚设触发器也可以类似地操作。此外,第二选择器电路位于连接有虚设触发器的子扫描链的头部,并且如图4中所示,其同样可以将每个子扫描链的输出反馈到头部。
以这种方式,可以通过连接虚设触发器,可以调节当测试扫描通路时在扫描链中不包括虚设触发器的子扫描链中包含的触发器的数目。该虚设触发器可以包含在带有备份控制电路的扫描链中,并且可以防止对目标电路的扫描通路测试的影响。
接下来,将参考图7描述根据本发明第四实施例的半导体集成电路。在第二实施例中,将描述与第一实施例不同的扫描链和备份存储器之间的接口例子。该半导体集成电路包括:目标电路11、备份存储器13、备份控制电路12、开关14、和总线接口电路16。目标电路11时保存内部状态的电路,并且电源由开关14控制。通过备份控制电路12控制开关14。通过总线接口电路16,将目标电路11的内部状态放在系统总线18上并且保存在备份存储器13中。此外,将存储在备份存储器13中的内部状态放在系统总线18上,并且通过总线接口电路16恢复到目标电路11。由备份控制电路12控制目标电路11的内部状态的保存/恢复操作。
该目标电路11的构成和操作和在图1中所示电路相同。因此,当测试扫描通路时,将保持在扫描链15中的内部状态作为扫描输出SO输出。当保存目标电路11的内部状态时,通过通路分割的子扫描链,将保持在扫描链15中的内部状态数据发送到总线接口电路16。这时,优选地以和在总线接口电路16中总线数据宽度相同的数据宽度将内部状态数据发送到总线接口电路16。总线接口电路16通过调节信号电平和内部状态数据的定时,将内部状态数据输出到系统总线18上。备份存储器13从系统总线18中取得内部状态数据,并且将与其同步地存储该数据。从备份控制电路12提供备份存储器13的地址ADDR。
当恢复目标电路11的内部状态时,基于从备份控制电路12输出的地址ADDR,将存储在备份存储器13中的内部状态数据读出,并且发送到系统总线18。总线接口电路16从系统总线中取得内部状态数据,并且与其同步地将子内部状态数据提供到目标电路11的子扫描链作为数据TI。总线接口电路16调节从系统总线18取得子内部状态数据的定时、信号电平的转换等。子扫描链执行在第一实施例中所述的操作。
这样,通过系统总线18,将子内部状态数据TO存储在备份存储器13中。进一步地,通过系统总线18,将存储在备份存储器13中的子内部状态数据作为内部状态数据TI提供到目标电路11。这样,目标电路11返回到原始内部状态。
通过经系统总线18保存目标电路11的内部状态数据并且从备份存储器13中回复它,半导体集成电路也可以使用连接到系统总线18的系统存储器的一部分作为备份存储器。这种情况下,备份控制电路12基于系统总线18的接口规范,访问该存储器。
此外,如果备份存储器13是可以通过系统总线18访问的,则该备份存储器13可以在带有目标电路11的半导体集成电路外部。也就是说,通过由通用接口的支持,用作备份存储器的存储器选择的自由度提高了。
如上所述,通过将扫描链分成子扫描链,在短时间内保存和恢复目标电路11的内部状态数据。而且,由于将目标电路11的内部状态保持在半导体集成电路的外部,因此可以停止目标电路11的电源,并且可以减小功耗。此外,可以通过在子扫描链的头部和子扫描链输出反馈中插入选择器电路,进一步缩短响应于内部状态保存操作中止的恢复操作的时间。
根据本发明,提供一种半导体集成电路及其控制方法,通过将扫描链分成多个子扫描链和将子扫描链并且将子扫描链的输出并行存储在存储器中,缩短了内部状态的保存和恢复操作。
如上所述,尽管已经描述了本发明的实施例和修改,但是在不矛盾的情况下这些实施例和修改可以相结合。