具体实施方式
本发明涉及集成电路,并且更具体地涉及对包括冗余逻辑块的集成电路的设计和验证。根据本发明的一些方面,提供了用于集成电路的方法和相关结构,其允许对冗余逻辑块控制逻辑分段验证。也即,验证的工作划分为事项。逻辑功能验证(影响(leveraging)正常功能逻辑仿真/覆盖技术)验证了基本构建块(例如单独的逻辑块)。结构验证在芯片层级对正确地连接在一起的构建块进行验证。此外,本发明的方面允许仅使用一个代表性排列而对冗余逻辑块的芯片层级验证,其中根据部分良好的芯片设计而禁用一个或多个冗余逻辑块。因此,在此所述根据本发明的一些方面的分段验证与传统技术相比节省了大量验证工作。
在一些实施例中,大量冗余逻辑块位于相应的电压岛内,使得任何一个或多个冗余逻辑块可以通过选择性门控(也即减小或停止)至对应电压岛的供电而禁用。这些逻辑块可以称作“部分良好的电压岛块”,因为根据设计一个或多个冗余逻辑块无需对于将要运行的集成电路是功能性的。换言之,集成电路的冗余逻辑块可以是“部分良好”,使得冗余逻辑块的制造产率可以小于100%以生产根据设计运行的集成电路。例如,每一个冗余逻辑块可以包括多处理器控制器的处理器核心和/或存储逻辑的块。冗余逻辑块并不限于处理器核心和存储器块,并且替代地可以是在集成电路芯片中重复的任何类型结构(例如门阵列)。
根据本发明的一些方面,集成电路设计包括接口逻辑和选择逻辑。在一些实施例中,接口逻辑提供了将单独的冗余逻辑块与集成电路的其他元件分隔开的接口(例如包件(wrapper)或分隔件(fence))。在本发明的一些方面中,接口逻辑可以由选择逻辑单独控制,以选择性地禁用冗余逻辑块和/或从集成电路的其他功能元件断开冗余逻辑块。例如,在冗余逻辑块包括处理器核心的情形中,接口逻辑可以包括将每个处理器核心的输入和输出连接至包括在集成电路中其他功能逻辑(例如处理器、存储器、存储、通信、数据总线等等)的开关逻辑。此外,接口逻辑可以包括开关逻辑以将每一个电源输入连接至相应电源(例如电压岛)。
根据本发明的一些方面,选择逻辑和接口逻辑是从数据库可检索的预设计元件(例如逻辑块),并且具有预定的互连。在一些实施例中,使用具体连接(例如唯一的管脚类型,其可以经由设计数据中的关键词或者属性而符号化)来限定互连,其中仅允许互连某些特定有效连接(例如类型)。就此而言,选择逻辑和接口逻辑可以仅以单个方式有效连接。例如,管脚类型可以在选择逻辑和接口逻辑的软件定义(例如VHDL)中预先设定。
有利地,本发明的一些方面大大减少了涉及对具有电压岛冗余逻辑块的集成电路的设计和验证的努力。这是因为预定的选择逻辑和接口逻辑最小化了涉及对用于选择性禁用冗余逻辑块和/或从电源和数据路径断开冗余逻辑块的逻辑进行设计和验证的设计努力。此外,根据本发明的一些方面,冗余逻辑块和接口逻辑块的每个实例是相同的。此外,因为预定了选择逻辑和接口逻辑之间的互连,所以冗余逻辑块的单个示例及其与单个接口逻辑块的接口可以用于对它们的组合的设计进行验证。此外,可以仅对集成电路的一个代表性排列执行芯片层级验证,其中包括在集成电路的设计中的给定数目的冗余逻辑块示例由选择逻辑使用相应接口逻辑而禁用。
图1示出了根据本发明的一些方面的用于集成电路芯片100的示例性结构。集成电路芯片100包括许多可选的逻辑块110A…110D、选择逻辑120、一个或多个功能性逻辑块130、数据总线140以及选择线路150A…150D。可选的逻辑块110A…110D包括在电连接至对应电源VSA…VSD的相应电压岛中。此外,可选的逻辑块110A…110D经由数据总线140而通信地连接至功能性逻辑块130。功能性逻辑块130可以包括例如一个或多个处理器、存储器、存储、通信装置、数据总线等等。因为集成电路芯片100的结构是示例性的,应该理解的是,根据本发明的集成电路芯片不限于图1中所示结构。例如,集成电路芯片100可以具有更少或更多数目的可选的逻辑块110A…110D。此外,可选的逻辑块110A…110D和/或功能性逻辑块130之间的互连不限于数据总线140,并且替代地可以是任何类型的有线或无线数据链路(例如串行或并行)。
根据本发明的一些方面,选择逻辑120的输出OA…OD经由选择线路150A…150D而连接至可选的逻辑块的相应输入IA…ID,由此选择逻辑120选择性禁用一个或多个可选的逻辑块110A…110D。也即,选择逻辑120控制了特定一个可选的逻辑块110A…110D以断开其相应电源VSA…VSD和/或集成电路100的其他功能性逻辑块(例如通过断开数据总线140)。例如,执行了集成电路芯片的制造后测试的芯片制造商可以触发选择逻辑120以禁用标识为过剩或有缺陷的冗余逻辑块。在一些实施例中,可选的逻辑块110A…110D包括仅由来自选择逻辑120的信号激活的数据启用逻辑。
在一个示例性实现方式中,集成电路100可以是设计用于使用少于全部数目(例如四个中的三个)冗余处理器核心的部分良好电压岛芯片。每个冗余处理器核心可以包括在可选的逻辑块110A…110D中的相应可选的逻辑块中。集成电路芯片100的制造后测试可以确定可选的逻辑块110A中的一个冗余处理器核心是过剩的和/或有缺陷的。标识了良好和/或损坏处理器核心的信息可以存储在选择逻辑120中。基于所存储的信息,选择逻辑120可以通过经由输出OA和信号线150A将禁用信号传输至可选的逻辑块110A的输入IA以从电压源VSA和/或数据总线140断开过剩和/或有缺陷的处理器核心从而禁用该过剩或有缺陷的处理器核心。此外,选择逻辑110可以通过经由输出OA…OD和选择线150B…150D而传输相应的启用信号至输入IB…ID而启用可选的逻辑块110B…110D。使得可选的逻辑块110A禁用并且启用可选的逻辑块110B…110D,集成电路芯片100可以根据设计运行。
根据本发明的一些方面,基于存储在集成电路芯片100中可使用的集成电路元件的数据库中的预先设计的元件而制造可选的逻辑块110A…110D和选择逻辑120。选择逻辑120的输出连接OA…OD以及可选的逻辑块110A…110D的相应输入连接IA…ID在软件定义中规定,使得它们可以以单个有效的方式连接。在可选的逻辑块110A…110D是相同逻辑的实例的情形中,修改每个实例的相应输入连接IA…ID以唯一的标识其相应逻辑块。
在本发明的一些实施例中,每个输出连接OA…OD和输入连接IA…ID是在可选的的选择逻辑120和逻辑块110A…110D的软件定义中指派不同类型的管脚,并且每个管脚类型仅被允许连接至特定管脚类型。因此,选择线150A…150D以规定方式连接了选择逻辑120的逻辑和可选的逻辑块110A…110D。因此,为了验证的目的,只要选择逻辑120和可选的逻辑块110A…110D的内部逻辑是正确的,并且在结构上验证了选择线150A…150D的互连,则集成电路100可以期望根据设计运行。因此,选择逻辑120和可选的逻辑块110A…110D的芯片层级验证仅涉及对一个或少数排列的测试(例如数目对应于可以禁用的可选的逻辑块110A…110D的数目,其在该示例中为一个)。并不需要用于显示禁用任何可选的逻辑块110A…110D的所有排列的穷举性芯片层级验证。
图2示出了根据本发明一些方面的示出示例性集成电路芯片100的细节的框图。更具体地,图2示出了示例性可选的逻辑块110A和110B以及选择逻辑120的细节。显著地,尽管为了细节而在图2中仅示出了可选的逻辑块110A和110B,关于可选的逻辑块110A和110B的以下说明描述同等地应用于图1中的可选的逻辑块110C和110D,以及根据本发明一些方面的其他芯片中的任何数目的可选的逻辑块。
根据本发明的一些方面,每个可选的逻辑块110A和110B包括冗余逻辑块210的实例以及接口逻辑块220的实例。接口逻辑块220可以提供将每个冗余逻辑块210与集成电路芯片100的其他功能性部件(例如图1中功能性逻辑块130)分隔(例如分隔件)的接口(例如包件)。在一些实施例中,由选择逻辑120经由选择线150A和150B来选择性控制接口逻辑块220。接口逻辑块220可以包括电源启用逻辑225和数据启用逻辑230。在一些实施例中,电源启用逻辑225在冗余逻辑块210的电源输入(例如Power In)与冗余逻辑块210的相应电源VSA和VSB之间提供可切换的连接。因此,可以选择性减小或切断从电源VSA和VSB向冗余逻辑块210的供电。在一些实施例中,电源启用逻辑225是启用了选择逻辑120以导通或者关断向电压岛供电的电压岛集线器(header)装置。本领域技术人员理解可控地减少和/或切断来自电源的供电的逻辑,因此对这种逻辑的进一步解释说明对于理解本发明而言并非是必需的。
仍旧参照图2,数据启用逻辑230可以向每个接口逻辑块220提供在冗余逻辑块210的相应数据连接(例如管脚)与集成电路芯片100的其他元件之间的可切换连接。在一些实施例中,数据启用逻辑230将冗余逻辑块210从数据总线140断开连接。例如,数据启用逻辑230可以包括多路复用器逻辑和/或逻辑门,当可选的逻辑块110A和110B的对应一个被禁用时,与冗余逻辑块210的输入和输出(也即数据I/O)对接以断开输入和输出。本领域技术人员理解对信号进行复用和/或门控的逻辑装置,使得对这些装置的进一步解释说明对于理解本发明而言并非是必需的。
根据本发明的一些方面,接口逻辑块220是修改以与特定冗余逻辑块210对接的预设计元件的实例。例如,设计者可以生成包括了冗余逻辑块210的实例的新集成电路设计。设计者可以修改设计以包覆在对应的接口逻辑块220中冗余逻辑块210的每一个实例,接口逻辑块220将冗余逻辑块210与集成电路芯片100的其他功能逻辑分隔开。该修改可以包括改变接口逻辑块220以对接冗余逻辑块210的特定数据输入和输出(也即数据I/O)。例如,设计者可以基于冗余逻辑块210的数据输入和输出定制接口逻辑块220的多路复用器和/或门。设计者随后可以对组合的冗余逻辑块210和接口逻辑块220的单个实例(也即可选的逻辑块110A或110B)执行验证测试以验证它们的功能。在一些实施例中,设计者可以使用建模和仿真软件以验证接口逻辑块220的电源启用逻辑225和数据启用逻辑230采用冗余逻辑块210的输入和输出而执行功能。设计者也可以使用建模和仿真软件以验证冗余逻辑块210和接口逻辑块220一起用作可选的逻辑块110A或110B,并且它们的组合满足了集成电路芯片100内冗余逻辑块210的设计和接口需求。
此外,根据本发明的一些方面,选择逻辑120包括配置存储240和解码器块250。在一些实施例中,配置存储240是包括记录了芯片具体配置结构信息245的非易失性存储器的逻辑装置。在一些实施例中,配置存储240包括电子芯片标识器(“ECID”),其中由可熔断链路存储配置信息245,可熔断链路编码了标识可选的逻辑块110A和110B的信息,以用于由选择逻辑120启用和/或禁用(也即良好或损坏)。可以基于制造后测试针对特定集成电路芯片100确定配置信息245。例如,在制造了集成电路芯片100之后,操作测试可以确定可选的逻辑块110A中冗余逻辑块210是损坏的(也即未通过操作集成电路100所需的一个或多个测试)并且可选的逻辑块110B的冗余逻辑块210是良好的(也即通过了操作集成电路100所需的所有测试)。在该情形下,配置信息245可以存储在配置存储240中,从而标识用于禁用的可选的逻辑块110A和/或用于启用的可选的逻辑块110B。
在一些实施例中,解码器块250是解码了存储在配置存储240中配置信息245并且将其转化为启用/禁用信号以用于可选的逻辑块110A和110B的逻辑装置。在一些实施例中,基于对于特定集成电路芯片100的配置信息245,解码器逻辑250解码了配置信息245并将其映射至输出225A(OA)和输出225B(OB),输出225A(OA)和输出225B(OB)经由选择线150A和150B而连接至接口逻辑块220的输入IA和IB。例如,解码器块250可以参数化为“N:M”解码块。可以实现任何数目的传统解码方案以从存储在配置存储240中的启用/禁用信息转化为启用/禁用信号(例如从N个熔丝转化为M个启用,其中N<M)。这些解码方案对于相关技术领域中本领域技术人员而言是熟悉的,因此无需进一步解释说明以理解本发明。可以设计解码器逻辑250以对于任何数目冗余逻辑块210而处理解码的任何组合,其可以包括在集成电路芯片100的设计中。可以使用仿真对于独立基础执行对解码器逻辑250的验证以验证其解码并且映射配置信息245。
根据本发明的一些方面,配置存储240和解码器逻辑250是在两者之间具有特定允许的连接的预定元件。同样,在解码器逻辑250和接口逻辑块220之间的连接也是预定的,其中接口逻辑块220的每一个实例具有去往解码器块250的特定允许的连接。在一些实施例中,配置存储245的输出251仅允许有效地以特定方式连接至解码器逻辑250的输入253。此外,解码器逻辑250的输出255A(OA)和输出255B(OB)仅允许分别有效地连接至输入257A(IA)和输入257B(IB)。
根据本发明的一些方面,修改在集成电路芯片100的设计中包括的接口逻辑块220的每个实例以唯一地标识其相应输入257A、257B。在一些实施例中,限定配置存储240、解码器逻辑250和接口逻辑块220的模型的软件代码(例如VHDL)可以限定特定类型管脚,每一个输入和输出允许连接(例如通过选择线150A和150B)。这确保了实施正确的逻辑结构而不必在芯片层级对接口逻辑块的功能穷举地建模和仿真。替代地,可以执行芯片层级结构验证(例如电气规则检查)以基于它们相应管脚类型而验证所有用于启用和禁用冗余逻辑块210的连接是有效的。这导致对验证的传统方法的显著简化,其中对不同熔丝数值的巨大矩阵仿真,以确保熔丝数值的所有可能组合产生了冗余逻辑块的正确子集,其位于供电的电压岛上并且连接至有源数据路径。
此外,根据本发明的一些方面,在集成电路芯片100的设计中包括选择逻辑120和可选的逻辑块110A和110B大大简化了对集成电路芯片100的设计和验证。也即,每个可选的逻辑块110A或110B在功能上是等同实例,其可以通过预定义和预验证的选择逻辑120而单独地启用和/或禁用。就此而言,并非必需对启用和/或禁用的冗余逻辑块的每一个可能排列执行功能验证。替代地,只要配置存储240、解码器逻辑250和可选的逻辑块110A和110B已经验证作为独立元件并且如它们相应元件定义中的规定(可以由结构验证来验证)而有效地连接,则选择逻辑120将正确地执行功能。因此,功能验证对于启用/禁用的冗余逻辑块的所有可能排列而言并非必需。
基于对可选的逻辑块110A和110B以及选择逻辑120的前述描述说明,本发明的一些方面提供了对包括电压岛冗余逻辑块的集成电路的简化验证。例如,设计者可以提供对于包括冗余逻辑块210的集成电路芯片100的设计,其可以是唯一的或者用户定制的设计。芯片制造商可以维持集成电路元件的预定库,包括配置存储240、解码器逻辑250和接口逻辑块220。库可以包括对应于制造技术的配置存储240、解码器逻辑250和/或接口逻辑块220的不同版本。设计者可以与芯片制造商一起合作以通过修改预定元件以与设计者的冗余逻辑块210的特定输入/输出相接口而将冗余逻辑块210的实例与相应接口逻辑块220相组合。设计者可以基于冗余逻辑块210而定制接口逻辑块220的数据启用230(多路复用以及门逻辑),并且可以存储该组合作为可选的逻辑块110A、110B的实例。设计者随后可以通过仿真对可选的逻辑块110A、110B的实例的功能进行验证。因为可选的逻辑块110A、110B的实例对于包括在集成电路芯片100的设计中的其他块在功能上等同,任何数目的可选的逻辑块110A和110B可以例示在芯片设计中。每个实例将可以由解码器逻辑250控制,预设计解码器逻辑250以解码和禁用和/或启用信号并且将其映射至可以合理地包括在集成电路的给定设计中的任何数目的可选的逻辑块。包括可选的逻辑块110A和110B以及选择逻辑120的集成电路芯片100随后可以采用单个有效芯片配置结构来仿真。例如,集成电路芯片100的设计可以使用单个、代表性配置结构来验证,其中配置信息245存储了其中四个可选的逻辑块110A、110B中的一个被禁用的熔丝数值。因此,根据本发明的一些方面,设计者无需负担在集成电路芯片100的设计中对于用于禁用冗余逻辑块210的门控的每一个可能排列进行验证。
图3是根据本发明的一些方面的用于实现一些步骤的示例性环境310。就此而言,环境310包括服务器或者可以执行在此描述的过程的其他计算基础结构312。特别地,计算机基础结构312包括计算装置314。计算装置314可以驻留在网络基础结构或者第三方服务提供商的计算装置上(任何这些装置通常表示在图3中)。
计算装置314也包括处理器320、存储器322A、I/O接口324、以及总线326。存储器322A可以包括在实际执行程序代码期间采用的本地存储器,大容量存储器,以及提供了对至少一些程序代码的临时存储以便于在执行期间减少必需从大容量存储器检索代码的次数的缓冲存储器。此外,计算装置包括随机存取存储器(RAM)、只读存储器(ROM)以及操作系统(O/S)。
计算装置314与外部I/O装置328和存储系统322B通信。例如,I/O装置328可以包括使得单个装置与计算装置314交互作用的任何装置(例如用户接口),或者使得计算装置314使用任何类型通信链路与一个或多个其他计算装置通信的任何装置。外部I/O装置/资源328可以例如是手持装置、PDA、手机、键盘等等。此外,I/O装置328可以是使得计算装置与集成电路芯片100对接以执行测试和配置功能的装置。例如,I/O装置328可以是集成电路测试设备。
通常,处理器320执行计算机程序代码(例如程序控制344),其可以存储在存储器322A和/或存储系统322B中。此外,根据本发明的一些方面,程序控制344控制了集成电路设计和验证应用350和/或测试和配置应用355以执行在此所述一个或多个方法。设计和验证应用350和/或测试和配置应用355可以实现为在存储于存储器322A中作为分立或组合模块的程序控制344中的程序代码的一个或多个集合。此外,设计和验证应用350和/或测试和配置应用355可以实施作为分立的专用处理器或者单个或多个处理器以提供这些工具的功能。
当执行计算机程序代码时,处理器320可以向存储器322A、存储系统322B、和/或I/O接口324写入数据,和/或从这些装置读取数据。程序代码执行了本发明的方法,例如,设计和验证应用350和/或测试和配置应用355。此外,向存储器322A、存储系统322B、和/或I/O接口324写入和/或从这些装置读取数据可以包括集成电路设计360,其限定了包括其设计规则、元件及其相互关系的集成电路100。总线326在计算装置314中每一个部件之间提供了通信链路。
根据本发明的一些方面,设计和验证应用350是存储在例如存储器322A和/或存储系统322B中的计算机程序代码,当由处理器320执行时使得计算装置314确定和/或修改集成电路设计260。设计和验证应用350可以包括用于使用诸如VERILOG或VHDL之类的硬件描述语言设计和建模集成电路设计的一个或多个软件或硬件模块。例如,设计和验证应用350可以是综合/布局CAD工具,其读入设计定义(例如VHDL)、物理区域约束、时序约束、功率约束、设计库信息、综合规则以及工作条件。使用这些各种参数,设计应用350可以确定存储在例如集成电路库365中的集成电路设计中元件的模型和版图。确定的版图以及相关联的信息可以由计算装置314存储在存储系统322B中作为集成电路设计360。
此外,设计和验证应用350可以包括用于验证集成电路设计360的一个或多个软件或硬件模块。例如,设计和验证应用350可以基于设计定义、物理区域约束、时序约束、功率约束、设计库信息、综合规则和工作条件而验证集成电路设计360的结构和功能需求。例如,使用电气规则检查,设计和验证应用350可以验证集成电路芯片100的设计中元件的输入和/或输出(例如接口逻辑块220、配置存储240和解码器逻辑250)以由集成电路库365中设计定义所规定的单个有效的方式而互连。此外,使用建模和仿真,设计和验证应用350可以执行对例如可选的逻辑块(例如可选的逻辑块110A…110D)的器件层级验证,以及对于例如集成电路设计360的芯片层级验证。
根据本发明的一些方面,测试和配置应用355是存储在例如存储器322A和/或存储系统322B中的计算机程序代码,当由处理器320执行时使得计算装置314在其制造之后对特定集成电路芯片100的工作进行测试以验证芯片如所设计地工作。测试和配置应用355可以包括用于在各种工作和环境条件下将测试图形输入进入IC芯片100中以确定是否输出预期结果的一个或多个软件或硬件模块。例如,测试和配置应用355可以确定一个或多个冗余逻辑块(例如冗余逻辑块210)是否是有缺陷的,并且如果有缺陷,则在集成电路芯片100上记录这种信息(例如作为配置存储240中的配置信息245)。
计算装置314可以包括能够执行安装在其上的计算机程序代码的任何通用计算制造制品(例如个人计算机、服务器等等)。然而,应该理解的是,计算装置314仅仅是可以执行在此所述方法的各种可能的等同计算装置的代表。就此而言,在一些实施例中,由计算装置314提供的功能可以由包括通用和/或专用硬件和/或计算机程序代码的任意组合的计算制品实现。在每个实施例中,程序代码和硬件可以分别使用标准编程和工程设计技术而产生。
类似地,计算基础结构312仅是用于实现本发明的各种类型计算机基础结构的示例。例如,在一些实施例中,计算基础结构312包括两个或更多计算装置(例如服务器集群),在诸如网络、共用存储器等等的任何类型的通信链路之上通信以执行在此所述的方法。此外,当执行在此所述的方法时,计算基础结构312上的一个或多个计算装置可以使用任何类型通信链路与位于计算基础结构312外部的一个或多个其他计算装置通信。通信链路可以包括有线和/或无线链路的任意组合;一种或多种类型网络的任意组合(例如互联网、广域网、局域网、虚拟专用网络等等);和/或利用传输技术和协议的任意组合。
图4和图5示出了用于执行本发明的一些方面的示例性流程。可以执行图4和图5的步骤以设计和/或测试使用了图3的计算装置314的图1和图2的集成电路芯片100。
图4和图5中的流程图示出了根据本发明各个实施例的系统、装置、方法和计算机程序产品的可能实施方式的体系架构、功能和操作。就此而言,流程图或框图中每个方块可以代表模块、区段或一部分代码,其包括用于实现规定的逻辑功能的一个或多个可执行指令。也应该注意,在一些备选实施方式中,可以以与附图中标注的不同顺序而执行在方块中标注的功能。例如,示出为连续的两个方块实际上可以基本上同时执行,或者有时可以以相反顺序执行方块,取决于所涉及的功能。也应该注意,框图和/或流程图的每个方块、以及框图和/或流程图中方块的组合可以由执行了所规定功能或动作的专用基于硬件的系统、或者专用硬件和计算机指令的组合来实现。
图4示出了根据本发明一些方面的用于设计和验证集成电路芯片的示例性过程流程400。如以下方法中所述细节,通过在可以由预设计和预验证的选择逻辑(例如配置存储240和解码器逻辑250)所控制的接口逻辑块(例如接口逻辑块220)中包覆每个冗余逻辑块而简化了对包括冗余逻辑块(例如冗余逻辑块210)的集成电路芯片(例如集成电路芯片100)的设计和验证。
在步骤405处,获得了对于包括冗余逻辑块的集成电路芯片的设计。在一些实施例中,自动化设计应用(例如设计和验证应用350)可以将用于集成电路芯片100的设计(例如集成电路设计360)存储在存储系统(例如存储系统322B)中。例如,设计者可以提供针对包括部分良好的电压岛块的集成电路的设计。设计者可以是芯片制造商的客户,提供了用于制造的设计。
在步骤410处,设计者和/或自动化设计应用基于冗余逻辑块确定接口逻辑块(例如接口逻辑块220)的设计。在一些实施例中,接口逻辑块可以是存储在库(例如集成电路库365)中的预定元件。设计者和/或自动化设计应用可以基于冗余逻辑块从库中检索接口逻辑块并且对其修改。例如,设计者和/或自动化设计应用可以修改接口逻辑块的电源连接(例如电源启用逻辑225)和输入/输出连接(例如数据启用逻辑230的门和/或多路复用器)以与冗余逻辑块的电源和输入/输出连接相对应。这些修改取决于特定冗余逻辑块,并且在本领域技术人员的能力范围内,使得无需进一步解释说明。
在步骤415处,设计者和/或自动化设计应用将步骤410处已确定的已修改接口逻辑块与冗余逻辑块组合为可选的逻辑块(例如可选的逻辑块110A…110D)。在步骤420处,设计者和/或自动化设计应用将用于后续的验证和实例化的可选的逻辑块(例如在集成电路设计360和/或集成电路库365中)存储在集成电路芯片的设计中。
在步骤425处,设计者和/或自动化设计应用对在步骤420处确定的可选的逻辑块执行验证测试。验证测试可以包括结构和功能测试,以确保在已组合的接口逻辑块和冗余逻辑块之间的连接是正确的并且可选的逻辑块根据设计运行。验证测试可以包括结构测试,其确定在已组合接口逻辑块和冗余逻辑块的元件之间的尺寸、间距和连接是否正确和/或在设计规则之内。验证测试也可以包括功能测试,其确定已组合接口逻辑块和冗余逻辑块的功能(例如输入、输出、时序、功耗等等)是否满足冗余逻辑块的功能和接口设计需求。例如,功能测试可以包括对可选的逻辑块的操作进行仿真。显著地,根据本发明的一些方面,因为在集成电路设计中所有可选的逻辑块是等同的,所以仅需要对可选的逻辑块的单个实例执行验证测试。
在步骤430处,如果验证步骤425在可选的逻辑块中标识任何错误,则设计者和/或自动化设计应用在步骤435纠正错误,并且过程返回至步骤425。如果在步骤425处在可选的逻辑块中确定没有错误,则过程前进至步骤440。在步骤440处,设计者和/或自动化设计应用修改集成电路芯片的设计以包括选择逻辑(例如选择逻辑120)和在步骤425处验证的可选的逻辑块的多个实例。选择逻辑可以包括非易失性数据存储装置(例如配置存储240)和解码器装置(例如解码器逻辑250)。可选的逻辑块的多个实例可以在步骤405处获得的集成电路芯片设计中代替原始包括在设计中的冗余逻辑块。
在步骤445处,设计者和/或自动化设计应用修改了在步骤440处在集成电路设计中包括的可选的逻辑块的实例,使得唯一地标识它们相应输入(例如输入257A(IA)和257B(IB))。在一些实施例中,唯一的标识符可以是基于相应位置、地址和/或分配至可选的逻辑块的标识符。例如,使用唯一的标识符,去往接口逻辑块实例(例如接口逻辑块220的输入IA和IB)的输入的管脚类型可以被修改为具有唯一类型标识符。
在步骤447处,设计者和/或自动化设计应用确定连接选择逻辑和可选的块的信号线(例如信号线150A…150D)。根据本发明的一些方面,配置存储、解码器、和/或接口逻辑块的元件定义限定了这些元件的输入和/或输出,使得在这些元件之间需要有效信号线以形成特定连接。如上所述,在本发明的一些实施例中,元件定义包括限制了哪个其他管脚可以连接的管脚的具体类型。例如,可以限定(例如在VHDL中)配置存储的预定输出管脚(例如输出251),使得如果与解码器的预定输入管脚(例如输入253)连接,则仅将其与解码器连接的信号线是有效的。类似地,可以限定解码器的输出管脚(例如输出255A(OA)、255B(OB)),使得如果与在步骤445中修改为独特可标识的接口逻辑块实例的特定输入管脚(例如输入257A(IA)、257B(IB))相连接,则仅与接口逻辑块连接的信号线是有效的。因此,结构验证(例如电气规则检查)将标识块之间任何有效连接。
在步骤450处,设计者和/或自动化设计应用对来自步骤445的一个排列集成电路芯片设计执行功能验证。根据集成电路的局部良好设计,验证在步骤450处验证了集成电路设计配置具有可选的逻辑块的一个或多个实例为禁用,例如,其中可选的逻辑块包括冗余处理器核心并且将IC设计为使用两个过剩或有缺陷处理器核心运行,验证步骤450可以采用将任何两个可选的逻辑块规定为禁用的配置信息(例如配置信息245)来仿真集成电路芯片的操作。如果在步骤455处任何错误标识为步骤450处验证的结果,则设计者和/或自动化设计应用在步骤460处纠正错误,并且该过程返回至步骤450。如果在步骤455处在集成电路中确定没有错误,则相对于选择逻辑完成了芯片层级验证并且该过程继续至步骤465。
在步骤465处,设计者和/或自动化设计应用对选择逻辑和可选的逻辑块的连接执行结构验证。例如,可以执行电气规则检查以验证配置存储、解码器装置和可选的逻辑块的输入和输出以相应元件定义中规定的有效方式而连接。如果在步骤470处标识任何禁用连接作为在步骤465处验证的结果,则设计者和/或自动化设计应用在步骤475处纠正错误,并且该过程返回至步骤465。如果在步骤470处没有标识错误,则方法结束。
图5示出了根据本发明一些方面的用于配置示例性集成电路的示例性过程流程500。在基于图4中确定的集成电路芯片(例如集成电路芯片100)的设计而制造了特定集成电路芯片之后,可以测试集成电路芯片,并且可以由选择逻辑配置可选的逻辑块。例如,对集成电路芯片的测试可以确定所制造的集成电路芯片是否包括任何有缺陷冗余逻辑块或任何过剩冗余逻辑块。基于测试的结果,可以通过如图4所示过程由在集成电路芯片的设计中包括的选择逻辑来禁用有缺陷或者过剩的冗余逻辑块。
在步骤505处,制造商使用例如由图4所示方法所确定的设计(例如集成电路设计360)来制造包括冗余逻辑块的集成电路芯片(例如集成电路芯片100)。因此,根据本发明的一些方面,集成电路芯片包括选择逻辑(例如选择逻辑120)和可选的逻辑块(例如可选的逻辑块110A…110D),包括冗余逻辑块(例如冗余逻辑块210)。
在步骤510处,制造商和/或测试和配置过程(例如测试和配置应用355)确定在步骤505处制造的集成电路芯片中有缺陷和/或无缺陷的冗余逻辑块(例如冗余逻辑块210)。例如,集成电路可以放置在链接至被配置用于在各种工作和环境条件下执行测试工序的计算系统(例如经由I/O装置328链接至计算装置314)的测试台中。
在步骤515处,制造商和/或测试和配置过程确定在步骤510处所确定的无缺陷冗余逻辑块的数量是否小于集成电路芯片设计所需要的数量。例如,集成电路设计可以包括十个冗余逻辑块并且规定集成电路芯片需要八个冗余逻辑块运行。因此,如果测试和配置过程确定了在步骤515处十个冗余逻辑块中的三个是有缺陷的,则整个集成电路芯片可以视作是有缺陷的,并且过程结束。如果在步骤515处,制造商和/或测试和配置方法确定了无缺陷冗余逻辑块的数量等于或大于集成电路芯片设计所需要的数量,则在步骤520处,测试和配置过程标识在步骤510处确定的有缺陷冗余逻辑块用于禁用。
在步骤525处,制造商和/或测试和配置方法确定了在步骤510处所确定的无缺陷冗余块的数目是否大于集成电路设计所需要的数量。例如,如果集成电路设计(例如集成电路设计360)包括十个冗余逻辑块,并且规定集成电路芯片需要八个冗余逻辑块运行,并且如果仅一个冗余逻辑块是有缺陷的,则一个冗余块是过剩的。
如果在步骤525处,确定了在步骤510处所确定的无缺陷冗余块的数目不大于所需的数量,则测试和配置过程前进至步骤535。另一方面,如果在步骤525处,确定了无缺陷冗余块的数目大于所需的数量,则集成电路包括至少一个过剩的冗余块。在该情形下,在步骤530处,制造商和/或测试和配置过程标识了一个或多个过剩的冗余逻辑块以用于禁用。因为冗余逻辑块的每个实例功能相同,所以测试和配置过程可以选择任何无缺陷块。
在步骤535处,制造商和/或测试和配置过程将在步骤520和步骤530处标识用于禁用的冗余逻辑块记录在配置存储中(例如作为配置存储240中的配置信息245)。例如可以通过将标识了将要禁用的过剩或有缺陷冗余逻辑块的信息存储在配置存储的存储器中而记录了信息。备选地,配置存储装置可以包括许多熔丝,并且测试和配置过程可以熔断选择的熔丝以对标识了将要禁用的冗余逻辑块的信息进行编码。
在步骤540处,制造商和/或测试和配置过程控制了可选的逻辑块以使得在步骤535处记录在配置存储装置中的冗余逻辑块为禁用。例如,制造商和/或测试和配置方法可以使得可选的逻辑块的接口逻辑经由电源启用电路(例如电源启用逻辑225)而从它们相应电源断开已标识的冗余逻辑块,并且经由数据启用电路(例如数据启用陆基230)从集成电路芯片(例如逻辑块130)的其他逻辑块断开已标识冗余逻辑块。
图6是在半导体设计、制造和/或测试中使用的设计过程的流程图。图6示出了例如在半导体IC逻辑设计、仿真、测试、布图和制造中使用的示例性设计流程600的方块图。设计流程600包括用于处理设计结构或器件以产生上述以及图1和图2中示出的设计结构和/或器件的逻辑上或其他功能上等效表示的过程、机器和/或机制。由设计流程600处理和/或产生的设计结构可以在机器可读传输或存储介质上被编码以包括数据和/或指令,所述数据和/或指令在数据处理系统上执行或以其他方式处理时,产生硬件组件、电路、器件或系统的逻辑上、结构上、机械上或其他功能上的等效表示。机器包括但不限于用于IC设计过程(例如设计、制造或仿真电路、组件、器件或系统)的任何机器。例如,机器可以包括:用于产生掩模的光刻机、机器和/或设备(例如电子束直写仪)、用于仿真设计结构的计算机或设备、用于制造或测试过程的任何装置,或用于将所述设计结构的功能上的等效表示编程到任何介质中的任何机器(例如,用于对可编程门阵列进行编程的机器)。
设计流程600可随被设计的表示类型而不同。例如,用于构建专用IC(ASIC)的设计流程600可能不同于用于设计标准组件的设计流程600,或不同于用于将设计实例化到可编程阵列(例如,由Inc.或Inc.提供的可编程门阵列(PGA)或现场可编程门阵列(FPGA))中的设计流程600。
图6示出了多个此类设计结构,其中包括优选地由设计过程610处理的输入设计结构620。设计结构620可以是由设计过程610生成和处理以产生硬件器件的逻辑上等效的功能表示的逻辑仿真设计结构。设计结构620还可以或备选地包括数据和/或程序指令,所述数据和/或程序指令由设计过程610处理时,生成硬件器件的物理结构的功能表示。无论表示功能和/或结构设计特性,均可以使用例如由核心开发人员/设计人员实施的电子计算机辅助设计(ECAD)生成设计结构620。当编码在机器可读数据传输、门阵列或存储介质上时,设计结构620可以由设计过程610内的一个或多个硬件和/或软件模块访问和处理以仿真或以其他方式在功能上表示例如图1和图2中示出的那些电子组件、电路、电子或逻辑模块、装置、器件或系统。因此,设计结构620可以包括文件或其他数据结构,其中包括人类和/或机器可读源代码、编译结构和计算机可执行代码结构,当所述文件或其他数据结构由设计或仿真数据处理系统处理时,在功能上仿真或以其他方式表示电路或其他级别的硬件逻辑设计。此类数据结构可以包括硬件描述语言(HDL)设计实体或遵循和/或兼容低级HDL设计语言(例如Verilog和VHDL)和/或高级设计语言(例如C或C++)的其他数据结构。
设计过程610优选地采用和结合硬件和/或软件模块,所述模块用于合成、转换或以其他方式处理图1和图2中示出的组件、电路、器件或逻辑结构的设计/仿真功能等价物以生成可以包含设计结构(例如设计结构620)的网表680。网表680例如可以包括编译或以其他方式处理的数据结构,所述数据结构表示描述与集成电路设计中的其他元件和电路的连接的线缆、分离组件、逻辑门、控制电路、I/O设备、模型等的列表。网表680可以使用迭代过程合成,其中网表680被重新合成一次或多次,具体取决于器件的设计规范和参数。对于在此所述的其他设计结构类型,网表680可以记录在机器可读数据存储介质上或编程到可编程门阵列中。所述介质可以是非易失性存储介质,例如磁或光盘驱动器、可编程门阵列、压缩闪存或其他闪存。此外或备选地,所述介质可以是可在其上经由因特网或其他适合联网手段传输和中间存储数据分组的系统或高速缓冲存储器、缓冲器空间或导电或光导器件和材料。
设计过程610可以包括用于处理包括网表680在内的各种输入数据结构类型的硬件和软件模块。此类数据结构类型例如可以驻留在库元件630内并包括一组常用元件、电路和器件,其中包括给定制造技术(例如,不同的技术节点,32纳米、45纳米、90纳米等)的模型、布图和符号表示。所述数据结构类型还可包括设计规范640、特征数据650、检验数据660、设计规则670和测试数据文件685,它们可以包括输入测试模式、输出测试结果和其他测试信息。设计过程610还可例如包括标准机械设计过程,例如用于诸如铸造、成型和模压成形等操作的应力分析、热分析、机械事件仿真、过程仿真。机械设计领域的技术人员可以在不偏离本发明的范围和精神的情况下理解在设计过程610中使用的可能机械设计工具和应用的范围。设计过程610还可包括用于执行诸如定时分析、检验、设计规则检查、放置和路由操作之类的标准电路设计过程的模块。
设计过程610采用和结合逻辑和物理设计工具(例如HDL编译器)以及仿真建模工具以便与任何其他机械设计或数据(如果适用)一起处理设计结构620连同示出的部分或全部支持数据结构,从而生成第二设计结构690。
设计结构690以用于机械设备和结构的数据交换的数据格式(例如以IGES、DXF、Parasolid XT、JT、DRC或任何其他用于存储或呈现此类机械设计结构的适合格式)驻留在存储介质或可编程门阵列上。类似于设计结构620,设计结构690优选地包括一个或多个文件、数据结构或其他计算机编码的数据或指令,它们驻留在传输或数据存储介质上,并且由ECAD系统处理时生成图1和图2中示出的本发明的一个或多个实施例的逻辑上或以其他方式在功能上等效的形式。在一个实施例中,设计结构690可以包括在功能上仿真图1和图2中示出的器件的编译后的可执行HDL仿真模型。
设计结构690还可以采用用于集成电路的布图数据交换的数据格式和/或符号数据格式(例如以GDSII(GDS2)、GL1、OASIS、图文件或任何其他用于存储此类设计数据结构的适合格式存储的信息)。设计结构690可以包括信息,例如符号数据、图文件、测试数据文件、设计内容文件、制造数据、布图参数、线缆、金属级别、通孔、形状、用于在整个生产线中路由的数据,以及制造商或其他设计人员/开发人员制造上述以及图1和图2中示出的器件或结构所需的任何其他数据。设计结构690然后可以继续到阶段695,例如,在阶段695,设计结构690:继续到流片(tape-out),被发布到制造公司、被发布到掩模室(mask house)、被发送到其他设计室,被发回给客户等。
上述方法用于集成电路芯片制造。制造者可以以原始晶片形式(即,作为具有多个未封装芯片的单晶片)、作为裸小片或以封装的形式分发所得到的集成电路芯片。在后者的情况中,以单芯片封装(例如,引线固定到母板的塑料载体或其他更高级别的载体)或多芯片封装(例如,具有一个或两个表面互连或掩埋互连的陶瓷载体)来安装芯片。在任何情况下,所述芯片然后都作为(a)中间产品(如母板)或(b)最终产品的一部分与其他芯片、分离电路元件和/或其他信号处理装置集成。最终产品可以是任何包括集成电路芯片的产品,范围从玩具和其他低端应用到具有显示器、键盘或其他输入设备及中央处理器的高级计算机产品。
出于示例目的给出了对本发明的各种实施例的描述,但所述描述并非旨在是穷举的或限于所公开的各实施例。在不偏离所描述的实施例的范围和精神的情况下,对于本领域的技术人员而言,许多修改和变化都将是显而易见的。在此使用的术语的选择是为了最佳地解释各实施例的原理、实际应用或对市场中存在的技术的技术改进,或者使本领域的其他技术人员能够理解在此公开的各实施例。