在集成电路的可编程资源中实施扫描链的电路的制作方法

文档序号:13282696阅读:232来源:国知局
在集成电路的可编程资源中实施扫描链的电路的制作方法

本实用新型大体涉及集成电路装置,并且具体地,涉及一种用于在集成电路的可编程资源中实现扫描链的电路。



背景技术:

诸如现场可编程逻辑器件(FPGA)的可编程逻辑器件(PLD)是有益的,因为它们允许用户基于用户所选择的用户设计来实施用于特定产品实施的电路设计。然而,FPGA通常不容易调试。根据使用情况,FPGA通常有两种主要的调试方式,系统内调试和原型/仿真。可能有一个FPGA逻辑区域因为不能按预期工作而需要调试,在这种情况下,通过使用软件工具(例如可从Xilinx公司获得的ChipScope软件)执行系统内调试以实施被连接到被选定要监控的大约5%的信号的集成逻辑分析器(ILA),并执行布局和布线,然后以系统速度交互地调试设计,可能是有益的。然而,对于没有经过逻辑预定义的已在生产中的产品,这种系统内调试方法是不可能的。

另一种调试方法包括原型/仿真,其需要监视在FPGA上运行的设计的100%。由于从面积和时间的角度来看,使用ILA执行100%的的设计的原型和仿真可能会过于扰乱,可能需要将时钟提前一个周期,然后使用配置网络执行芯片回读。在执行FPGA的回读之后,可能需要将时钟提前一个周期,并使用配置网络执行芯片回读。FPGA上的RTL的有效“仿真”速度因此受到该回读周期的限制,紧跟着该回读周期的是提前用户时钟。

因此,能实现FPGA改进的原型/仿真的电路和方法是有益的。



技术实现要素:

本实用新型描述了一种用于在集成电路的可编程资源中实施扫描链的电路。该电路包括:被配置为接收输入信号并基于所述输入信号生成输出信号的可编程元件;被配置为在第一输入处接收由所述可编程元件生成的所述输出信号,并且在第二输入处接收扫描链输入信号的选择电路,其中所述选择电路响应于选择电路控制信号而生成选定的输出信号;以及被配置为接收所述选择电路的选定的输出信号的寄存器。

在一些实施例中,所述可编程元件包括查找表。

在一些实施例中,所述寄存器包括被配置为生成所述查找表的输出的第一输出和被配置为基于所述扫描链输入信号生成输出的第二输出。

在一些实施例中,所述选择电路包括被配置为接收扫描控制信号的控制输入,所述扫描控制信号使得能够对在所述选择电路的第二输入处接收的所述扫描输入信号进行选择。

在一些实施例中,所述寄存器包括时钟输入,所述电路还包括第二选择电路,所述第二选择电路具有被配置为接收参考时钟信号的第一输入和被配置为接收扫描时钟信号的第二输入。

在一些实施例中,所述可编程元件和所述寄存器是第一可配置逻辑元件的一部分,并且所述寄存器被配置为从第二可配置逻辑元件接收扫描输入,所述电路还包括被配置为向第三可配置逻辑元件提供扫描输出的第二寄存器。

在一些实施例中,所述第一可配置逻辑元件、所述第二可配置逻辑元件和所述第三可配置逻辑元件与可配置逻辑元件的块相关联,所述可配置逻辑元件的块从第一个可配置逻辑元件延伸到最后一个可配置逻辑元件,所述电路还包括第一旁路电路,所述第一旁路电路使能被耦接到第一个可配置逻辑元件的第一扫描信号以旁路所述可配置逻辑元件的块。

在一些实施例中,所述电路还包括第二旁路电路,所述第二旁路电路使能被耦接到所述最后一个可配置逻辑元件的第二扫描信号以旁路所述可配置逻辑元件的块。

在一些实施例中,所述第一可配置逻辑元件、所述第二可配置逻辑元件和所述第三可配置逻辑元件与可配置逻辑元件的块相关联,所述可配置逻辑元件的块从第一个可配置逻辑元件延伸到最后一个可配置逻辑元件,所述电路还包括路由电路,其使得所述可配置逻辑元件的块的可配置逻辑元件的扫描输出能够回送至所述可配置逻辑元件的块的可配置逻辑元件的扫描输入。

在一些实施例中,所述路由电路还包括被配置为从所述电路的逻辑结构接收输入的输入。

