发明的最佳实施方式
以下要参照附图具体说明本发明的最佳实施例,它是一种用集中控制资源来控制内部总线以防在内部扫描测试过程中发生总线争用的方法和系统。尽管本发明是参照其最佳实施例来描述的,应该认识到这些实施例并不是说本发明仅限于这些实施例。恰恰相反,本发明的用意是要覆盖附带的权利要求书所限定的本发明原理和范围内所包括的修改,变更及等效的方案。另外,在本发明以下的说明中描述的大量具体细节是为了充分地解释本发明。然而,没有这些具体细节也可以实现本发明,这对于本领域的技术人员是显而易见的。在其它例子中,为了便于理解本发明,没有具体描述不必要的公知方法,程序,器件和电路。
本发明是一种方法和系统,用来消除集成电路器件的多功能块当中的任何潜在的总线争用。本发明提供的解决方案能够有效地控制用于多功能块的多个总线驱动器,在各功能块受到一系列测试输入(也就是ATPG测试图形,矢量等等)的激励时消除它们当中的总线争用。本发明的方法和系统通过设计来保证在ATPG工具产生任何给定的测试图形时都不会发生总线争用,这样就能用ATPG工具产生的测试图形获得更高的故障覆盖范围。另外,由于ATPG工具不需要确保不会发生总线争用,能够以更快的编译时间产生测试图形。本发明的系统易于实现,在结构上一致,并且在集成电路器件的总体设计上具有最小的选通区和系统性能冲突。以下要进一步解释本发明及其优点。
参见图1,它表示按照本发明一个实施例的多功能集成电路100的示意图。图1表示基于本发明实施例的一种PCI(外围设备互连)的总体示意图。然而还应该意识到本发明的方法和系统也可以用其他类型的共享总线和/或其他类型的总线标准(例如AMBA总线,ASB,AHB,APB等等)来实现。
如图1所示,集成电路100包括各自连接到一条共享总线110上的四个功能块101-104。在本实施例中,功能块101-104是PCI主体(agent)(例如分别是PCI主控器/目标#1,PCI主控器/目标#2,PCI主控器/目标#3,和PCI主控器/目标#4)。而共享总线110是PCI总线。功能块101-103是PCI主控器/目标主体(例如是兼做PCI启动器和PCI从属装置)。功能块104是一个PCI目标专用工具。功能块101-104和总线110被集成在集成电路100之内并且集中提供集成电路100的功能和用途。
如上所述,本发明体现为一种防止功能块101-104当中对总线110的总线争用的系统。在正常工作期间,集成电路100所遵循的PCI协议能防止块101-104当中的总线争用。集成电路100包括作为完整的PCI适配系统(例如总线仲裁器,器件结构,接口和控制等等)来操作块101-104和总线110所必要的控制逻辑和支持电路。因此,在正常操作期间很少有总线争用的危险。然而,在测试期间,由于要测试集成电路100的功能,在集成电路中扫描的各种测试矢量,测试图形,扫描图形等等往往就会有明显的总线争用风险。本发明的一部分作用是要保证无论集成电路100承受任何的测试图形,矢量等等,都要保证在块101-104当中不会出现总线争用。
仍然参见图1,本发明为有效地控制功能块101-104的各个总线驱动器提供了一种解决方案。这种起动控制能够保证在功能块101-104受到一系列测试输入(例如ATPG测试图形,矢量等等)的激励时消除它们当中的任何可能的总线争用。这种起动控制是用纳入系统100的设计中的控制逻辑来实现的。这种控制逻辑构造能够保证ATPG工具可能产生的任何测试图形不会造成总线争用。因此,在为集成电路100产生测试图形的过程中,ATPG工具不需要决定性地分析每一种潜在的测试矢量以确定不会发生总线争用。这样将能使ATPG处理程序更加有效(例如是在典型的应用中达到更加有效的等级)。这种附加效果使ATPG工具能够更加全面地处理集成电路100,例如是允许用ATPG工具产生的测试图形达到更高的故障覆盖范围。另外,因为ATPG工具不需要保证不会发生总线争用,这种额外的效果使得能够以更快的编译时间产生测试图形。本发明的再一个优点是还可以很容易为预定的多功能集成电路设计增加执行控制逻辑。这种执行逻辑在构造上是一致的,并且在多功能集成电路器件(例如集成电路100)的总体设计上具有最小的选通区和系统性能冲突。
图2表示按照本发明一个实施例实现的集成电路100的具体细节。图2中表示了本实施例的功能块101-104及其相互连接。每个块101-104都能在正常操作中驱动总线110,并且在扫描测试期间必须受到控制以免总线争用。每个块101-104的构造可以输出和接收一系列输出启动信号,如图中的箭头205所示(以下统称为输出启动信号205)。输出启动信号205对应着针对总线110的具体的信号或一组信号,并且用来按照以下的表1启动或禁止块101-104的各个输出驱动器的各个信号或一组信号。如图2所示,输出启动信号205从块101到块104串联通过,只有在块103(PCI目标#3)处有一些输出启动信号205被块103旁路并且提供给块104。这是因为块103是一个PCI目标专用主体,因而不需要驱动PCI信号FRAME#,IRDY#和CBE#。输出启动信号205及其对应的PCI信号之间的关系如以下的表1所示。
表1
ad_oe_n |
AD[31∶0] |
frame_oe_n |
FRAME# |
trdy_oe_n |
TRDY# |
cbe_oe_n |
C/BE#[3∶0] |
par_oe_n |
PAR |
devsel_oe_n |
DEVSEL# |
stop_oe_n |
Stop# |
perr_oe_n |
PERR# |
serr_oe_n |
SERR# |
仍然参见图2,按照本发明,输出启动信号按照一种“OR链”从一个功能块串联到下一个功能块,在块101-104当中产生一种优先权层次。这一优先权层次能防止不同块的输出驱动器在任一给定的时间同时起动。在本实施例中,如图2所示,每个块的输出启动信号一起串联构成一个从块101到块104的逻辑上的优先权链。一个块所确定的输出启动需要禁止处在优先权下级的另一个块被启动。同样,如果具有特定优先权的一个块受到有效的驱动,具有高级优先权的信号或总线和一个驱动器就会被起动,而低级优先权的驱动器立即被禁止。
图2还表示了通过一条扫描测试模式信号线连接到各个块101-104的一个TAP(测试接入端口)控制器200。在本实施例中,TAP控制器200产生扫描测试模式信号201,通知每个功能块101-104扫描测试正在进行。如上所述,每个功能块101-104有一个输出起动信号输入端,用于PCI总线上的各组主要信号(AD,PAR,CBE,FRAME#,IRDY#,TRDY#,DEVSEL,STOP#,PERR#和SERR#)。这些输出起动信号输入端(例如是输出起动信号205)通知各个块是否有更高优先权的一个块正在驱动PCI总线。每个功能块还有一个对应的输出起动信号输出端,用于PCI总线上的各组主要信号。如图2所示,这些输出起动信号输出端串联到下一优先权功能块的输出起动信号输入端。
例如仍然参见图2,功能块101具有最高优先权,而功能块104具有最低优先权。如果功能块101(例如PCI主控器/目标#1)在扫描测试模式(例如是用ATPG工具产生的扫描图形迫使其这样做)下正在驱动总线110的AD[31∶0],FRAME#和STOP#信号线,功能块101就会维持其ad_oe_1,frame_oe_1和stop_oe_1输出。而功能块102就会发现这些维持的信号,即使ATPG工具所产生的扫描图形告诉它应该驱动这些信号线,它也不会这样做。功能块102(例如PCI主控器/目标#2)会维持其ad_oe_2,frame_oe_2和stop_oe_2信号,将这一信息提供给最低优先权块。值得注意的是,块101会将其输出起动信号输入端约束在低(逻辑零)。这样就能使块101成为最高优先权块,因为它不会被其他功能块抢先。块104会将其输出起动信号输出端保持在开路状态。这会使其成为最低优先权块,因为它决不会抢先另一个器件。按照这样的方式,维持的ad_oe_1,frame_oe_1和stop_oe_1输出从最高优先权块串联到最低优先权块。
值得注意的是块103是一个目标专用PCI主体,因为块103没有总线主控能力,它的接口上没有来自总线110的FRAME#,IRDY#和C/BE(3∶0)信号。在这种情况下,输出起动信号frame_oe_2,irdy_oe_2和cbe_oe_2旁路块103并且连接到块104。
在本实施例中还应该注意到,输出起动信号输出和输入端都是高有效信号。例如,如果一个块101-104发现其一个输出驱动信号输入端在扫描测试过程中变成高,它就不会驱动PCI总线的相应部分,而是维持对应的输出起动信号输出端。
参见图3,它表示按照本发明的一个实施例用来修改现存功能块所需要的逻辑的示意图。图3表示按照本发明使用的相互连接逻辑(例如是确保在扫描测试过程中不会在总线110上出现总线争用)。在这种情况下表示了块102。图3中所示的块102代表实现PCI主控器/目标的正常逻辑,驱动PCI总线的三态驱动器很少。本发明的这一实施方案需要为每一个输出起动信号增加一个“用于测试的OE控制”。图中表示了四个这种用于测试的OE控制块301-304。用于测试的OE控制块连同扫描测试模式信号一起从现存的块(例如块102)获取输出起动信号cr_xx_oe_n(其中的“xx”对应着信号种类,例如ad,frame,irdy等等),以及从次高级优先权PCI器件也就是块101获取输出起动信号xx_oe_in,并且为三态驱动器产生实际的输出起动和输出到下一级优先权块也就是块103的输出起动信号xx_oe_out。值得注意的是在图3中为三态驱动器(例如三态驱动器311-314)采用了低有效输出起动逻辑。
参见图4,它表示按照本发明的一个实施例用于测试控制器400的一例OE控制的内部逻辑。控制器400表示具有有效低输出起动逻辑的三态驱动器(例如三态驱动器401)的逻辑。按照本实施例,控制器400有三个输入和两个输出。如果扫描测试模式输入201是低,则“用于测试的输出起动”逻辑就被禁止,而块的输出起动信号cr_<signal>_oe_n就被用于控制三态驱动器401。如果扫描测试模式输入201是高,则“用于测试的输出起动”逻辑就有效,而从次高级优先权块输入的输出起动信号<signal>_oe_in就被用来控制这一块的输出起动。如果<signal>_oe_in是高,前一块就驱动总线110。在这种情况下,控制器400不维持三态驱动器401,而是维持输出到下一级低优先权PCI器件的输出起动控制信号<signal>_oe_out。如果<signal>_oe_in是低,就用这一块的输出起动信号cr_<signal>_oe_n来控制三态驱动器401。如果cr_<signal>_oe_n被维持在低,控制器400就维持输出到下一级低优先权块的输出起动控制信号<signal>_oe_out,告诉它不能驱动总线110。
图5表示按照本发明的一个实施例为具有有效高输出起动逻辑的三态驱动器(例如驱动器501)构筑的测试控制器500的一例OE控制。控制器500的功能与图4所示的控制器400大致相同。然而,控制器500的内部逻辑是为具有有效高输出起动逻辑的三态驱动器构筑的。
按照这种方式,图1-5所示的实施例能够保证在扫描测试过程中不会发生总线争用。这样就能使ATPG工具所执行的ATPG程序更加有效地执行,大大缩短为产生高级测试图形/矢量所需要的时间。另外,这些测试图形/矢量要比按照由ATPG工具来解决所有总线争用问题的现有技术所产生的测试图形/矢量具有更好的故障覆盖范围。通过在预期的集成电路中修改每个功能块就很容易实现本发明的实际硬件。
第一变更实施例
参见图6,它表示按照本发明第一变更实施例的一种系统600。图1-5的实施例采用分散解决方案来禁止功能块101-104在总线110上的驱动信号,而变更实施例的系统600是利用集中资源来起动一个块611-614驱动整个总线610。和图1-5的实施例一样,图6的实施例是针对PCI总线(例如总线610)而言的,然而应该注意到系统600也可以扩展到其他类型的总线结构。
如图6所示,功能块611-613是PCI主控器/目标主体,而功能块614是一个PCI目标专用主体。一个PCI目标专用主体中包含可以通过PCI总线610访问的寄存器或存储器资源。一个PCI主控器专用主体中包含总线所有权仲裁功能并且能访问总线610上的寄存器或存储器资源,但是往往没有自身的寄存器或存储器资源。一个PCI主控器/目标器件则同时包含目标资源和主控器对其他资源的访问能力。
系统600是一种PCI总线系统,它包含单个PCI总线仲裁器601,同时具有PCI主控器和目标接口的块611-613,以及作为一个PCI目标专用主体的单个块614。具有主控器接口的块驱动到仲裁器601(例如是总线请求603)的总线请求信号。仲裁器601驱动到每个PCI主控器主体(例如块611-613)的总线主体信号602。作为目标专用PCI主体的块614不使用请求或主体信号。
图6的变更实施例采用PCI总线仲裁器601来防止扫描测试期间的总线争用,准许总线610连接到块611-614中的一个。按照这一实施例修改了块611-614,在扫描测试期间采纳这种准许,块采样准许维持意味着“驱动总线”,而采样准许不维持意味着“禁止所有总线驱动器”。因为PCI总线仲裁器601中用于产生总线准许的触发器是在扫描链上,ATPG工具可以根据需要强迫使用扫描数据由一个块611-614驱动总线610。
图6的实施例包括用来处理两种特殊状态的逻辑。第一状态是在集成电路包括不使用总线准许信号的PCI目标专用型功能块的情况下执行的逻辑。第二种状态是如何处理ATPG工具使得在扫描测试期间维持多个准许信号的情况。这些特殊状态下的解决方案如下。
仍然参见图6,按照这一实施例,PCI总线仲裁器601作为中央资源在扫描测试期间用来起动每一个功能块的三态驱动器。在扫描测试期间维持总线准许的任何一个块611-614都应该驱动PCI总线610(AD[31∶0],CBE,PAR,PERR#,SERR#,FRAME#,IRDY#,TRDY#,DEVSEL#和STOP#)这其中包括PCI目标专用主体和主控器专用主体。应该注意到总线准许604是必须为目标专用主体(例如块614)增加的一个新信号。还应该注意到用于目标专用主体(例如块614)的“特殊”总线准许604是来自PCI总线仲裁器601的输出,它仅仅在扫描测试模式下才起作用。
如果选择了一个目标专用块,PCI总线仲裁器601就驱动PCI主控型信号CBE,FRAME#和IRDY#。这是因为目标专用主体(例如块614)在正常操作中不需要驱动这些信号,因此在它的接口也就没有这些信号。与此类似,如果选择了一个主控器专用型主体,PCI总线仲裁器601就驱动PCI目标特有的信号TRDY#,DEVSEL#和STOP#,因为主控器专用型主体在正常操作中不需要驱动这些信号。
还有不采用三态FRAME#,IRDY#,TRDY#,STOP#,DEVSEL#,REQ#(O∶N),PERR#,SERR#和/或INT(A∶D)信号的PCI总线实施方案。在这种实施方案中,PCI总线仲裁器601不需要象上一段所说的那样驱动这些信号。
如果选择了目标型或是主控器专用型主体而不用PCI总线仲裁器601驱动CBE,FRAME#,IRDY#,TRDY#,DEVSEL#和STOP#信号,还可以选择这样一种实施方案,不驱动这些信号而是让这些信号保持浮动。这样会使故障覆盖范围有所缩小,但是不会给仲裁器的设计增加额外的复杂性。
在扫描测试期间,PCI总线仲裁器601可以维持一个并且仅仅是一个准许信号。仲裁器中的触发器可以在扫描链上产生PCI总线准许,让ATPG工具能够在触发器中传送数据以准许总线601连接到所需的功能块611-614。但是ATPG工具还可能试图维持多个总线准许。PCI总线仲裁器601必须保证仅仅选择一个块611-614。在没有选择器件的情况下,PCI总线仲裁器601就准许总线610连接到“缺省”块。这一缺省块可以选择为块611-614当中的任何一块,或者是总线610上的任何一块。
参见图7,它表示按照本发明的变更实施例的一种PCI总线仲裁器700的示意图。PCI总线仲裁器700表示了实现准许信号(例如图6中的准许信号603-604)所需的逻辑,并且产生信号CBE[3∶0],FRAME#,IRDY#,TRDY#,DEVSEL#和STOP#。PCI总线仲裁器700是一例具有四个PCI主控器/目标型主体和两个PCI目标专用型主体的仲裁器。目标准许信号用tgnt(1∶0)表示。在本实施例中,除了常规的PCI总线仲裁器705的逻辑是用来驱动目标准许信号的触发器702-703之外,组合逻辑701还产生CBE[3∶0],FRAME#,IRDY#,TRDY#,DEVSEL#和STOP#以及组合逻辑704,以确保在扫描测试期间仅仅维持一个准许。在正常操作期间(扫描测试模式=0)由触发器706-709直接驱动PCI总线准许gnt_n(3∶0),不维持“目标准许”,而CBE[3∶0],FRAME#,IRDY#,TRDY#,DEVSEL#和STOP#进入三态。在扫描测试期间(扫描测试模式=1)由触发器706-709和702-703(也就是由ATPG工具)分别驱动gnt_n和tgnt_n输出,除非有多个准许被维持。如果触发器维持了多个准许,组合逻辑704就必须要选择维持一个准许,而不维持其他准许。如果没有触发器维持的准许,组合逻辑704就必须要选择维持一个准许,而不维持其他准许。如果维持的准许信号是一个“目标准许”信号,就用一个恒定值(在本例中是0)驱动CBE[3∶0],FRAME#和IRDY#。如果维持的准许信号是用于一个PCI主控器专用型主体的,则驱动TRDY#,DEVSEL#和STOP#。
图8表示一个功能块使用的典型逻辑,按照本发明的实施例用来为PCI总线610的地址/数据部分产生输出起动(例如ad(31∶0))。图中仅仅表示了为整个总线610产生的一个输出起动。一般是用多个触发器为总线的不同部分产生输出起动,但是这很容易通过本实施例的扩展来实现。
图9表示按照一个实施例由功能块来保证在扫描测试模式下决不会发生任何总线争用所需要的逻辑。在正常操作期间(扫描测试模式=0)用功能块的正常输出起动信号cr_ad_oe_n起动其输出驱动器。但是,按照本实施例,在扫描测试期间(扫描测试模式=1)应该用准许信号gnt_n起动输出驱动器。在图9中假设输出起动是有效低。
图10表示按照一个实施例的逻辑,其中的输出起动是与有效低相反的有效高。这样,图6-10的变更实施例就能保证在扫描测试期间不会发生总线争用。这样能大大有利于ATPG工具的工作,与按照由ATPG工具来解决所有总线争用问题的现有技术相比,能够用更快的编译提供更好的故障覆盖范围。和图1-5的实施例一样,通过修改系统中的每个功能块和中央PCI总线仲裁器就很容易实现这一变更实施例。
第二变更实施例
按照本发明还可以实现第二种变更实施例。第二变更实施例与图6-10的第一变更实施例大致相同,区别仅在于在扫描测试期间用于控制每个功能块的集中资源不是PCI总线仲裁器而是一个独立的“测试专用”块。本实施例不需要改变PCI总线仲裁器的设计。所需的逻辑被纳入“测试专用”块中。然后由这一“测试专用”块产生“选择”信号而不是准许信号。在扫描测试期间,每个功能块用这些选择信号驱动总线,而不是象图6-10的第一变更实施例那样使用准许信号。每个PCI器件的内部逻辑与图6-10的第一变更实施例大致相同。
图11表示按照本发明第二变更实施例的一种测试专用块1100的示意图。测试专用块1100和图7中增加到PCI总线仲裁器705上的电路基本上相同。值得注意的是,按照第二变更实施例,在目标型选择信号和主控器型选择信号之间没有区别,不象第一变更实施例中的目标型准许和主控器型准许那样。
以下参见图12,图中表示了按照本发明一个实施例的操作程序1200的步骤流程图。程序1200表示按照本发明的多功能集成电路的一般操作步骤。程序1200描述的是一般操作步骤,因此,程序1200可以等效地用来描述上述不同实施例的操作(例如是图1-5的实施例和第一及第二变更实施例)。然而,以下要参照图1-5的实施例来解释程序1200。
程序1200从步1201开始,在这一步由按照本发明一个实施例的多功能集成电路(例如是图1的集成电路100)接收ATPG测试矢量(例如是通过扫描链,插头等等)。如上所述,测试矢量/测试图形通过一个ATE机器输入集成电路100,并且用TAP(例如图2中的TAP200)将集成电路置于测试模式。
在步1202,响应在步1201接收的测试矢量,为集成电路的每一个功能块维持一个扫描测试模式信号“扫描测试模式”。这一信号的作用是配置用于测试的功能块,使其从正常操作模式变换到测试模式。在上文所述的每一个实施例中,由“扫描测试模式”信号起动本发明的逻辑。
在步1203,由于步1201的测试矢量被提供给集成电路的功能块的结果,有一个功能块被起动,以便测试其操作特性。
在步1204由本发明的逻辑禁止所有其他的功能块。如上所述,在图1-5的实施例中,这种逻辑是在各个功能块当中分配的。在第一和第二变更实施例中实施的逻辑是集中在仲裁器中(例如是图6的PCI总线仲裁器601),或者是集中在一个独立的测试专用器件(例如是图11中的测试专用器件1100)中。这样,无论提供任何测试矢量/测试图形,仅有一个功能块可以驱动总线上的信号。
在步1205,本发明的实施逻辑连续监视是否有比当前驱动总线的功能块具有更高优先权等级的功能块,它是由输入的新的测试矢量来起动的。
在步1206,如果起动了具有更高优先权等级的功能块,当前驱动总线的低级优先权功能块就立即被禁止,同时起动高级优先权功能块的输出驱动器。如上所述,这种实施逻辑能够保证不会有来自不同功能块的两组输出驱动器同时驱动总线上各自的信号线。
在步1207和1210,用连续输入的新的测试矢量继续本发明的测试程序,并且随着对集成电路功能的全面检验而产生连续输出的测试数据。
在步1208完成测试程序,不再维持通过集成电路的扫描测试模式信号。这样就能使功能块和本发明的逻辑退出测试模式并且回到正常操作模式。
接着,集成电路在步1209进入正常操作。如上所述,在正常操作期间,功能块的输出驱动器是由其各自的正常操作模式逻辑(例如是按照PCI规范)来控制的。本发明的实施逻辑一直“休眠”到要开始维持另一个扫描测试模式信号即另一个测试程序开始时为止。
这样,本发明就为在集成电路器件的多个功能块当中消除任何潜在的总线争用提供了一种方法和系统。本发明提供的解决方案可以有效地控制多个功能块的多个总线驱动器,在多个功能块受到一系列测试输入(例如是ATPG测试图形,矢量等等)的激励时消除功能块当中的总线争用。本发明的方法和系统是通过设计来保证无论ATPG工具产生任何一种扫描测试图形都不会发生总线争用,这样就能用ATPG工具产生具有更高的故障覆盖范围的测试图形。另外,因为ATPG工具不需要保证不会发生总线争用,它就能够以更快的编译时间产生测试图形。本发明的系统便于实施,在构造上是一致的,并且在集成电路器件的总体设计上具有最小的选通区和系统性能冲突。
本发明具体实施例的上述说明是为了解释而提出的。其用意并不是要将本发明严格地限制在所述范围内,根据上述提示显然还可以有许多修改和变更。之所以选择这些实施例是为了最好地解释本发明的原理及其具体应用,以便本领域的技术人员能够根据具体的用途最好地利用本发明及其各种各样的变更实施例。本发明的范围是由附带的权利要求书及其等效物来限定的。