使用稳健时钟控制方法以防止无意的读或写的可扫描存储器与流程

文档序号:11935407阅读:281来源:国知局
使用稳健时钟控制方法以防止无意的读或写的可扫描存储器与流程

领域

本发明涉及集成电路,且更具体地涉及可扫描以供测试的存储器。



背景技术:

片上系统(SoC)集成电路(IC)具有日益增长的复杂度。SoC可包括大量(例如,数百)小型(例如,64字乘64位)存储器。本文宽泛地使用术语“存储器”和“寄存器文件”以包括各种形式的存储,诸如随机存取存储器和多端口存储器。SoC上的存储器在制造之后被测试以验证它们正确地运作。SoC电路的全面且高效的生产测试在复杂度和重要性方面有所增加。测试这些存储器的先前办法包括内建自测(BIST)和随机(ad hoc)方法。先前办法的限制包括例如由于工程设计开发时间、生产测试时间、或用于BIST电路的管芯面积而产生的费用。

概述

在一个方面,提供了一种可扫描寄存器文件,包括:寄存器文件模块,其被配置成:通过从基于寄存器文件读地址输入来选择的存储器位置读取数据来产生读数据输出,其中该读取是通过寄存器文件读时钟输入的上升沿来触发的,以及将来自寄存器文件写数据输入的数据写入到基于寄存器文件写地址输入来选择的存储器位置,其中该写入是通过寄存器文件写时钟输入的边沿来触发的;以及扫描逻辑模块,其被配置成接收扫描时钟输入、扫描启用输入、以及移位启用输入并将寄存器文件读地址输入、寄存器文件写地址输入、寄存器文件读时钟以及寄存器文件写时钟提供给寄存器文件模块。

在一个方面,提供了一种可扫描寄存器文件,其包括多个存储器单元,该可扫描寄存器文件被配置成在扫描测试的移位阶段期间将来自扫描输入的数据位移位通过该多个存储器单元到达扫描输出,其中在扫描时钟的每一循环上:可扫描寄存器文件读取多个存储器单元中的一个存储器单元以提供扫描输出并使用扫描输入上的数据位之一来写入多个存储器单元中的一个存储器单元。

在一个方面,提供了一种用于在寄存器文件的扫描测试中使用的方法。该方法包括:在扫描测试的移位阶段期间将来自扫描输入的数据位移位通过多个存储器单元以到达扫描输出;在未处于移位阶段时读取多个存储器单元的由外部读地址输入所标识的位置以产生读数据输出;以及在未处于移位阶段时从外部写数据输入写入到多个存储器单元的由外部写地址输入所标识的位置。

在一个方面,提供了一种装备,其包括:用于将数据存储在多个存储器单元中的装置,以及用于控制该用于将数据存储在多个存储器单元中的装置来执行扫描测试的装置。

本发明的其它特征和优点将从通过示例解说本发明的各方面的以下描述而变得明了。

附图简述

本发明的细节(就其结构和操作两者而言)可通过研究所附的附图来部分搜集,其中类似的附图标记指代类似的部分,并且其中:

图1是寄存器文件的功能框图;

图2是具有内建自测的寄存器文件的功能框图;

图3是根据本文所公开的实施例的可扫描寄存器文件的功能框图;

图4是根据本文所公开的实施例的扫描逻辑模块的功能框图;

图5是根据本文所公开的实施例的扫描控制模块的示意图;

图6是解说图3的可扫描寄存器文件、图4的扫描逻辑模块以及图5的扫描控制模块的操作的波形图;以及

图7是根据本文所公开的实施例的用于操作可扫描寄存器文件的过程的流程图。

详细描述

以下结合附图阐述的详细描述旨在作为对各种配置的描述,而无意表示可实践本文中所描述的概念的仅有的配置。本详细描述包括具体细节以便提供对各种概念的透彻理解。然而,对于本领域技术人员将显而易见的是,没有这些具体细节也可实践这些概念。在一些实例中,以简化形式示出公知的结构和组件从而避免湮没此类概念。

图1是寄存器文件110的功能框图。该寄存器文件可被例如实现在互补金属氧化物半导体(CMOS)片上系统(SoC)集成电路(IC)中。寄存器文件110包括读端口和写端口。

写端口包括写地址输入A_WR和写数据输入D_WR。写地址输入A_WR标识寄存器文件110中写数据输入D_WR上的数据将被写入的位置。寄存器文件110的一个实现可基于写启用和芯片选择输入来调理各个写入。