用于在集成电路的可编程资源中实施扫描链的另一电路包括从第一个可编程电路延伸到最后一个可编程电路的多个可编程电路,每个可编程电路包括:被配置为接收输入信号并基于所述输入信号生成输出信号的可编程元件;被配置为在第一输入处接收由所述可编程元件生成的所述输出信号,并在第二输入端接收扫描链输入信号的选择电路,其中所述选择电路响应于选择电路控制信号而生成选定的输出信号;以及被配置为接收所述选择电路的选定的输出信号的寄存器;以及第一路由电路,其使得能够接收在所述多个可编程电路的扫描链中从所述第一个可编程电路路由到所述最后一个可编程电路的所述扫描链输入信号,或使得能够旁路所述多个可编程电路。

在一些实施例中,每个可编程电路还包括:第二选择电路,其被配置为在第一输入处接收由所述可编程元件生成的第二输出信号,并且在第二输入处接收第二扫描链输入信号,其中所述第二选择电路响应于所述选择电路控制信号而生成第二选定的输出信号;和第二寄存器,其被配置为接收所述第二选择电路的第二选定的输出信号。

在一些实施例中,所述电路还包括第二路由电路,其使得能够接收在所述多个可编程电路的第二扫描链中从所述最后一个可编程电路路由到所述第一个可编程电路的所述第二扫描链输入信号,或使得能够旁路所述多个可编程电路。

在一些实施例中,所述电路还包括扫描控制块,其被配置为响应于扫描使能信号向所述多个可编程元件提供扫描控制信号。

还描述了一种在集成电路的可编程资源中实施扫描链的方法。该方法包括在可配置逻辑元件的可编程元件处接收输入信号;由所述可编程元件基于所述输入信号生成输出信号;选择由所述可编程元件生成的输出信号或扫描链输入信号作为选定的输出信号;以及在所述可配置逻辑元件的寄存器处接收所述选定的输出信号。

其它特征将通过考虑具体实施方式和权利要求而被认识到。

附图说明

图1是包括用于在集成电路的可编程资源中实施扫描链的电路的集成电路的框图;

图2是在集成电路装置中实施扫描链的多个LUT片元件的框图;

图3是示出在集成电路装置中实现扫描链的多个LUT片元件的电路的框图。

图4是示出在集成电路装置中的可编程资源中实施的扫描链的路由电路的框图;

图5是示出在可配置逻辑元件中的不同位置处的可配置逻辑元件和路由电路的布置的框图;

图6是在图5的框图的多个可配置逻辑元件的第一位置中实施的路由电路的框图;

图7是在图5的框图的多个可配置逻辑元件的第二位置中实施的路由电路的框图;

图8是示出用于以第一频率实施扫描链的电路的第一配置的框图;

图9是示出以第二频率实施扫描链的图7的电路的第一配置的框图;

图10是实施可配置逻辑元件从而使集成电路中可以实施扫描链的可编程逻辑装置的框图;

图11是示出在集成电路的可编程资源中实施扫描链的方法的流程图。

具体实施方式

尽管说明书包括定义了本实用新型中被认为新颖的一个或多个实施例的特征的权利要求,但是通过结合附图考虑具体实施方式将更好地理解所述电路和方法。尽管公开了各种电路和方法,但是应当理解,所述电路和方法仅仅是本实用新型装置的示例,其可以以各种形式实施。因此,本说明书中公开的具体结构和功能细节不应被解释为限制,而仅仅是作为权利要求的基础,以及作为教导本领域技术人员使用实际上任何适当详细的结构的典型基础。此外,本文中使用的术语和短语不旨在限制,而是提供对所述电路和方法的可理解的描述。

下面所阐述的电路和方法包括要在诸如FPGA之类的可编程逻辑装置中以使用最少的用户可编程逻辑资源的方式而实施的高速扫描链。所述电路和方法在仿真/原型应用中特别有益,其中FPGA的整个的状态必须以高速读出。与常规配置网络回读机制相比,所述电路和方法还通过减少回读时间来改进FPGA的高速制造验证测试。

所述电路和方法在使用仿真/原型执行调试中特别有益。在常规回读网络中,回读FPGA状态可能需要几毫秒,这将FPGA上的有效仿真速度限制在大约100Hz的范围内。因为在KHz-MHz范围内在FPGA上仿真RTL是有益的,所以需要改进1000倍。

所述电路和方法允许用户在FPGA中创建高速扫描链,而不必消耗否则将需要的额外布置或布线(routing)资源。这允许非干扰式的解决方案和高速操作。根据一些实施例,通过将CLE块的列转换为垂直扫描链可以实现这种高速操作,其中可编程路由电路在预定位置处。

首先转到图1,图1是包括用于在集成电路的可编程资源中实现扫描链的电路的集成电路100的框图。具体地,输入/输出端口102被耦接到控制电路104,控制电路104控制具有配置存储器108的可编程资源106。配置数据可以由配置控制器110提供给配置存储器108。配置数据使能可配置逻辑元件109的操作。存储器112可以被耦接到控制电路104和可编程资源106。接收器电路114可以被耦接到控制电路104、可编程资源106和存储器112,并且可以在集成电路通过I/O端口116接收信号。其它I/O端口可以被耦接到集成电路器件的电路,例如如图所示被耦接到控制电路104的I/O端口118。时钟网络120被耦接到图1的电路的各种元件。

现在转到图2,其示出了在集成电路器件中实施扫描链的多个LUT片元件(slice elements)的框图。具体地,多个查找表(LUT)电路202在如图所示的列中被实施,其中所述LUT电路包括能接收扫描输入信号并生成扫描输出信号的电路元件。每个LUT电路202包括用于接收输入数据到LUT电路的查找表的输入204,并且在输出206处生成输出数据。每个LUT电路202还在扫描输入208处接收扫描控制信号,以使得能够在输入210处接收扫描输入信号,并且在输出212处生成输出给第二LUT电路202的扫描输出。也可以在输入214处从第二LUT片接收扫描输入并且在扫描输出216处生成扫描输出。扫描控制可以与LUT电路布置的特定LUT电路相关联,并且通过使能回送数据的路由电路将扫描信号从扫描输入210路由到扫描输出216,将在下面更详细地描述。

现在转到图3,其示出了具有多个可编程元件(例如实现集成电路器件中的扫描链的多个LUT电路302-306)的电路300的框图。虽然LUT在图3中以示例的方式示出,但是应当理解,所述用于实施扫描链的电路和方法可以包括实施除LUT之外的可编程元件的电路。更具体地,扫描链的每个LUT电路都包括如LUT电路302中所示的元件。每个LUT电路都包括被配置为在输入309处接收输入信号(在此被示为Input0)的LUT 308。LUT 308的输出被提供给选择电路310,选择电路310在此被示为多路复用器。在输出312处生成的第一LUT输出被耦接到LUT电路302的第一输入314并且LUT电路302的第二输出316被耦接到第二输入318。旁路信号还可被耦接到旁路输入320,而其它信号可被耦接到其它输入(miscellaneous input)322。输出324还被耦接到第二选择电路327的输入326。所述输出316还被耦接到输入328,而第二旁路信号可被耦接到第二输入330以及第二其它信号,第二其它信号被耦接到输入332。

第一和第二选择电路310和327的输出被耦接到具有第一选择电路334和第二选择电路336的扫描链控制块333。第一选择电路334的输入338被配置为接收扫描输入(Scan_In)信号,从而将信号从扫描链的顶部路由到扫描链的底部。选择电路310的输出340还被耦接到选择电路334的输入342。选择电路334的控制输入344还被耦接以接收扫描控制信号(Scan)。选择电路327的输出348被耦接到第二选择电路336的输入350,其也在输入352处接收LUT电路304的扫描输出,从而响应于被耦接到控制输入354的扫描控制电路将信号从扫描链的底部路由到扫描链的顶部。

扫描链控制块333的输出被耦接到寄存器块357的寄存器355和356。具体地,寄存器355的数据输入358被耦接到选择电路334的输出360。所述输出360还被耦接到选择电路364的输入362。选择电路364的第二输入366被耦接到数据输出368。第一输出数据Output0 A在寄存器355的选择电路364的输出369处生成。寄存器355还包括第二输出370,第二输出370包括扫描输出。如下面将更详细地描述,所述寄存器的附加输出使得LUT电路302能够被用作为扫描链的一部分。

选择电路336的输出372被耦接到寄存器356的输入374。数据输出376被耦接到选择电路378的输入380,而数据输入374耦接到选择电路378的输入382。第二输出数据Output0 B在选择电路378的输出384处生成。寄存器356还包括用于生成扫描输出(Scan_Out)信号的第二输出386。