读端口包括读地址输入A_RD和读数据输出D_RD。读地址输入A_RD标识寄存器文件110中数据将从中读取并在读数据信号D_RD上提供的位置。寄存器文件110的一个实现可基于读启用输入和芯片选择输入来调理各个读取。

各个读取的定时基于读时钟输入CLKA。例如,寄存器文件110可以在读时钟输入CLKA的上升沿上发起读取。各个写入的定时基于写时钟输入CLKB。例如,寄存器文件110可以在写时钟输入CLKB的上升沿上发起写入。写时钟输入CLKB和读时钟输入CLKA可耦合到相同的时钟信号。

图2是具有内建自测(BIST)的寄存器文件的功能框图。该寄存器文件可被实现在例如CMOS SoC中。

该寄存器文件包括寄存器文件模块210,寄存器文件模块210包括用于寄存器文件的功能操作的存储器电路。寄存器文件模块210可例如使用图1的寄存器文件110来实现。

该寄存器文件包括在寄存器文件的生产测试期间将信号提供给寄存器文件模块210的BIST模块220。BIST模块220的测试功能由测试输入TEST(测试)启用。在测试期间,BIST模块220超驰读端口和写端口,并且可例如将内部生成的数据模式写入到寄存器文件模块210中的位置、从寄存器文件模块210读取数据、以及分析所读取的数据以确定寄存器文件是否正确地运作。在功能操作期间,BIST模块220将读端口和写端口耦合到寄存器文件模块210。

BIST模块220的复杂度与寄存器文件模块210的大小的对数大致成比例。因而,对于较小存储器而言,针对BIST的寄存器文件的百分比更大。在具有许多小存储器的SoC中,BIST功能可占据相当大的管芯面积。

图3是根据本文所公开的实施例的可扫描寄存器文件的功能框图。该可扫描寄存器文件可被实现在例如CMOS SoC中。

该可扫描寄存器文件包括寄存器文件模块310,寄存器文件模块310包括用于该可扫描寄存器文件的功能操作的存储器电路。寄存器文件模块310可例如使用图1的寄存器文件110来实现。

该可扫描寄存器文件包括可使得该可扫描寄存器文件在该可扫描寄存器文件的生产测试期间作为扫描触发器来操作的扫描逻辑模块330。扫描逻辑模块330的测试功能由扫描控制输入SCAN_CTL来选择。在测试期间,扫描逻辑模块330超驰读端口和写端口并将信号提供给寄存器文件模块310。

在扫描测试的移位阶段期间,数据被移位通过寄存器文件模块310的各单独存储器单元。扫描逻辑模块330可以通过例如提供顺序地址(以存储器位置的数目为模)来选择寄存器文件中的位置、从所选择的位置读取以产生扫描输出、以及从扫描输入写入到所选择的位置来使得数据移位通过寄存器文件模块310。可扫描寄存器文件的读和写端口可被称为外部端口,而寄存器文件模块310的读和写端口可被称为内部端口。

在扫描测试的捕捉阶段期间,如同功能操作期间一样,数据从寄存器文件模块310的存储器单元读取和写入寄存器文件模块310的存储器单元。扫描逻辑模块330可以在扫描测试的捕捉阶段期间将可扫描寄存器文件的读端口和写端口耦合到寄存器文件模块310的读端口和写端口。类似地,在功能操作期间,扫描逻辑模块330将可扫描寄存器文件的读端口和写端口耦合到寄存器文件模块310的读端口和写端口。

扫描逻辑模块330的复杂度可以远小于图2的寄存器文件的BIST模块220的复杂度。这可节省管芯面积和成本。另外,可扫描寄存器文件的测试可以与SoC中的其他模块的基于扫描的测试集成在一起。例如,自动测试模式生成(ATPG)可被应用于可扫描寄存器文件。这可降低开发对SoC的制造测试的成本。

图6是解说可扫描寄存器文件的一个扫描测试循环的波形图。可扫描寄存器文件的测试可包括使用不同数据值的数千个扫描测试循环。波形图示出了扫描测试的测试阶段610。可扫描寄存器文件(以及相关联SoC的其他模块)的功能操作发生在测试阶段610之前和之后。在扫描启用输入SCAN_N为低时,可扫描寄存器文件处于测试阶段610。

在测试阶段610的开始期间,发生移入阶段621。在扫描启用输入SCAN_N为低且移位启用输入SHIFT_N为低时,可扫描寄存器文件处于移入阶段621。在移入阶段621期间,可扫描寄存器文件在扫描时钟输入CLKA的每一脉冲上将数据移入。可扫描寄存器文件在扫描时钟输入CLKA的每一上升沿上执行读取并在扫描时钟输入CLKA的每一下降沿上执行写入。

捕捉阶段630跟随移入阶段621之后。在扫描启用输入SCAN_N为低且移位启用输入SHIFT_N为高时,可扫描寄存器文件处于捕捉阶段630。在捕捉阶段630期间,可扫描寄存器文件以其功能模式来操作,其中读和写基于外部读和写端口上的信号来发生。

移出阶段622跟随捕捉阶段630之后。在扫描启用输入SCAN_N为低且移位启用输入SHIFT_N为低时,可扫描寄存器文件处于移出阶段622。在移出阶段622期间,可扫描寄存器文件在扫描时钟输入CLKA的每一脉冲上将数据移出。可扫描寄存器文件在扫描时钟输入CLKA的每一上升沿上执行读取并在扫描时钟输入CLKA的每一下降沿上执行写入。

扫描测试循环的移出阶段可以与下一扫描测试循环的移入阶段同时进行。移出阶段和移入阶段执行相同的操作并且可被统称为移位阶段。移入阶段621和移出阶段622中的时钟循环的数目与相关联扫描链的长度相对应。各阶段之间的转变可以由几个时钟周期来分开。

图3的可扫描寄存器文件具有一个读端口和一个写端口。所公开的用于扫描测试的技术适用于具有其他数目的读端口和写端口的寄存器文件,包括具有组合读和写端口的那些寄存器文件。

图4是根据本文所公开的实施例的扫描逻辑模块的功能框图。图3的扫描逻辑模块330可以使用图4的扫描逻辑模块来实现。

该扫描逻辑模块包括地址计数器441、扫描控制模块460、写数据选择器451、写地址选择器452以及读地址选择器453。扫描控制模块460解说读时钟输入CLKA、写时钟输入CLKB以及扫描控制输入。可扫描寄存器文件使用读时钟输入CLKA作为用于扫描测试期间的移位的扫描时钟。在图4的实施例中,扫描控制输入包括活跃低扫描启用输入SCAN_N和活跃低移位启用输入SHIFT_N。扫描启用输入SCAN_N用信号通知扫描测试(相对于功能操作)。移位启用输入SHIFT_N用信号通知扫描测试的移位阶段。扫描控制模块460产生寄存器文件读时钟输入CLKA_RF、寄存器文件写时钟输入CLKB_RF以及用于地址计数器441、写数据选择器451、写地址选择器452和读地址选择器453的控制。扫描控制模块460可以在扫描测试的移位阶段期间将具有相反极性的寄存器文件读时钟输入CLKA_RF和寄存器文件写时钟输入CLKB_RF提供给寄存器文件模块。

地址计数器441产生具有地址值的计数输出以供在扫描测试的移位阶段期间使用。这些地址值顺序地通过寄存器文件模块的所有位置。地址计数器441由来自扫描控制模块460的计数器复位输入RST_CNTR来复位。地址计数器441可被复位成零值。复位发生在扫描测试的移位阶段之前。在扫描测试的移位阶段期间,地址计数器441在每一移位循环上递增计数输出。地址计数器441基于来自扫描控制模块460的计数器时钟输入CLK_CNTR来触发递增(计数)。地址计数器441以寄存器文件中的位置的数目为模地递增其计数输出。地址计数器441可以使用其他复位值和计数序列,例如通过递增不同于1的值。

写数据选择器451通过在扫描测试的移位阶段期间选择扫描输入S_IN以及在未处于扫描测试的移位阶段时选择写数据输入D_WR(也被称为外部写数据输入)来产生寄存器文件写数据输入D_WR_RF(也被称为内部写数据输入)。在多位宽可扫描寄存器文件的实施例中,写数据选择器451可以在扫描测试的移位阶段期间选择扫描输入来产生寄存器文件写数据输入的第一位,以及选择读数据输出D_RD的各个位来产生寄存器文件写数据输入的其他位,使得数据在扫描测试期间逐列移位。替换地,多位宽可扫描寄存器文件可针对每一列(位)具有扫描输入和扫描输出。写数据选择器451接收来自扫描控制模块460的用于用信号通知移位阶段的移位启用SHIFT(移位)。

写地址选择器452通过在扫描测试的移位阶段期间选择地址计数器441的计数输出以及在未处于扫描测试的移位阶段时选择写地址输入A_WR(也被称为外部写地址输入)来产生寄存器文件写地址输入A_WR_RF(也被称为内部写地址输入)。写地址选择器452接收来自扫描控制模块460的用于用信号通知移位阶段的移位启用SHIFT。