选择电路392被配置为响应于被耦接到选择电路392的控制端子的扫描(Scan)信号来选择时钟(Clk)信号和扫描时钟(Scan_Clk)信号中的一个。输出选择电路392所选定的输出被耦接到寄存器355的时钟输入388和寄存器356的时钟输入390。然而,应当注意,时钟选择电路392可以在除了CLE中之外的位置实现。例如,时钟选择电路可以被实施为集成电路的其它时钟控制电路的一部分。

LUT电路包括扫描链控制块333和寄存器块357,寄存器块357包括具有用于使能扫描链从而使LUT电路既能用作PLD的常规可编程资源也能作为用于扫描链测试的扫描链元件的输出的寄存器。更具体地,与寄存器相关联的选择电路(例如被耦接到寄存器355的选择电路334)使在扫描输入394处(其可以是在扫描链的开始处的输入,或者是来自上述LUT电路的输出)接收的扫描输入数据被耦接到该寄存器的数据输入,以及使单独的扫描输出370被耦接到扫描输出396(其可以是扫描链的输出或是被耦接到下方LUT电路的输入的输出)。所述LUT片的扫描输入397被耦接到选择电路336的输入352,而在扫描输出386处生成的输出被耦接到扫描输出395,输出395可以是扫描链的输出或被耦接到上方的LUT电路的扫描输入397。

如下面将更详细地描述地,被耦接到扫描输入394的扫描输入通过扫描链从第一个LUT电路(即LUT电路302)向下路由到最后一个LUT电路(即LUT电路306),然后从最后一个LUT电路306返回到第一个LUT电路302的扫描输出395。在正常LUT操作期间,LUT的输入被LUT接收,并且Output0、Output1...OutputN在LUT电路302-306的输出处生成。然而,在扫描链模式中,扫描输入(即提供给扫描输入394和397的扫描输入信号)和扫描输出(即在扫描输出395和396处生成的扫描输出信号)使用寄存器块357的寄存器使能扫描链中的数据的路由,所述寄存器通常用于在正常操作期间存储LUT的输出。因此,扫描链控制块333的附加多路复用器和被配置为生成单独扫描输出的寄存器块357的寄存器使得能够使用通常用于常规LUT操作的LUT片的元件(例如,寄存器元件)来实施扫描链。

此外,扫描控制块402可以被实施为使LUT电路作为扫描链的一部分运行。扫描控制块402包括被耦接以接收扫描使能信号(Scan_Enable)的与门404,例如所述扫描使能信号可以在电路配置期间由存储器单元(MC)提供。当扫描模式被使能(例如,将逻辑1提供给与门404的输入406)时,在与门的另一输入408处的扫描使能信号使得在输出410处生成的扫描控制信号能够被提供给LUT片,如上文中参考图2所描述地。

扫描控制块402的第二部分控制LUT电路302-306的寄存器,以允许在扫描操作期间生成的提供给数据输入的数据为寄存器的Q和QSCAN两输出,或者仅是QSCAN输出。更具体地,与门412被配置为在输入414处接收Scan信号,并在输入416接收控制信号(Disable_Q_Output)。输出418被耦接到或门422的输入420。全局(ghigh)信号被耦接到输入端424,其中在输出426处生成的寄存器控制信号被耦接到第一寄存器355的控制输入428和第二寄存器356的控制输入430。在输出426处生成的控制信号通过在CLE中内部设置ghigh有效来防止Q输出翻转,从而节省功率。在操作中,ghigh信号是可以提供给扫描链中的所有寄存器的全局信号,并且在部分重新配置期间使用。Disable_Q_Output信号可用于在扫描操作期间选择性地禁用寄存器的Q输出。也就是说,Disable_Q_Output信号还用于在输出426处生成信号,以防止在Scan信号也为高时在扫描操作期间Q输出的翻转。例如,用于特定扫描控制块402的Scan_Enable可以由可编程存储器单元设置,以允许与该扫描控制块402相关联的LUT电路用于扫描链。Disable_Q_Output信号可以设置为低,这允许扫描链中的单个CLE中的Q信号翻转,使得扫描链可以从该输出采样。也就是说,CLE仍然在扫描链中操作,因为Scan_Enable和Scan被设置有效,但是Q输出端处的信号被允许翻转。