读地址选择器453通过在扫描测试的移位阶段期间选择地址计数器441的计数输出以及在未处于扫描测试的移位阶段时选择读地址输入A_RD(也被称为外部读地址输入)来产生寄存器文件读地址输入A_RD_RF(也被称为内部读地址输入)。读地址选择器453接收来自扫描控制模块460的用于用信号通知移位阶段的移位启用SHIFT。

读数据输出D_RD上的选择器未被用在图4的实施例中。扫描逻辑模块可以使用缓冲器以驱动来自读数据输出D_RD的扫描输出。

图5是根据本文所公开的实施例的扫描控制模块的示意图。图4的扫描控制模块460可以使用图5的扫描控制模块来实现。

扫描控制模块包括反相器504,反相器504将活跃低移位启用输入SHIFT_N反相以产生由写数据选择器451、写地址选择器452和读地址选择器453用来指示扫描测试的移位阶段的移位启用SHIFT。扫描控制模块包括反相器505,反相器505将移位启用SHIFT反相以产生由地址计数器441使用的计数器复位输入RST_CNTR。

扫描控制模块包括脉冲发生器550,脉冲发生器550在读时钟输入CLKA的下降沿上产生脉冲以供在产生针对地址计数器441的计数器时钟输入CLK_CNTR中使用。AND(与)门554通过在逻辑上组合来自脉冲发生器550的脉冲和AND门552的输出来产生计数器时钟输入CLK_CNTR。AND门552在逻辑上组合移位启用输入SHIFT_N和扫描启用输入SCAN_N(经由反相器503),使得输出指示可扫描寄存器文件何时处于移位阶段。

扫描控制模块通过使用缓冲器501缓冲读时钟输入CLKA(也被称为外部读时钟输入)来产生寄存器文件读时钟输入CLKA_RF(也被称为内部读时钟输入)。读时钟输入CLKA在扫描测试期间使用且还可被称为扫描时钟输入。

扫描控制模块通过选择写时钟输入CLKB的经缓冲版本(也被称为外部写时钟输入)以用于功能操作(包括扫描测试的捕捉阶段)或选择读时钟输入CLKA的经反相版本以用于移位操作来产生寄存器文件写时钟输入CLKB_RF(也被称为内部写时钟输入)。使用两种不同定时来产生寄存器文件写时钟输入CLKB_RF可导致向移位阶段的转变和从移位阶段的转变上的瞬变(毛刺)。这样的瞬变可导致无意的写入。扫描控制模块控制用于寄存器文件写时钟输入CLKB_RF的选择变化的定时以避免寄存器文件写时钟输入CLKB_RF上的瞬变。

扫描控制模块包括置位-复位锁存器530,置位-复位锁存器530产生针对产生寄存器文件写时钟输入CLKB_RF的选择器520的控制信号SEL。置位-复位锁存器530包括交叉耦合的NOR(或非)门531、532以及驱动输出(控制信号SEL)的缓冲器533。置位-复位锁存器530在未处于移位阶段时被复位(通过计数器复位输入RST_CNTR,其是移位启用输入SHIFT_N(其在可扫描寄存器文件未处于移位阶段时为高)的经缓冲版本)。

这一操作在图6中解说,其示出了控制信号SEL何时切换以及结果所得的寄存器文件写时钟输入CLKB_RF。寄存器文件读时钟输入CLKA_RF和计数器时钟输入CLK_CNTR的波形也被示出。

在置位-复位锁存器530被复位时,控制信号SEL为低且选择器520选择选择器510的输出。选择器510和选择器520是反相选择器且它们的输出是所选输入的逻辑反相。选择器510基于可扫描寄存器文件何时处于移位阶段(如OR(或)门515的输出所指示的)来选择其输出。在处于移位阶段时,选择器510选择恒定零值。在未处于移位阶段时,选择器510选择写时钟输入CLKB。在未处于移位阶段时,经由选择器510和选择器520从写时钟输入CLKB产生寄存器文件写时钟输入CLKB_RF。

在可扫描寄存器文件进入移位阶段时,选择器510从选择写时钟输入CLKB切换到选择零。因为这一转变发生在写时钟输入CLKB为低时,所以选择器510的输出没有发生变化。另外,置位-复位锁存器530保持复位,控制信号SEL保持为低,且选择器520继续选择选择器510的输出,使得写时钟输入CLKB保持为低。