根据一个实施例,可配置逻辑元件(CLE,例如参考图5更详细描述地),可以由在输出处具有2个触发器的8个6输入LUT电路组成。CLE电路还可以包括用于选择扫描时钟而不是用于集成电路的时钟信号以使能扫描操作的选择电路。额外的输出“QSCAN”被添加到触发器,“QSCAN”连接到触发器的从级的输出。因此,在“扫描”模式期间,使Disable_Q_Output信号被设为有效以在输出426处生成逻辑1,其将触发器的Q输出拉到0,并且因此通过防止其翻转来节省功率。

可能需要保持来自每一CLE块或每一CLE列的一个输出,使得可通过架构中的调试逻辑来监视数据状态的移位,下文将参考图5-9对此进行更详细的描述。还可以添加附加电路以使形成扫描链的信号被编程来形成环路,下文将参考图6和7对此进行更详细的描述。

现在转到图4,其示出了在集成电路器件中的可编程资源中实施的扫描链的路由电路的框图。可以在一个或多个CLE中实施的LUT电路的垂直列可以形成为扫描链。在扫描链的结尾处,使用扫描控制块402可以形成环路并且可以将扫描控制信号路由到一个或多个CLE的LUT电路。路由电路也被提供以用于电路300的一组LUT电路,电路300可以包括CLE(具有预定数量的LUT电路)或一组CLE。也就是说,在电路300的底部提供第一路由电路432,并且在电路300的顶部提供第二路由电路433。如下面将更详细描述地,路由电路432和433使扫描信号在被配置为作为扫描链运作的LUT电路间向上和向下路由,或者使能旁路路由电路432和路由电路433之间的LUT电路。如果希望电路300的LUT电路被实施为扫描链的一部分,则路由电路的选择电路被配置为使扫描信号从上面的另一电路300或往下面的另一电路300路由。也就是说,路由电路432被配置为在选择电路436的输入434处接收扫描输出396处的扫描输出信号。输入438被耦接为在输入438处接收输入顶(IN_TOP)信号,在输出440处生成输出底(OUT_BOT)信号。也就是说,如果图4的电路300不是扫描链的一部分,而是图4的电路300下方的电路是扫描链的一部分,那么选择电路440将被控制为将输入顶(IN_TOP)信号作为OUT_BOT输出而路由。并非在LUT电路306的输出395处的IN_TOP信号被路由通过扫描链并且在输出452处生成为OUT_TOP信号,而是IN_TOP信号被直接提供给选择电路436以使能扫描链响应旁路信号(Bypass)而旁路图4的电路300。然而,如果图4的电路300是扫描链的一部分,则响应于在输入442处的旁路信号,在输出440处生成扫描链的输出,其是在输出396处生成并在选择电路436的输入434处被接收,从而使得扫描链信号通过电路300从电路300顶部的LUT电路302路由到电路300底部的LUT电路306。

类似地,路由电路433使扫描链信号由图4的电路300的下方路由到电路300的上方。也就是说,选择电路446被配置为在第一输入448处接收输入底(IN_BOT)信号以及在输入450处接收LUT片302的顶部输出,以响应于控制输入454处的旁路信号而在输出452处生成扫描输出(OUT_TOP)信号,所述扫描输出信号用于图4的电路300上方的电路300。如果希望电路300被旁路,则被提供给LUT电路306的扫描输入397的底部输入扫描(IN_BOT)信号响应于在选择电路446的控制输入454处接收的旁路信号被直接提供给路由电路433。

在扫描链中形成环路,使得当数据通过扫描链被计时时,在计时N个周期(其中N是扫描链的触发器中的高度)之后,数据回到其原始位置。因此,不需要额外的电路来将数据写回到扫描链。也就是说,由于读取扫描链将造成移位否则将破坏原始数据,环路使数据被写回到扫描链。将参考图5-9更详细地描述该环形连接的示例。数据的回送可以通过使用FPGA互连来完成,这将在下文中参考图11被更详细地描述。一些软逻辑可以用于将多个CLE列扫描链信号(例如50-100个CLE)连接到总线中,并且使用AXI流协议通过片上网络(NoC)将数据送出芯片。

现在转到图5,其示出了可配置逻辑元件中不同位置处的可配置逻辑元件和路由电路的布置框图。如图5所示,CLE的分组使能两个扫描链的路由。更具体地,CLE块502(也称为4XCLE)优选地在具有以如图所示的2x2CLE矩阵分布的4个CLE,其中每个CLE可以包括8个LUT电路(每个具有两个触发器,总共16个触发器)。如图5的示例所示,地址线(ALINE)电路504被实施为在4个CLE块502之间布置成列。此外,行时钟电路506也可以被实施于如图所示的集成电路中的特定位置处。然而,应当理解,CLE包括至少一个LUT电路,但是可以包括任何数量的LUT电路。

路由电路与第一扫描链508和第二扫描链510相关联,其中第一路由电路512(下文参考图6有更详细的描述)被实施以用于ALINE电路504中的每个扫描链,而第二路由电路514(下文参考图7有更详细的描述)被实施以用于读时钟电路506中的每个扫描链。第一路由电路512和第二路由电路514使能扫描链的配置和在扫描链内期望位置处的数据的回送,这些将在下文中参考图8和9的示例作出更详细的介绍。例如,图6的旁路电路可以在每个4XCLE之间实现。

现在转到图6,其是示出了在图5的框图的多个可配置逻辑元件的第一位置中实施的路由电路的框图。路由电路512包括第一多路复用器,其使能来自路由电路512下方的输入扫描(IN_BOT)信号的路由从而生成为输出扫描(OUT_TOP)信号,或使能来自路由电路上方的输入扫描(IN_TOP)信号的路由从而被生成为路由电路下方的输出扫描(OUT_BOT)信号。更具体地,第一选择电路602和第二选择电路604(在这里示为多路复用器)使能在扫描链中的CLE或CLE组之间在两个垂直方向上路由信号,或者将数据回送。也就是说,第一选择电路602在路由电路的输入605处从路由电路512的下方接收输入扫描(IN_BOT)信号,并且IN_BOT信号被耦接到选择电路的输入606,从而(响应于控制输入610处的信号)在被耦接到输出614的选择电路输出612处生成为输出扫描(OUT_TOP)信号。选择电路602的第二输入608被耦接而在输入616处从该路由电路的上方接收输入扫描(IN_TOP)信号以在路由电路的下方(即在输出626处)生成输出扫描(OUT_BOT)信号,或在扫描操作期间响应于控制信号(在此示为基于存储在存储器单元(MC)中的值的数据输入)被选择电路602回送。

选择电路604还使能扫描信号从选择电路604上方的CLE到选择电路604下方的CLE的路由。更具体地,顶部输入扫描(IN_TOP)信号被耦接到第一输入618并且底部输入扫描(IN_BOT)信号被路由到第二输入620,其中被耦接到选择输入622的控制信号MC使顶部输入(IN_TOP)信号或底部输入(BOT_TOP)信号路由到输出624作为输出扫描(OUT_BOT)信号。因此,路由电路512使能扫描数据从顶部路由到底部以及从底部路由到顶部,或从顶部CLE的输出回送到顶部CLE的输入以及从底部CLE的输入回送到底部CLE。

现在转到图7,其是示出了图5的框图的多个可配置逻辑元件的第二位置中实施的路由电路514的框图。路由电路514类似于路由电路512,但是还包括选择电路702和704以使能从扫描链的外部施加外部输入。更具体地,选择电路702由被耦接到选择输入706的选择信号(Select A)控制。选择电路702还被配置为在第一输入708处接收外部输入(Select A),并且在输入710处接收选择电路602的输出以在输出712处生成选定的输出。因此,除了能够传递扫描信号或将扫描信号作为输入回送到同一路由电路之外,路由电路514还使外部输入被提供给CLE。类似地,选择电路704在选择输入714处接收选择信号(Select B),以使能选择输入716处的第二选择输入Input B或选择输入718处的选择电路604的输出,并在输出720处生成选定的输出。

现在转到图8和图9,其示出了用于以不同频率实现扫描链的电路的第一和第二配置的框图,其中扫描区域可以被划分为以较低时钟频率运行的多个区域。也就是说,可以一起测试被耦接到结构逻辑(fabric logic)806的第一区域802和第二区域804中的每一个,并且片上网络(NoC)808也可以被一同测试,其中所述电路需要在800MHz工作以实现期望的测试频率,如图8的实施例中所示。然而,如图9所示,CLE可以被分割成两个单独的部分902和906,每个部分分别被耦接到耦接至NoC 910的分立结构逻辑904和908,以使能CLE的扫描链测试。根据图9的实施例,与两个分立的部分902和906中的每一个相关联的扫描链可以在400MHz的频率下工作。