在移位阶段中在读时钟输入CLKA的第一上升沿上,置位-复位锁存器530由反相器522的输出来置位,反相器522的输出在移位阶段期间经由NAND(与非)门521匹配读时钟输入CLKA。在置位-复位锁存器530被置位时,控制信号SEL转变为高。控制信号SEL上的高电平将选择器520从选择选择器510的输出切换到选择反相器522的输出。因为这一转变发生在选择器520的两个输入都为高时,所以寄存器文件写时钟输入CLKB_RF(选择器520的输出)没有发生变化。在读时钟输入CLKA下降时,寄存器文件写时钟输入CLKB_RF经由NAND门521、反相器522和选择器520上升。此后,在移位阶段期间,扫描控制模块产生寄存器文件写时钟输入CLK_B_RF作为读时钟输入CLKA的反相。因而,扫描控制模块转变到移位阶段而没有在寄存器文件写时钟输入CLKB_RF上产生瞬变。

在移位阶段结束时,移位启用输入SHIFT_N转变为高并使置位-复位锁存器530复位。这将控制信号SEL切换为低且将选择器520从选择反相器522的输出切换成选择选择器510的输出。因为这一转变发生在选择器520的两个输入都为高时,所以寄存器文件写时钟输入CLKB_RF(选择器520的输出)没有发生变化。此后,扫描控制模块基于写时钟输入CLKB经由选择器510和选择器520产生寄存器文件写时钟输入CLKB_RF。因而,扫描控制模块转变出移位阶段而没有在寄存器文件写时钟输入CLKB_RF上产生瞬变。

图5的示意图是一个示例实现。许多变型是可能的,包括具有不同信号极性以及逻辑门和缓冲器的不同组合的那些变型。

图7是根据本文所公开的实施例的用于操作可扫描寄存器文件的过程的流程图。该过程的步骤可以例如使用图3的可扫描寄存器文件、图4的扫描逻辑模块以及图5的扫描控制模块来执行且将参考这些模块来描述。

在框710,该过程确定可扫描寄存器文件是否处于扫描测试的移位阶段。例如,可扫描寄存器文件可以确定在扫描启用输入SCAN_N为低且移位启用输入SHIFT_N为低时它处于移位阶段。如果可扫描寄存器文件处于移位阶段,则该过程继续至框731;否则,该过程继续至框721。

在框721,可扫描寄存器文件基于外部读端口来执行读操作。在框723,可扫描寄存器文件基于外部写端口来执行写操作。框721的读操作和框723的写操作可以并发地执行。另外,读和写操作可以可扫描寄存器文件的启用和芯片选择输入为条件。

在框731,可扫描寄存器文件生成供在扫描测试中使用的地址。例如,图4的扫描逻辑模块的地址计数器441可以提供所生成的引用每一寄存器文件模块的地址。在框733,可扫描寄存器文件从所生成的地址所标识的位置读取以产生扫描输出。在框735,可扫描寄存器文件从扫描输入写入到所生成的地址所标识的位置。可扫描寄存器文件可以在扫描时钟输入上的上升沿上执行读取且在扫描时钟输入的下降沿上执行写入。框731、框733以及框735可以并发地执行。

图7的过程可以例如通过添加、省略、重排序或更改步骤来修改。

虽然本发明的实施例在以上是针对特定实施例来描述的,但是本发明的许多变型是可能的,包括例如具有不同信号极性的那些变型。此外,被描述为由一个模块(或框)执行的功能可移动到另一个模块或者跨模块分布。另外,各个实施例的特征可在与以上描述的不同的组合中进行组合。

本领域技术人员将领会,结合本文公开的实施例所描述各种解说性框和模块能以各种形式实现。一些框和模块已经在上文以其功能性的形式作了一般化描述。此类功能性如何被实现取决于加诸于整体系统上设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。另外,在一个模块、框或步骤内的功能的编群是为了便于描述。具体功能或步骤可以从一个模块或框中移动,或者跨各模块或框分布而不背离本发明。

提供以上对所公开的实施例的描述是为了使本领域任何技术人员皆能制作或使用本发明。对这些实施例的各种修改对本领域技术人员来说将是显而易见的,且本文所描述的一般原理可被应用于其它实施例而不背离本发明的精神或范围。因此,应理解本文给出的描述和附图表示当前优选实施例并且代表本发明所广泛地构想的主题。将进一步理解,本发明的范围完全涵盖可对本领域技术人员显而易见的其它实施例,并且本发明的范围相应地除了所附权利要求之外不受任何限制。

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