现在转到图10,其是示出了实施使能在集成电路中实施扫描链的可配置逻辑元件的可编程逻辑装置1000的框图。虽然具有可编程资源的器件可以在任何类型的集成电路器件(诸如具有可编程资源的专用集成电路(ASIC))中实现,但是其它器件也可以包括专用可编程逻辑器件(PLD)。一种类型的PLD是复杂可编程逻辑器件(CPLD)。CPLD包括通过互连开关矩阵连接在一起并连接到输入/输出(I/O)资源的两个或更多“功能块”。CPLD的每个功能块包括类似于在可编程逻辑阵列(PLA)或可编程阵列逻辑(PAL)器件中使用的两级“与/或”结构。另一种类型的PLD是现场可编程门阵列(FPGA)。在典型的FPGA中,可配置逻辑块(CLB)的阵列被耦接到可编程输入/输出块(IOB)。CLB和IOB通过可编程路由资源的层级结构互连。这些CLB、IOB和可编程路由资源通过将配置比特流(通常从片外存储器)加载到FPGA的配置存储器单元中来定制。对于这两种类型的可编程逻辑器件,器件的功能由为此目的而提供给该器件的配置比特流的配置数据比特控制。配置数据比特可以被存储在易失性存储器中(例如,静态存储器单元,如在FPGA和一些CPLD中)、非易失性存储器中(例如,闪存,如一些CPLD)或任何其它类型的存储器单元中。

图10的器件包括具有大量不同的可编程片的FPGA架构1000,所述可编程片包括多千兆位收发器(MGT,multi-gigabit transceivers)1001、CLB 1002、随机存取存储器块(BRAM)1003、输入/输出块(IOB)1004、配置和时钟逻辑(CONFIG/CLOCKS)1005、数字信号处理块(DSP)1006、专用输入/输出块(I/O)1007(例如配置端口和时钟端口)以及其它可编程逻辑1008,例如数字时钟管理器、模数转换器、系统监视逻辑等。一些FPGA还包括专用处理器块(PROC)1010,其可以用于例如实施软件应用。

在一些FPGA中,每一可编程片包括具有去往和来自每一相邻片中的对应互连元件的标准化连接的可编程互连元件(INT)1011。因此,可编程互连元件一起实施用于所示FPGA的可编程互连结构。可编程互连元件1011还包括到同一片内的可编程逻辑元件的连接和来自该可编程逻辑元件的连接,如由图10顶部的示例所示。

例如,CLB 1002可以包括可编程以实现用户逻辑的可配置逻辑元件(CLE)1012加上单个可编程互连元件1011。BRAM 1003除一个或多个可编程互连元件外还可以包括BRAM逻辑元件(BRL)1013。BRAM包括与配置逻辑块的分布式(distributed)RAM分离的专用存储器。通常,片中包括的互连元件的数量取决于片的高度。在图示的实施例中,BRAM片具有与五个CLB相同的高度,但是也可以使用其它数量。除了适当数量的可编程互连元件之外,DSP片1006可以包括DSP逻辑元件(DSPL)1014。除了可编程互连元件1011的一个实例之外,IOB 1004还可以包括例如输入/输出逻辑元件(IOL)1015的两个实例。器件连接的位置由为此目的提供给该器件的配置比特流的配置数据位控制。可编程互连响应于配置比特流的位使包括互连线的连接能够用于将各种信号耦接到在可编程逻辑中实现的电路,或其它电路(如BRAM或处理器)。

在图示的实施例中,靠近裸片中心的柱状区域用于配置、时钟和其它控制逻辑。从该柱延伸的配置/时钟分布区域1009用于在FPGA的宽度上分配时钟和配置信号。一些利用图10所示架构的一些FPGA包括打乱构成FPGA的大部分的常规柱状结构的附加逻辑块。附加逻辑块可以是可编程块和/或专用逻辑。例如,图10中所示的处理器块PROC 1010跨越几个CLB和BRAM柱。

注意,图10仅旨在示出示例性的FPGA架构。柱中的逻辑块的数目、柱的相对宽度、柱的数目和顺序、柱中包括的逻辑块的类型、逻辑块的相对大小以及包括在图10的顶部的互连/逻辑实施例是纯示例性的。例如,在实际的FPGA中,在CLB出现的任何地方通常包括多于一个相邻的CLB柱,以便于用户逻辑的有效实施。虽然图10的实施例涉及具有可编程资源的集成电路,但是应当理解,下面更详细阐述的所述的电路和方法可以在任何类型的ASIC中实现。

现在转到图11,流程图示出了一种在集成电路的可编程资源中实施扫描链的方法。具体地,在框1102,在可配置逻辑元件的可编程元件处接收输入信号。在框1104,接收使能将扫描输入信号选作选定的输出信号的扫描控制信号。在框1106,将参考时钟信号或扫描时钟信号耦接到寄存器的时钟输入。在框1108,可编程元件基于输入信号生成输出信号。在框1110,可编程元件的输出在寄存器的第一输出处生成,并且基于扫描链输入信号的输出在寄存器的第二输出处生成。在框1112,由可编程元件生成的输出信号或扫描链输入信号被选为选定的输出信号。在框1114,可配置逻辑元件的寄存器处接收所选定的输出信号。图11的元件可以使用如上所述的任何电路或其它合适的电路来实现。虽然图11中包括该方法的特定元件,应当理解,附件元件以及与所述元件相关的附加细节可以如参考上述电路所描述的那样来实现。

根据各种实施例,所述可编程元件和所述寄存器可以是第一可配置逻辑元件的一部分,其中所述方法还包括配置所述寄存器以从第二可配置逻辑元件接收扫描输入,以及实施被配置为向第三可配置逻辑元件提供扫描输出的第二寄存器。第一可配置逻辑元件、第二可配置逻辑元件和第三可配置逻辑元件可以与从第一个可配置逻辑元件延伸到最后一个可配置逻辑元件的可配置逻辑元件块相关联,其中所述方法还可以包括使得将第一扫描信号耦接到所述第一可配置逻辑元件以旁路所述可配置逻辑元件块。所述方法还可以包括使能第二扫描信号耦接到末尾可配置逻辑元件以旁路可配置逻辑元件块,如参考图4所述。所述方法还可包括在所述可配置逻辑元件块的扫描输入处接收来自所述电路的逻辑构造的输入。

考虑到性能分析,FPGA可以具有60个CLE柱,每个柱具有5个FSR高,或每个柱300个CLE。每个CLE具有16个触发器,每个柱4800个触发器。在800MHz时,翻转4800次(以循环整个扫描链)需要6微秒(μs),之后用户逻辑将使设计系统时钟提前一个周期。因此,“有效仿真”速度为166KHz,或者比常规方法增加100-1000倍的速度,其工作在大约100Hz-1Khz的范围。从所有CLE柱生成进入NoC的带宽是每个柱0.8Gb/s。例如,可能有123个CLE柱,总共98.4Gb/s带宽。

在来自Xilinx公司的Vivado FPGA中的测试设计中,4800个触发器的若干扫描链被有约束地放置以形成柱。在具有800MHz时钟和几列的50%触发率(toggle rate)的功率报告中,功率大约是每柱80mW,触发器为59mW,互连为20mW,对于具有123个CLE列的装置,功率约为20W。如果确定这样的功率太大,则有几种降低功率的方法,包括使用慢时钟(以速度换功率)以减小平均功率,使用时间借用(时钟偏移)以使各柱不全部同时翻转(toggle)减少瞬时电流,将扫描链区域分割成多个区域(例如每个区域2个FSR高),并以较慢的时钟速度运行。如图8和9所示,仍然可能实现相同的总体扫描链吞吐量,因为以400MHz工作的两条链具有两个进入到NoC中的连接,仍可以实现与以800MHz工作的具有一个进入到NoC中连接的一条链相同的吞吐量。所述电路还可用于在将FPGA发货给客户之前执行高速制造验证测试。这种减少的验证测试时间通过减少每个芯片的测试时间可以降低测试成本。

因此可以理解,已经描述了用于在集成电路中实现扫描链的新的电路和方法。本领域技术人员将理解,可以结合公开的本实用新型发现大量的替代方案和等同方案。因此,本实用新型不受前述实施例的限制,而是仅由所附权利要求限制。

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