将错误校正码嵌入存储器单元中的方法和设备的制造方法

文档序号:10655471阅读:658来源:国知局
将错误校正码嵌入存储器单元中的方法和设备的制造方法
【专利摘要】一种计算机辅助设计(CAD)工具可以标识配置数据中的无关位。该配置数据中的无关位可以改变极性,而不会影响电路设计的功能。该CAD工具可以计算错误检查码(例如,用于二维奇偶校验检查的奇偶校验位)并将错误检查码插入到配置数据中。例如,该CAD工具可以用错误码替代配置数据中的无关位。该配置数据可以存储在可编程集成电路上的配置存储器单元中,从而利用错误码在可编程集成电路上实现电路设计。在执行过程中,可编程集成电路可以执行错误检查并基于嵌入的错误码检测和校正配置数据中的错误。
【专利说明】将错误校正码嵌入存储器单元中的方法和设备
[0001 ] 本申请要求2015年3月31日提交的美国专利申请N0.14/675,294的优先权,其全部内容通过引用结合在此。
技术领域
[0002]本发明涉及存储器位损坏(bit corrupt1n),并且更具体地涉及检测和校正集成电路中的存储器位损坏。
【背景技术】
[0003]当今的集成电路常常包括存储器元件。在一些安排中,存储器元件用于在集成电路中存储配置数据。例如,存储器元件可以用于在可编程集成电路中存储配置数据。可编程集成电路是通用的集成电路,能够至少部分地对该集成电路进行定制以实现期望的电路设计(例如,通过将预先确定的配置数据载入到存储器元件中)。
[0004]集成电路受到一种被称为单粒子翻转(SEU)的现象的影响。单粒子翻转是由离子或电磁辐射导致的一种状态变化。在存储配置数据位的存储器元件中出现的单粒子翻转会具有严重的影响。例如,查找表(LUT)可以实现不同的逻辑功能或路由多路复用器可能造成不良连接。
[0005]在本上下文环境中,产生本文的一些实施例。

【发明内容】

[0006]根据本发明的某些方面,一种计算机辅助设计(CAD)工具可以用于处理配置数据,该配置数据被存储在可编程集成电路上的配置存储器单元中,并且用于在该可编程集成电路上实现电路设计。例如,该CAD工具可以标识该配置存储器单元的无关子集,该无关子集存储该配置数据的无关位,使得在这些无关位的一个位中的极性变化保留该可编程集成电路中的电路设计实现的功能。该CAD工具可以进一步计算存储在配置存储器单元的第一子集中的该配置数据的第一子集的第一奇偶校验位,并在该配置存储器单元的无关子集中的第一配置存储器单元中存储该第一奇偶校验位。
[0007]应当认识到,能够采用很多方式实现本发明,例如处理过程、设备、系统、装置、或位于计算机可读介质上的指令。以下对本发明的若干发明性实施方式进行描述。
[0008]在某些实施例中,上述的CAD工具可以计算存储在配置存储器单元的第二子集中的配置数据的第二子集的第二奇偶校验位。配置存储器单元的该第一和第二子集可以在公共的预定配置存储器单元中重叠。该第二奇偶校验位可以被存储在该配置存储器单元的无关子集的第二配置存储器单元中。在某些实施例中,该CAD工具可以将第一位置与该第一配置存储器单元相关联,并且为该第二配置存储器单元选择第二位置,该第二位置与该第一位置之间具有预定的距离。
[0009]如果需要,该CAD工具可以计算存储在该配置存储器单元的第一子集中的配置数据的第一子集的第三奇偶校验位,并且通过比较该第一和第三奇偶校验位来检测该第一和第三奇偶校验位之间的不匹配,该不匹配表明在该配置数据的第一子集中存在错误。该CAD工具可以进一步计算存储在该配置存储器单元的第二子集中的配置数据的第二子集的第四奇偶校验位,并且通过比较该第二和第四奇偶校验位来检测该第二和第四奇偶校验位之间的不匹配,该不匹配表明在配置数据的第二子集中存在错误。
[0010]本发明的进一步特征、它的本质以及各种优点将从附图和优选实施例的以下详细描述中变得更为明显。
【附图说明】
[0011]图1是根据一个实施例的具有存储器元件的说明性集成电路的图示。
[0012]图2是根据一个实施例的具有配置存储器单元的说明性三输入查找表(LUT)的图不O
[0013]图3A是根据一个实施例的具有配置存储器单元的说明性路由多路复用器的图示。
[0014]图3B是根据一个实施例的具有配置存储器单元和快速输入的说明性路由多路复用器的图示。
[0015]图4是根据一个实施例的具有无关位的说明性组合逻辑电路的图示。
[0016]图5是根据一个实施例的具有计算机辅助(CAD)工具和数据库的说明性电路设计系统的图不。
[0017]图6是根据一个实施例的用于设计集成电路的说明性步骤的流程图。
[0018]图7是根据一个实施例的说明性二维奇偶校验码的图示。
[0019]图8是根据一个实施例的使用无关位产生错误码的说明性过程的图示。
[0020]图9是根据一个实施例的说明性错误检测和校正电路的图示。
[0021]图10是根据一个实施例的用于处理配置数据的说明性步骤的流程图,该配置数据存储在可编程集成电路上的配置存储器单元中并用于在该可编程集成电路上实现电路设
i+o
[0022]图11是根据一个实施例的用于处理配置数据的说明性步骤的流程图,该配置数据在集成电路上实现电路设计。
[0023]图12是根据一个实施例的用于处理电路设计以便在集成电路上实现的说明性步骤的流程图。
【具体实施方式】
[0024]本发明涉及存储器位损坏,并且更具体地涉及检测和校正集成电路(IC)中的存储器位损坏。
[0025]集成电路(诸如可编程集成电路)受到一种被称为单粒子翻转(SEU)的现象的影响。单粒子翻转是由离子或电磁辐射导致的一种状态变化。嵌入在集成电路及其包装中的宇宙射线或放射性杂质可能是产生这种离子或电磁辐射的原因。
[0026]当离子或电磁辐射撞击硅基板(集成电路在其上实现),就产生电子空穴对。电子空穴对产生传导通路,该传导通路会导致带电节点(例如,存储器元件)放电。因此,单粒子翻转可能导致存储器元件从逻辑“I”变为逻辑“O”。
[0027]时序元件(例如,存储器元件、锁存器、或寄存器)中的翻转事件会具有严重的影响。例如,存储器阵列可存储错误数据,查找表(LUT)可实现不同的逻辑功能,或者可编程路由多路复用器可造成不良连接。
[0028]在现代集成电路中已经开发了各种错误检测技术以解决这种问题。一些错误检测技术涉及实现相同电路的多个实例并在那些多个实例的输出上进行多数票决。这些错误检测技术快速并且有效,但需要大量额外的硬件资源。其他错误检测技术涉及在时序元件的初始状态中检查它们的状态,并且如果一个存储器位已经受到损坏就恢复原始状态。然而,这些错误检测技术并未得到立即应用,因此存在受损的设计在受损的状态中运行至少一段时间的风险。
[0029]因而,利用最少的额外硬件资源减少检测和/或校正集成电路中的受损的存储器位所需的持续时间可能是令人期望的。例如,以最少的开销来减少错误检测时间、错误校正时间、或两者可能是令人期望的。
[0030]本领域技术人员将要认识到的是,可以在不具备这些特定细节的一些或全部的情况下实践本示例性实施例。在其他实例中,已经详细地描述了众所周知的操作,目的是避免不必要地混淆本实施例。
[0031]图1中示出根据一个实施例的集成电路的说明性实施例,该集成电路诸如可编程逻辑器件(PLD)10。
[0032]可编程逻辑器件100具有输入/输出电路110,该电路用于经由输入/输出管脚120驱动信号离开器件100和用于从其他器件接收信号。互连资源115(诸如全局和局部垂直以及水平导线和总线)可以用于在器件100上路由/传送信号。
[0033]输入/输出电路110包括外部接口电路、串行数据收发器电路、差动接收器和发射器电路、或用于将一个集成电路连接至另一个集成电路的其他电路。
[0034]互连资源115包括导线和位于对应的导线之间的可编程连接,并因此有时被称为可编程互连。
[0035]可编程逻辑区域140可以包括可编程组件,诸如数字信号处理电路、存储电路、运算电路或其他组合的和/或顺序的逻辑电路,诸如可配置寄存器电路。
[0036]可以将可编程逻辑区域140配置为执行定制逻辑功能。可编程逻辑区域140还可以包括执行给定的应用程序并具有有限可配置性的专用块。例如,可编程逻辑区域140可以包括专用块,诸如可配置存储块、可配置处理块、可编程锁相环电路、可编程延迟锁相环电路、或具有有限可配置性的其他专用块。还可以认为可编程互连115是一种类型可编程逻辑区域 140 ο
[0037]可以利用任何适合的架构来组织器件100的电路。例如,可编程逻辑器件100的逻辑可以采用一系列较大可编程逻辑区域的行和列的形式来组织,这些可编程逻辑区域的每一个包含多个较小的逻辑区域。较小的区域可以是例如有时被称为逻辑元件(LE)的逻辑区域,每一个逻辑元件都包含一个或更多个查找表、一个或更多个寄存器、以及可编程多路复用器电路。较小区域还可以是例如有时被称为自适应逻辑模块(ALM)、可配置逻辑块(CLB)、切片、半切片等的逻辑区域。如果需要,自适应逻辑模块可以包括加法器电路、一个或更多个寄存器、以及查找表或共享组合逻辑的其他块(即,来自一对LE的资源一在此上下文中有时被称为自适应逻辑元件或ALE)。较大区域可以是例如逻辑阵列块(LAB)或包含例如多个逻辑元件或多个ALM的逻辑区域的逻辑簇。
[0038]可编程逻辑器件100可以包含可编程存储器元件130。可编程存储器元件130可以使用任何适合的易失性和/非易失性存储器结构,诸如随机存取存储器(RAM)单元、熔丝、反熔丝、可编程只读存储器存储器单元、掩模编程和激光编程结构、这些结构的组合等。因为可编程存储器元件130在编程过程中与配置数据一起载入,可编程存储器元件130有时被称为配置存储器、配置RAM( CRAM)、配置存储器单元、配置存储器位、或存储器元件。
[0039]存储器元件130能够利用管脚120和输入/输出电路110与配置数据(也被称为编程数据)一起载入。一旦载入,存储器元件各自提供相应的静态控制信号,该静态控制信号控制可编程逻辑区域140中的相关联逻辑组件的操作。在一个典型的场景中,载入的存储器元件130的输出施加到可编程逻辑区域140中的晶体管的栅极,以便开启或关闭某些晶体管并借此配置可编程逻辑区域140中的逻辑和路由路径。可以采用这种方式控制的可编程逻辑电路元件包括多路复用器(例如,用于在可编程互连115中形成路由路径的多路复用器)、查找表、逻辑阵列、与(AND)、或(OR)、与非(NAND)、以及或非(NOR)逻辑门、选通门等的一些部分。
[0040]载入到存储器元件130中的配置数据可以与一种电路设计相关联,并且将配置数据载入到存储器元件130中可以在可编程逻辑器件100中实现该电路设计。配置数据的一些位可以是用于电路设计实现的无关位。无关位可以是存储在存储器元件130中的位,当该位的值变化时,存储器元件不会改变电路设计实现的性能。存储无关位的存储器元件有时被称为无关存储器元件。
[0041]例如,考虑如下场景,一种电路设计实现的配置数据在存储器元件130的一个存储器元件中存储逻辑“I”。如果将该存储器元件130的状态从逻辑“I”变为逻辑“O”保留了该电路设计实现的功能,那么存储在该存储器元件130中的配置数据的位就是用于该电路设计实现的配置数据的无关位。
[0042]再如,考虑如下场景,一种电路设计实现的配置数据在存储器元件130的一个存储器元件中存储逻辑“O”。如果将该存储器元件130的状态从逻辑“O”变为逻辑“I”保留了该电路设计实现的功能,那么存储在该存储器元件130中的配置数据的位就是用于该电路设计实现的配置数据的无关位。
[0043]图2是具有配置存储器单元的说明性查找表(LUT)的图示。该查找表可以具有输入A、B、和C,由输入C控制的多路复用器250,由输入B控制的多路复用器240和245,由输入C控制的多路复用器230、232、234和236,以及配置存储器单元210、212、214、216、220、222、224和226。通过对配置存储器单元进行编程,可以将查找表配置为实现具有多达三个输入的任何逻辑功能。
[0044]例如,利用为逻辑“I”的位对配置存储器单元226进行编程和利用为逻辑“O”的一些位对所有其他配置存储器单元210至224进行编程,可以实现A、B和C的逻辑与(AND)功能。又如,利用为逻辑“O”的位对配置存储器单元210进行编程和利用为逻辑“I”的一些位对所有其他配置存储器单元212至226进行编程可以实现A、B和C的逻辑或(OR)功能。
[0045]考虑如下场景,将查找表配置为实现B和C的逻辑与功能。在这种场景中,配置存储器单元224和226可以存储为逻辑“I”的位,而所有其他配置存储器单元210至222存储为逻辑“O”的位,以便实现B和C的逻辑与功能。
[0046]在另一种场景中,输入A可以与逻辑“O”关联。在这种其他场景中,配置存储器单元224可以存储为逻辑“I”的位,并且配置存储器单元210、214、和220可以存储为逻辑“O”的位,以便实现B和C的逻辑与功能,而配置存储器单元212、216、222和226存储无关位。换言之,查找表实现B和C的逻辑与功能,这与配置存储器单元212、216、222和226是否分别存储逻辑“O”的位或逻辑T的位无关,只要输入A与逻辑“O”相关联。
[0047]如果未使用查找表(例如,电路设计实现仅使用集成电路上的可用查找表的一部分),那么所有的配置存储器单元210至226都存储无关位。在此情况中,查找表的输入上的任何可编程路由多路复用器也可以存储无关位。这种可编程路由多路复用器有时也被称为路由多路复用器电路、可配置路由多路复用器、或路由多路复用器。
[0048]图3A示出根据一个实施例的具有配置存储器单元的说明性路由多路复用器的图示。如图所示,路由多路复用器300可以包括配置存储器单元310、312、314、316、320、322、324、以及326。可以对配置存储器单元进行编程以便将输入INO至IN15的任何一个上的信号路由至输出OUT。例如,对具有为逻辑“I”的位的配置存储器单元310和320和对具有为逻辑“O”的位的配置存储器单元312、314、316、322、324、和326进行编程将输入INO导电地耦合至输出0UT,从而将输入INO上的信号路由至输出OUT。
[0049]考虑如下场景,未使用路由多路复用器300(例如,信号OUT耦合至未使用的查找表)。在此场景中,配置存储器单元310、312、314、和316可以存储为逻辑“O”的位,从而解耦合所有的输入INO至IN15。因此,配置存储器单元320、322、324、和326可以存储无关位。换言之,所有的输入INO至IN15从输出OUT解耦合,这不依赖于配置存储器单元320、322、324、和326中存储的位值,只要配置存储器单元310、312、314、和316存储为逻辑“O”的位。
[0050]路由多路复用器300可以具有耦合在任何输入与该输出之间的两个传输晶体管。在一些实施例中,路由多路复用器可以具有一个或更多个输入,其中只有一个传输晶体管耦合在对应的输入和该输出之间。这种路由多路复用器的实施例在图3B中示出。
[0051 ] 如图所示,路由多路复用器350可以包括配置存储器单元360、362、364、366、370、372、374、和376。从输入INO至INll分别到输出OUT的路径可以具有两个传输晶体管,并且从输入IN12到输出OUT的路径可以只具有一个传输晶体管。因此,到达输入IN12的信号传播到输出OUT的时间可以比信号到达输入INl至INll的时间更少。换言之,从输入IN12到输出OUT
的传播延迟可以比从输入INl、IN2........1Nll到达输出OUT的传播延迟更短。因此,输入
IN12有时也被称为路由多路复用器350的“快速输入”。
[0052]可以对配置存储器单元进行编程以便将输入INO至IN12的任何一个上的信号路由至输出OUT。例如,对具有为逻辑“I”的位的配置存储器单元360和370和对具有为逻辑“O”的位的配置存储器单元362、364、366、372、374、和376进行编程将输入INO导电地耦合至输出OUT,从而将输入INO的信号路由至输出OUT。
[0053]再如,对具有为逻辑“I”的位的配置存储器单元376和对具有为逻辑“O”的位的配置存储器单元370、372、和374进行编程将输入IN12导电地耦合至输出0UT,从而将来自输入INl2的信号路由至输出OUTο在此示例中,配置存储器单元360、362、364、和366可以存储无关位。换言之,所有的输入INO至INl I从输出OUT解耦合,这不依赖于配置存储器单元360、362、364、和366中存储的位值,只要配置存储器单元370、372、和374存储为逻辑“O”的位。
[0054]即使在使用图2的查找表并且连接所有输入的情况下,一些配置存储器单元210至226可以基于查找表的连通性来存储无关位。图4是根据一个实施例的具有三输入查找表的说明性组合逻辑电路的图示,该三输入查找表存储无关位。
[0055]如图所示,组合电路可以包括三输入查找表(3-LUT)430、逻辑与门410和420、输出0UT、以及输入X、Y和Z。输入X可以耦合至3-LUT 430的输入A以及逻辑与门410的输入之一。由于逻辑与门410的输出耦合至3-LUT430的输入B,当输入A接收为逻辑“O”的信号时,输入B可以不接收为逻辑“I”的信号。3-LUT输入A和B的这种输入组合有时还被称为3-LUT的满足性无关。因此,如果3-LUT 430包括图2的查找表,配置存储器单元214和224可以存储无关位。
[0056]考虑如下场景,3-LUT 430实现逻辑功能((A AND B)0R NOT C)。由于输入Z耦合至3-LUT 430的输入C以及逻辑与门420的输入,输出OUT可以实现逻辑功能(((A AND B)0RNOT OAND C),这归纳为(A AND B)。换言之,输出OUT独立于3-LUT 430的输入C。在这种场景中,3-LUT 430的输入C有时也被称为可观察性无关。因此,3-LUT 430的输入C可以从输入Z解耦合并且被设置为一个常值(例如,设置为逻辑“I”)。如果3-LUT430包括图2的查找表并且3-LUT 430的输入C耦合至逻辑“1”,配置存储器单元210、212、214和216可以存储无关位。如果3-LUT 430包括图2的查找表并且3-LUT 430的输入C耦合至逻辑“O”,配置存储器单元220、222、224和226可以存储无关位。
[0057]电路设计系统中的CAD工具可以确定电路设计(例如,如图4中所示的)中的与满足性无关和可观察性无关相关联的无关位。如果需要,CAD工具还可以保存一些位作为无关位或将选择的位设置为预先确定的值(例如,如图2、图3A和图3B所示的)。
[0058]图5中示出根据一个实施例的说明性电路设计系统500。系统500可以基于一个或更多个处理器,诸如个人计算机、工作站等。(一个或多个)处理器可以利用网络(例如,局域网或广域网)联接。这些计算机中的存储器或外置存储器以及存储装置(诸如内置和/或外置硬盘)可以用于存储指令和数据。
[0059]基于软件的组件(诸如计算机辅助设计工具520和数据库530)驻留在系统500上。在运行过程中,可执行软件(诸如计算机辅助设计工具520的软件)在系统500的(一个或多个)处理器上运行。数据库530用于存储数据以用于系统500的操作。通常,软件和数据可以被存储在系统500中的任何计算机可读介质(存储设备)上。这种存储设备可以包括计算机存储器芯片、可移除和固定介质(诸如硬盘驱动器)、闪存、致密盘(CD)、数字通用盘(DVD)、蓝光碟(BD)、其他光介质、以及软盘、磁带、或任何其他适合的存储器或存储装置。当安装系统500的软件时,系统500的存储器具有使系统500中的计算设备执行不同方法(进程)的指令和数据。当执行这些进程时,将计算设备配置为实现电路设计系统的功能。
[0060]计算机辅助设计(CAD)工具520(它们中的一些或全部有时统被称为CAD工具或电子设计自动化(EDA)工具)可以由单一供应商或由多个供应商提供。CAD工具520可以作为一个或更多个工具套件(例如,用于执行与在可编程逻辑器件中实现电路设计相关联的任务的编译器套件)和/或作为一个或更多个独立的软件组件(工具)来提供。(一个或多个)数据库530可以包括仅由一个或多个特定工具访问的一个或更多个数据库,并且可以包括一个或更多个共享数据库。共享数据库可以由多个工具来访问。例如,第一工具可以在共享数据库中存储用于第二工具的数据。第二工具可以访问共享数据库以便检索第一工具存储的数据。这允许一个工具将信息传递给另一个工具。如果需要的话,工具还可以在彼此之间传递信息,无需在共享数据库中存储信息。
[0061]说明性计算机辅助设计工具520可以执行设计过程,该设计过程有时也被称为设计编制。设计过程可以开始于集成电路设计的功能规范的构想(例如,集成电路设计的功能或性能描述)。电路设计者可以利用设计和约束输入工具564来指定所需电路设计的功能操作。设计和约束输入工具564可以包括例如设计和约束输入辅助566和设计编辑器568这样的工具。设计和约束输入辅助(诸如辅助566)可以用于帮助电路设计者从现有的电路设计库中查找所需的电路设计,并且可以向电路设计者提供计算机辅助的帮助以用于输入(指定)所需的电路设计。
[0062]如一个示例,设计和约束输入辅助566可以用于为用户呈现选项的屏幕。用户可以在屏幕上的选项中点击以选择正在设计的电路是否应该具有某些特性。例如,用户可以选择正在设计的电路是否应该包括用于错误检测和校正的错误码。
[0063]设计编辑器568可以用于输入设计(例如,通过输入多行硬件描述语言码),可以用于编辑从库中获得的设计(例如,利用设计和约束输入辅助),或可辅助用户选择并编辑适当的预包装码或设计。
[0064]设计和约束输入工具564可以用于允许电路设计者利用任何适合的格式提供期望的电路设计。例如,设计和约束输入工具564可以包括允许电路设计者利用真值表输入电路设计的工具。真值表可以利用文本文件或时序图来指定并且可以从库中导入。真值表电路设计和约束输入可以用于大型电路的一部分或用于完整的电路。
[0065]再如,设计和约束输入工具564可以包括原理图获取工具。原理图获取工具可以允许电路设计者从组成部分(诸如逻辑门和逻辑门群组)可视地构建集成电路设计。预先存在的集成电路设计库可以用于允许利用原理图获取工具导入一个设计的所需部分。
[0066]如果需要,设计和约束输入工具564可以允许电路设计者利用硬件描述语言向电路设计系统500提供电路设计,该硬件描述语言诸如是Verilog硬件描述语言(VerilogHDL)、超高速集成电路硬件描述语言(VHDLhSystemVerilog、或高级电路描述语言(诸如OpenCL或SystemC),这里仅举几例。通过利用编辑器568写入硬件描述语言码,集成电路设计的设计者能够输入电路设计。如果需要,可以从用户维护的或商业库中导入代码块。
[0067]在已经利用设计和约束输入工具564输入设计后,可以使用性能模拟工具572来模拟电路设计的功能性能。如果该设计的功能性能不完整或不正确,电路设计者能够利用设计和约束输入工具564对电路设计做出改变。在已经利用工具574执行综合操作之前,新的电路设计的功能操作可以利用性能模拟工具572来验证。如果需要的话,模拟工具(诸如性能模拟工具572)还可以用在设计流程的其他阶段(例如,在逻辑综合之后)。性能模拟工具572的输出可以采用任何适合的格式(例如,真值表、时序图等)提供给电路设计者。
[0068]一旦已经确定电路设计的功能操作是令人满意的,则逻辑综合和优化工具574就可以产生电路设计的门级网络表,例如利用与代工厂支持的目标进程有关的特定库的门电路,该代工厂被选择用于制造集成电路。可替代地,逻辑综合和优化工具574可以利用目标可编程逻辑器件(即,位于特定可编程逻辑器件产品或产品族的逻辑和互连资源中)产生电路设计的门级网络表。
[0069]通过作出适当的硬件选择,逻辑综合和优化工具574可以优化设计,以便基于逻辑设计者利用工具564输入的电路设计数据和约束数据在电路设计中实现不同的逻辑功能。如一个示例,逻辑综合和优化工具574可以标识设计中的无关位,这些无关位与满足性无关和可观察性无关相关(例如,参见图4)。
[0070]如果需要,逻辑综合和优化工具574可以基于标识的无关位来修改电路设计。在图4的示例中,3-LUT 430的输入C是可观察性无关,逻辑综合和优化工具574可以断开3-LUT430的输入C与输入Z的连接并将3-LUT 430的输入C关联至常值(例如,逻辑“I”)。如一个示例,考虑图2的查找表实现3-LUT 430。在此示例中,如果3-LUT 430的输入C关联至逻辑“I”,则配置存储器单元210、212、214和216可以存储无关位;并且如果3-LUT 430的输入C关联至逻辑“O”,则配置存储器单元220、222、224和226可以存储无关位。如果需要,逻辑综合和优化工具574可以在电路设计中标记无关位或将无关位分配给一组无关位。
[0071]在一些实施例中,逻辑综合和优化工具574可以执行工艺映射。在工艺映射过程中,逻辑综合和优化工具574可以将电路设计的元件映射到可放置和路由的单元库的元件上。这种单元库可以包括简单的逻辑门(例如,逻辑与门、逻辑或门、逻辑取反门、逻辑与非门、逻辑异或门等)、查找表、寄存器、存储块、和/或其他库单元。
[0072]如一个示例,考虑如下场景,其中单元库包括K-输入LUT。在此场景中,逻辑综合和优化工具574可以将电路设计元件的至少一部分映射至(K-1)-输入LUT并将该LUT的第K个输入关联至常值(例如,逻辑“O”或逻辑“I”),从而产生图2中所示的2~(K-1)个无关位。
[0073]在利用工具574进行逻辑综合和优化后,电路设计系统可以使用诸如放置和路由工具576这样的工具进行物理设计步骤(布局合成操作)。放置和路由工具576用于确定在何处放置工具574产生的门级网络表的每个门。例如,如果两个计数器彼此交互,放置和路由工具576可以在相邻区域确定这些计数器的位置以便减少互连延迟或满足定时要求,该定时要求规定了最大允许的互连延迟。放置和路由工具576为任何目标集成电路(例如,为给定的可编程集成电路,诸如现场可编程门阵列(FPGA))顺序地并且高效地创建电路设计的实现。
[0074]在一些实施例中,放置和路由工具576可以将资源添加至可以包括无关位的电路设计中以用于电路设计。例如,放置和路由工具576可以将虚拟电路(例如,一个或更多个查找表)添加到电路设计中,而无需将虚拟电路连接至电路设计的其他部分。如果需要,放置和路由工具576可以将虚拟电路与剩余的电路设计一起放置。放置和路由工具576可以将虚拟电路放置在集成电路的实现电路设计的预先确定的限制区域中、分布在集成电路的所选部分之间、分布在整个集成电路上,或者产生上述的任何组合。
[0075]在一些实施例中,CAD工具520可以编译以有限数量可利用资源为目标的电路设计。例如,CAD工具520可以编译电路设计以便在图1的可编程逻辑器件100上实现,该可编程逻辑器件可在可编程逻辑区域140或互连资源115数量方面具有有限的资源,这里仅举几例。在此实施例中,放置和路由工具576可以利用可编程逻辑器件100的有限资源实现电路设计。如果需要,放置和路由工具576可以保存现有的资源以用于存储无关位并仅利用未保存的资源实现电路设计。
[0076]如果需要,放置和路由工具576可以在电路设计中标记无关位或将无关位分配给一组无关位。例如,在放置和路由操作之后,放置和路由工具576可以分配路由多路复用器的无关位(例如,图3A和图3B的路由多路复用器300和350的无关位)给一组无关位。
[0077]工具(诸如工具574和576)可以是编译器套件的一部分(例如,可编程逻辑器件供应商提供的编译器工具套件的一部分)。根据本发明,工具(诸如工具574、576和578)还可以包括定时分析工具,诸如定时估测器。这允许在实际生产集成电路之前工具574和576满足性能要求(例如,定时要求)。
[0078]在已经利用放置和路由工具576产生所需电路设计的实现之后,可以使用分析工具578分析并测试该设计的实现。例如,分析工具578可以包括定时分析工具、功率分析工具、或形式验证工具,这里仅举几例。
[0079]在已经利用CAD工具520并依靠针对性的集成电路技术完成令人满意的优化操作之后,CAD工具520可以产生集成电路的掩模级布局描述或用于对可编程逻辑器件进行编程的配置数据。
[0080]利用图5的CAD工具520产生集成电路的掩模级布局描述所涉及的说明性操作在图6中示出。如图6所示,电路设计者可以首先提供设计规范602。设计规范602通常可以是以应用程序代码(例如,C代码、C++代码、SystemC码、OpenCL码等)的形式提供的性能描述。在一些场景中,电路设计者可以采用寄存器传送级(RTL)描述606的形式来提供设计规范。
[0081]RTL描述可以具有在寄存器传送级上描述电路功能的任何形式。例如,RTL描述可以利用硬件描述语言来提供,该硬件描述语言例如Verilog硬件描述语言(Verilog HDL或Verilog)、SystemVerilog硬件描述语言(SystemVerilog HDL或SystemVerilog)、或超高速集成电路硬件描述语言(VHDL)。如果需要,可以将RTL描述的一部分或全部作为原理图表示来提供。
[0082]通常,性能设计规范602可以包括不定时的或部分定时的功能码(S卩,应用程序代码不描述周期性的硬件行为),而RTL描述606可以包括完全定时的设计描述,该设计描述在寄存器传送级上细化电路的周期性行为。
[0083]设计规范602或RTL描述606还可以包括目标标准,诸如面积利用、功耗、延迟最小化、时钟频率优化、或它们的任何组合。优化约束和目标标准可以被统称为约束。
[0084]这些约束能够被提供给单独的数据路径、单独的数据路径的一些部分、设计的一些部分、或提供给整个设计。例如,约束可以与设计规范602、RTL描述606(例如,作为编译指示或作为声明)在一个约束文件中或通过用户输入(例如,利用图5的设计和约束输入工具564) 一起提供,这里仅举几例。
[0085]在设计规范602或RTL描述606中包括的约束可以采用变量、参数、编译器指令、宏命令、编译指示、或声明的形式传送给CAD工具520,这里仅举几例。CAD工具520可以使用约束文件,该约束文件可以包括约束的一部分或全部。这种约束文件可以与设计规范602或RTL描述606—起被包含。在一些场景中,约束的一部分或全部可以嵌入在电路设计中。可替代地,约束可能已经利用设计和约束输入工具564来定义(参见图5)。
[0086]在步骤604处,可以进行性能综合(有时也被称为算法合成)以便将性能描述传送至IjRTL描述606中。如果已经以RTL描述的形式提供了设计规范,则可以跳过步骤604。
[0087]在步骤618处,性能模拟工具572可以执行RTL描述的RTL模拟,RTL模拟可以验证RTL描述的功能性能。如果RTL描述的功能性能不完整或不正确,电路设计者能够对HDL码(作为例子)做出改变。在RTL模拟618过程中,从模拟RTL描述的性能获得的实际结果可以与预期结果相比较。
[0088]在步骤608期间,逻辑综合操作可以利用图5的逻辑综合和优化工具574产生门级描述610。如果需要,逻辑综合操作可以标识RTL描述606中的和/或所产生的门级描述610中的无关位,这些无关位与满足性无关和可观察性无关相关联(例如,参见图4)。逻辑综合操作可以标记标识的无关位或将标识的无关位分配给一组无关位。
[0089]在步骤612期间,物理综合操作(利用例如放置和路由工具576进行的放置和路由以及优化操作)可以在目标集成电路上的优选位置中放置并连接门级描述610中的不同门,以满足给定的目标标准(例如,使面积最小化并使路由效率最大化或使路径延迟最小化并使时钟频率最大化或它们的任何组合)。物理综合612的输出是掩模级布局描述616。在一些实施例中,掩模级布局描述616可以包括可由位流具体化的配置数据。配置数据可以配置可编程集成电路(诸如图1的PLD 100)的至少一部分。
[0090]如果需要,物理综合操作可以将资源添加到门级描述610,目的是增加无关位的数量。例如,物理综合操作可以将虚拟门(例如,一个或更多个查找表)添加到门级描述610,而无需将虚拟门连接至门级网络表的其他部分。如果需要,物理综合操作可以将虚拟门与剩余门级网络表一起放置。物理综合操作可以将虚拟电路放置在预先确定的集成电路的限制区域中、分布在集成电路的所选部分之间、分布在整个集成电路上,或者产生上述的任何组入口 ο
[0091]在一些实施例中,物理综合612可以将具有有限资源的集成电路(例如,图1的PLD100)作为目标,并且物理综合操作可以保存集成电路的有限资源的一些(例如,通过将虚拟门添加到门级描述610和/或通过减少集成电路的可利用资源的数量)。在一些实施例中,物理综合操作可以保存预定数量的可编程逻辑区域140和/或预定数量的互连资源115。物理综合操作可以使用保存的资源来存储无关位并且只利用未保存的资源来实现门级描述610。如果需要,物理综合操作可以在电路设计中标记无关位或将无关位分配给一组无关位。
[0092]电路设计系统500可以包括定时估测器(例如,形成为逻辑综合和优化工具574、放置和路由工具576、或分析工具578的一部分),该定时估测器可以用于在步骤614期间估测电路设计的同步元件之间的延迟。例如,定时估测器可以估测时序元件(诸如寄存器)与存储电路之间延迟(例如,基于互连的长度、中间组合逻辑等)。如果需要,可以基于判据来估测延迟,这些判据诸如是裕量(例如,要求的到达时间与信号的到达时间之间的差)、裕量比、互连阻塞、或其他定时判据。电路设计系统500可以使用估测的延迟来确定多组电路的位置,同时帮助确保延迟满足定时要求(例如,关键的路径延迟要求)或其他性能约束。
[0093]电路设计系统500可以包括可以用于执行错误码生成和插入的工具(例如,该工具嵌入在逻辑综合和优化工具574中、在放置和路由工具576中、和/或在分析工具578中)。如图所示,错误码生成和插入619可以保存无关位以用于逻辑综合608和/或物理综合612期间的错误码的存储。错误码生成和插入619可以基于掩模级布局描述616来产生错误码。如果需要,错误码生成和插入619可以基于门级布局描述610来产生错误码。
[0094]错误码生成和插入619可以基于任何错误检查方案来产生错误码。例如,错误码生成和插入619可以产生奇偶校验位以用于多维奇偶校验检查(例如,二维奇偶校验检查)或用于汉明码,或产生校验和位作为多项式除法的余数以用于循环冗余校验(CRC),这里仅举几例。
[0095]奇偶校验位表明数据字中具有值逻辑“I”的位数量是奇数还是偶数。奇偶校验位可以表明偶数奇偶校验或者奇数奇偶校验。对于偶数奇偶校验,如果数据字中具有值逻辑“I”的位数量是奇数,奇偶校验位具有值逻辑“I”,而如果数据字中具有值逻辑“I”的位数量是零或偶数,奇偶校验位具有值逻辑“O”。在奇数奇偶校验的情况中,如果数据字中具有值逻辑“I”的位数量是奇数,奇偶校验位具有值逻辑“O”,而如果数据字中具有值逻辑“I”的位数量是零或偶数,奇偶校验位具有值逻辑“I”。
[0096]用于偶数奇偶校验的奇偶校验位检查可以利用逻辑异或(XOR)门来产生。用于奇数奇偶校验的奇偶校验位检查可以在经过取反器后利用XOR门来产生。然而,奇偶校验位可能不会检测偶数个错误何时出现在传输的数据字中。例如,如果接收的数据字的两个位从逻辑“O”变化到逻辑“I”,为该数据字计算的奇偶校验位具有与传输该数据字之前计算的奇偶校验位相同的值。而且,单独的奇偶校验位不能校正错误,因为数据字内损坏的位的位置是未知的。然而,使用被安排为使得数据字内不同的损坏位产生不同的错误结果的多个奇偶校验位能够检测损坏位的位置并因此能够进行错误校正。
[0097]如一个示例,图7示出基于二维奇偶校验码(2DPCC)的用于位的二维阵列的错误码生成,该二维奇偶校验码能够检测损坏位的位置并因此能够进行错误校正。
[0098]如图所示,该二维阵列可以具有六行(包括行710)和四列(包括列720)。错误码生成器可以为六个行的每一个产生行奇偶校验位并且为四个列的每一个产生列奇偶校验位。如果需要,错误码生成器可以为行奇偶校验位产生额外的列奇偶校验位。可替代地,错误码生成器可以为列奇偶校验位产生额外的行奇偶校验位。
[0099]错误码生成器可以为行奇偶校验和列奇偶校验产生偶数奇偶校验位,为行奇偶校验产生奇数奇偶校验位并为列奇偶校验产生偶数奇偶校验位,或者为行奇偶校验产生偶数奇偶校验位并为列奇偶校验产生奇数奇偶校验位。如图所示,错误码生成器可以为行奇偶校验和为列奇偶校验产生奇数奇偶校验位。例如,行710包括具有值逻辑“I”的偶数个位。因此,行奇偶校验位715具有值逻辑“I”。再如,列720包括具有值逻辑“I”的偶数个位,这意味着列奇偶校验位725具有值逻辑“I”。错误码生成器可以在存储器中存储生成的奇偶校验位。
[0100]错误码检查器可以访问存储器以检索存储的奇偶校验位,目的是进行错误检测和错误校正。错误码检查器可以计算行奇偶校验位和列奇偶校验位并将计算的行奇偶校验位和列奇偶校验位与存储的奇偶校验位相比较。在计算的行奇偶校验位与存储的行奇偶校验位的比较中的不匹配可以表示相应行中存在错误。在计算的列奇偶校验位与存储的列奇偶校验位的比较中的不匹配可以表示相应列中存在错误。检测到行中存在错误和列中存在错误可以表示该行和该列的交叉点上的位中存在错误。如果需要,通过将检测到的位的值取反,错误码检查器可以校正检测到的错误。
[0101]如一个示例,考虑如下场景,其中图7的位的二维阵列的位值和该位的二维阵列的行和列奇偶校验位存储在存储器(诸如配置存储器单元)中或寄存器中。进一步考虑,单粒子翻转(SEU)撞击在行710和列720的交叉点处存储位的存储器并将该位的值从逻辑“O”变为逻辑“I”。在这种场景中,错误代码检查器可以计算行710的奇数奇偶校验并确定行奇偶校验位715具有值逻辑“O”。错误代码检查器可以进一步计算列720的奇数奇偶校验并确定列奇偶校验位725具有值逻辑“O”。错误代码检查器可以与存储在存储器中的相应奇偶校验位进行比较并检测行710和列720的交叉点处的错误。如果需要,错误代码检查器可以通过将位值从逻辑“I”变为逻辑“O”来校正行710和列720的交叉点处的检测到的错误。
[0102]在一些实施例中,错误码(例如,行和列奇偶校验位)可以被存储在无关存储器单元中。图8是根据一个实施例的说明性过程的图示,该过程用于使用无关位产生错误码并将其存储在二维存储器单元阵列的无关存储器单元中。
[0103]如图所示,该二维存储器单元阵列可以具有七行和五列。该二维存储器单元阵列可以存储无关位A、B、C、D、E、F、G、H、I和J。错误码生成器可以基于无关位为七行中的每一行和五列中的每一列产生奇数奇偶校验。为此目的,错误码生成器可以基于存储在这些行的每一行中和这些列的每一列中的位值的奇偶校验来提取用于无关位的约束。
[0104]例如,错误码生成器可以确定A和D必须具有值逻辑“O”(即,A = 0,D = 0)以用于行I和行3的奇数奇偶校验,E和F必须具有值逻辑“I”以用于行4和行5的奇数奇偶校验,B或C中确切的一个必须具有值逻辑“I”(即,B XOR C=I)以用于行2的奇数奇偶校验,G和H两者必须具有相同的逻辑值(即,G XOR H=O)以用于行6的奇数奇偶校验,并且I和J两者必须具有相同的逻辑值(即,I XOR J = O)以用于行7的奇数奇偶校验。
[0105]类似地,错误码生成器可以确定B和G中确切的一个、A和I中确切的一个、以及D和J中确切的一个必须具有值逻辑“I”(即,B XOR G=I,A XOR 1 = 1,D XOR J=I)以分别用于列1、行2和行3的奇数奇偶校验。错误码生成器可以进一步确定E和F以及C和H必须具有相同的逻辑值(即,E XOR F = O,C XOR H=O)以分别用于列4和行5的奇数奇偶校验。
[0106]这些约束表示线性方程组模2,错误码生成器可以解该线性方程组以确定奇偶校验位。例如,由于A必须具有值逻辑“I”并且A XOR I必须具有值逻辑“I”,1必须具有值逻辑“O”。而且,因为有约束I XOR J = O和D XOR J = I,J必须具有值逻辑“O”。
[0107]B、C、G和H可以具有两个不同的解,并且当一个变量可能有多个解时,错误码生成器可以任意地选择一个值用于这些变量之一。例如,错误码生成器可以选择B具有值逻辑“I”。在这种示例中,C必须具有值逻辑“O”(因为有约束B XOR C = O),11必须具有值逻辑“O”(因为有约束C XOR H=O),并且G必须具有值逻辑“O”(因为有约束G XOR H=O)。在另一示例中,错误码生成器可以选择B具有值逻辑“O”。在这种示例中,C必须具有值逻辑“I”,H必须具有值逻辑“I”,并且G必须具有值逻辑“I”。
[0108]错误码生成器可以分别在无关存储器单元(具有无关位A、B、C、D、E、F、G、H、1、J)中存储通过解线性方程组所获得的值(即,值逻辑“O”、逻辑“O”、逻辑“I”、逻辑“O”、逻辑“I”、逻辑“I”、逻辑“I”、逻辑“I”、逻辑“I”、和逻辑“I” )。
[0109]在一些实施例中,使用行和列奇偶校验的线性方程组可以没有解。例如,考虑如下场景,其中为包括五列的行(例如,行810)和为包括五行的列(例如,列820)计算奇偶校验。在这种场景中,错误码生成器可以提取对于行810,D必须具有值逻辑“O”的约束,以及对于列820,D必须具有值逻辑“I”的约束。因此,对于D,不存在满足这些约束的有效解。
[0110]不可满足的约束的问题可以通过添加更多的行和/或列来克服,使得更多的无关位是每次奇偶校验计算的一部分。例如,延伸每个列(诸如列820)以包括七行得到如上所示的有效解。在一些实施例中,额外的无关位可以被添加到具有不可满足约束的子集中,使得约束变得可解。例如,向列820添加具有值逻辑“I”的一个无关位K可以使D能够具有值逻辑“O”,对行810这满足约束。
[0111]在一些实施例中,错误码生成器可以为行产生错误码,但不为列产生,或者为列产生,但不为行产生。在这种实施例中,错误码生成器可以提供错误检测,因为为相同的行或列计算两个不同的奇偶校验位可以表明错误已经出现在该行或列中。然而,错误码可能不提供错误校正,因为不再确定错误的位置。
[0112]在一些实施例中,错误码生成器可以为除了一些行和/或列之外的全部产生错误码。如果需要,错误码生成器可以为没有错误码产生的行和/或列进行标记。在以上示例中,错误码生成器可以为D选择值逻辑“O”,使得行810具有奇数奇偶校验,并且将列820标记为不具有奇数奇偶校验。
[0113]计算行和列奇偶校验仅仅是说明性的并且无意限制本发明的范围。如果需要,错误码生成器可以分隔位集合,在任何任意数量的子集中为该位集合产生错误码,使得任何两个子集可以标识位集合中的唯一位。换言之,位集合中的每一个位可以位于两个子集中并且没有两个位可以位于相同的两个子集中。
[0114]如果需要,错误码生成器可以将集成电路的不同位置的位包括进每个子集,以降低子集中多于一个的位受到单粒子翻转(SEU)的损坏,这可能出现在集成电路上的一个位置上。
[0115]在一些实施例中,错误码生成器可以将位集合分为子集,使得子集包括一个或更多个唯一无关位。在子集中具有唯一无关码可以帮助提取并求解约束。
[0116]错误码检查器可以访问无关存储器单元以检索存储的奇偶校验位,目的是进行错误检测和错误校正。错误码检查器可以计算奇偶校验位并比较计算的奇偶校验位和存储的奇偶校验位。在计算的奇偶校验位与存储的奇偶校验位的比较中的不匹配可以表明相应的位子集中存在错误。在共享一个公共位的两个不同位子集中发现两个不匹配可以表明相应的位值已经损坏(例如,由单粒子翻转导致)。如果需要,错误码检查器可以通过将相应位的值取反来校正检测到的错误。
[0117]错误码检查器可以进行错误检查,以便在周期时间间隔内或根据要求检测并校正错误。图9是说明性错误检测和校正电路的图示,该电路可以检测和校正配置帧(例如,图1的PLD 100中一组配置存储器单元)中的错误。
[0118]如图所示,配置帧(诸如配置帧910和915)各自可以包括一组配置存储器单元(例如,具有无关存储器单元A至J的二维存储器单元阵列存储通过提取和求解图8所示的约束而获得的奇偶校验位)。地址寄存器920和数据寄存器930可以协调对配置帧的读和写访问。例如,地址寄存器920可能够通过地址线925访问配置帧910,从而将配置帧910通过位线935连接至数据寄存器930。为了进行错误检查,数据寄存器930可以在读操作中访问配置帧910的配置存储器单元。
[0119]数据寄存器930可以包括读锁存器950、ECC计算单元960、校验子逻辑电路970、以及擦洗控制器940。由于读取操作,读锁存器950可以接收存储在配置帧910的配置存储器单元中的值。ECC计算单元960可以计算校验子。例如,ECC计算单元可以为配置帧910的位的每个子集计算奇偶校验位,并比较计算的奇偶校验位(例如,通过提取和求解图8所示约束而获得)和从存储在配置帧910的无关配置存储器单元(例如,在图8的无关存储器单元A至J中)中的奇偶校验位检索的奇偶校验位,以便计算校验子。
[0120]校验子逻辑电路970可以从ECC计算单元960接收校验子。如果接收到的校验子为零,校验子逻辑电路970可以认为没有检测到错误。如果接收到的校验子为非零,校验子逻辑电路970可以检测到已经检测到错误。因此,校验子逻辑电路970可以通过信号故障(FAULT)通知用户出现错误。
[0121]如果需要,校验子逻辑电路970可以产生与检测到的错误相关联的错误位置(例如,地址和位位置)并将错误位置传送至地址寄存器920和读锁存器950。擦洗控制器940可以通过位线935控制对配置帧910的写访问,目的是校正配置帧910中的定位错误。
[0122]图10是处理配置数据时错误码生成器可以执行的说明性步骤的流程图,该配置数据存储在可编程集成电路上的配置存储器单元中。在步骤1010期间,错误码生成器可以标识配置存储器单元的无关子集,这些配置存储器单元存储配置数据的无关位。例如,错误码生成器可以标识图8的二维存储器单元阵列的无关位A、B、C、D、E、F、G、1、和J。
[0123]在步骤1020期间,错误码生成器可以计算存储在配置存储器单元的第一子集中的配置数据的第一子集的第一奇偶校验位。例如,错误码生成器可以基于无关位A为图8的二维存储器单元阵列的第一行计算值逻辑“O”的奇偶校验位。在步骤1030期间,错误码生成器可以在配置存储器单元的无关子集的第一配置存储器单元中存储该第一奇偶校验位。例如,错误码生成器可以用具有值逻辑“O”的奇偶校验位替代无关位A。
[0124]在步骤1040期间,错误码生成器可以计算存储在配置存储器单元的第二子集中的配置数据的第二子集的第二奇偶校验位,其中该第一子集和第二子集在一个公共的预定配置存储器单元中重叠。例如,假设已经确定无关位B存储值逻辑“O”,则错误码生成器可以基于无关位G为图8的二维存储器单元阵列的第一列计算值逻辑“I”的奇偶校验位。
[0125]在步骤1050期间,错误码生成器可以在配置存储器单元的无关子集的第二配置存储器单元中存储该第二奇偶校验位。例如,错误码生成器可以用值逻辑“I”替代无关位G。
[0126]图11是根据一个实施例的CAD工具为处理配置数据可以执行的说明性步骤的流程图,该配置数据实现在集成电路上的电路设计。如一个示例,图5的CAD工具520可以进行错误码生成和插入,诸如图6的错误码生成和插入619。在步骤1110期间,CAD工具可以接收配置数据。例如,CAD工具可以接收配置数据作为图6的掩模级布局描述616的一部分。
[0127]在步骤1120期间,CAD工具可以计算配置数据中的一组无关位。在步骤1130期间,CAD工具可以为配置数据的子集计算奇偶校验位。在步骤1140期间,CAD工具可以通过用奇偶校验位替代该组无关位中的一个位来产生经更新的配置数据。
[0128]在步骤1150期间,CAD工具可以利用经更新的配置数据对集成电路上的配置存储器单元进行编程。例如,CAD工具可以通过将经更新的配置数据载入到存储器单元130(利用管脚120和输入/输出电路110)来配置图1的PLD100中的可编程逻辑区域140。
[0129]图12是根据一个实施例的电路设计系统(例如,图5的电路设计系统500)可执行的说明性步骤的流程图,这些步骤用于处理电路设计以便在可编程电路上实现。在步骤1210期间,电路设计系统可以接收电路设计(例如,使用图5的设计和约束输入工具564)。在步骤1220期间,电路设计系统可以在可编程电路中保存配置存储器单元的第一子集,以用于存储错误检查位。例如,当执行图5的逻辑综合和优化工具574和/或放置和路由工具576时,电路设计系统可以保存配置存储器单元。
[0130]在步骤1230期间,电路设计系统可以产生配置数据以便对可编程电路中的配置存储器单元的第二子集进行编程。在步骤1240期间,电路设计系统可以确定配置存储器单元的第二子集中的配置存储器单元的无关子集,该配置存储器单元存储无关位。在步骤1250期间,电路设计系统可以对配置数据进行错误检查编码。
[0131]本文描述的方法和设备可以并入到任何适当的电子装置或电子装置系统中。例如,该方法和设备可以并入到很多类型的装置中,诸如微处理器或其他1C。示例性IC包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑器件(EPLD)、电可擦除可编程逻辑器件(EEPLD)、逻辑单元阵列(LCA)、现场可编程门阵列(FPGA)、应用专用标准产品(ASSP)、应用专用集成电路(ASIC)、数字信号处理器(DSP)、图形处理单元(GPU),在此仅举几例。
[0132]本文描述的集成电路可以是数据处理系统的一部分,该数据处理系统包括以下组件的一个或更多个:处理器、存储器、I/o电路;以及外围装置。集成电路能够用在各种各样的应用中,诸如计算机组网、数据组网、仪器仪表、视频数理、数字信号处理、或任何适合的其他应用中,在这些应用中使用具有错误检测和/或错误校正电路的集成电路的优点是令人期望的。
[0133]尽管以特定的顺序描述了这些方法操作,但应当理解的是可以在所描述的操作之间执行其他操作,可以调整所描述的操作以便它们出现在稍微不同的时刻或所描述的操作可以分布在一个系统中,该系统允许处理操作出现在与处理相关的不同的间隔上,只要重叠操作的处理以期望的方式执行。
[0134]附加实施例:
[0135]附加实施例1。一种用于处理配置数据的方法,该配置数据被存储在可编程集成电路上的配置存储器单元中并用于在该可编程集成电路上实现电路设计,该方法包括:标识配置存储器单元的无关子集,该无关子集存储该配置数据的无关位,其中,在无关位的一个位中的极性变化保留该可编程集成电路中的电路设计实现的功能;计算存储在配置存储器单元的第一子集中的该配置数据的第一子集的第一错误检查位;并且在配置存储器单元的无关子集的第一配置存储器单元中存储该第一错误检查位。
[0136]附加实施例2。如附加实施例1所述的方法,其中,配置存储器单元包括以行和列排列的配置存储器单元阵列,并且其中,该配置数据的该第一子集被存储在该阵列的配置存储器单元的行中。
[0137]附加实施例3。如附加实施例1所述的方法,进一步包括:计算存储在这些配置存储器单元的第二子集中的该配置数据的第二子集的第二错误检查位,其中,配置存储器单元的该第一和第二子集在公共的预定配置存储器单元中重叠。
[0138]附加实施例4。如附加实施例3所述的方法,其中,该配置数据的该第二子集被存储在该阵列的配置存储器单元的列中。
[0139]附加实施例5。如附加实施例3所述的方法,进一步包括:在配置存储器单元的无关子集中的第二配置存储器单元中存储该第二错误检查位。
[0140]附加实施例6。如附加实施例5所述的方法,进一步包括:将第一位置与该第一配置存储器单元相关联;并且为该第二配置存储器单元选择第二位置,其中,该第二位置与该第一位置之间具有一个预定的距离。
[0141]附加实施例7。如附加实施例5所述的方法,进一步包括:计算存储在配置存储器单元的第一子集中的配置数据的第一子集的第三错误检查位;并且通过比较该第一和第三错误检查位来检测该第一和第三错误检查位之间的不匹配,该不匹配表明在配置数据的第一子集中存在错误。
[0142]附加实施例8。如附加实施例7所述的方法,进一步包括:计算存储在配置存储器单元的第二子集中的该配置数据的第二子集的第四错误检查位;并且通过比较该第二和第四错误检查位来检测该第二和第四错误检查位之间的不匹配,该不匹配表明在配置数据的第二子集中存在错误。
[0143]附加实施例9。如附加实施例8所述的方法,进一步包括:响应于检测到该第一和第三错误检查位之间的不匹配和该第二和第四错误检查位之间的不匹配,对存储在该公共预定配置存储器单元中的该配置数据的值取反。
[0144]附加实施例10。如附加实施例1所述的方法,其中,标识配置存储器单元的无关子集进一步包括:将该电路设计实现未使用的配置存储器单元添加到配置存储器单元的无关子集。
[0145]附加实施例U。如附加实施例1所述的方法,其中,标识配置存储器单元的无关子集进一步包括:标识配置存储器单元的第二子集,其中,该第二子集中的配置存储器单元存储该配置数据的一个位,该位具有高逻辑值;并且标识配置存储器单元的第三子集,其中,该第三子集中的配置存储器单元存储该配置数据的一个位,该位具有低逻辑值。
[0146]附加实施例12。如附加实施例11所述的方法,进一步包括:从配置存储器单元减去配置存储器单元的第二子集和第三子集,以确定配置存储器单元的无关子集。
[0147]附加实施例13。一种用于处理配置数据的方法,该配置数据在集成电路上实现电路设计,该方法包括:接收该配置数据;标识该配置数据中的一组无关位,其中,在无关位的任何一个位中的极性变化保留该电路设计的功能;为该配置数据的子集计算奇偶校验位;通过用该奇偶校验位替代该组无关位中的位来产生经更新的配置数据;并且以该经更新的配置数据对该集成电路上的配置存储器单元进行编程。
[0148]附加实施例14。如附加实施例13所述的方法,其中,产生该经更新的配置数据进一步包括:为该配置数据的附加子集计算附加奇偶校验位,其中,该配置数据的该子集和该附加子集共享一个公共位。
[0149]附加实施例15。如附加实施例14所述的方法,进一步包括:以该附加的奇偶校验位替代该组无关位中的一个附加位。
[0150]附加实施例16。如附加实施例15所述的方法,进一步包括:计算该配置数据的该子集的第一奇偶校验;计算该配置数据的该附加子集的第二奇偶校验;比较该计算的第一奇偶校验与该奇偶校验位和比较该计算的第二奇偶校验与该附加奇偶校验位,以标识该公共位的位错误。
[0151 ]附加实施例17。如附加实施例16所述的方法,进一步包括:响应于标识该公共位是错误的,通过对该公共位取反来校正该错误位。
[0152]附加实施例18。如附加实施例13所述的方法,其中,为该配置数据的该子集计算该奇偶校验位进一步包括:为该组无关位和该配置数据的该子集共同具有的位产生一个约束。
[0153]附加实施例19。一种用于处理电路设计的非瞬态计算机可读存储介质,该电路设计在可编程电路上实现,该非瞬态计算机介质包括指令以用于:接收该电路设计;在该可编程电路中保存配置存储器单元的第一子集以用于存储错误检查位;产生配置数据以便对该可编程电路中的配置存储器单元的第二子集进行编程,其中,该配置数据在该可编程电路中实现该电路设计,并且其中,该第一和第二子集是不相交的;标识配置存储器单元的第二子集中的配置存储器单元的无关子集,该配置存储器单元存储无关位,其中,无关位的极性变化保留该可编程电路中电路设计实现的功能;并且对该配置数据进行错误检查编码。
[0154]附加实施例20。如附加实施例19所述的非瞬态计算机可读存储介质,其中,执行该错误检查编码进一步包括:将配置存储器单元从该无关子集添加到配置存储器单元的第一子集;在该配置数据中计算错误检查位;并且在该配置存储器单元的第一子集中存储错误检查位。
[0155]附加实施例21。如附加实施例20所述的非瞬态计算机可读存储介质,其中,计算错误检查位进一步包括:为配置数据的第一子集计算第一奇偶校验位;并且为配置数据的第二子集计算第二奇偶校验位,其中,配置数据的该第一和第二子集具有一个公共位。
[0156]附加实施例22。如附加实施例19所述的非瞬态计算机可读存储介质,其中,保存配置存储器单元的第一子集进一步包括:通过阻塞到查找表的输入而在该可编程电路中保存该查找表的配置存储器单元。
[0157]附加实施例23。如附加实施例22所述的非瞬态计算机可读存储介质,其中,产生配置数据进一步包括:通过解除阻塞到该查找表的输入而从该第一子集移除配置存储器单
J L ο
[0158]附加实施例24。如附加实施例19所述的非瞬态计算机可读存储介质,其中,保存配置存储器单元的第一子集进一步包括:通过阻塞可配置路由多路复用器的输出而在该可编程电路中保存该可配置路由多路复用器的配置存储器单元。
[0159]附加实施例25。如附加实施例24所述的非瞬态计算机可读存储介质,其中,产生配置数据进一步包括:通过解除阻塞可配置路由多路复用器的输出而从该第一子集移除配置存储器单元。
[0160]前述内容仅说明了本发明的原则并且本领域那些熟练技术人员可以在不偏离本发明范围和精神的情况下作出各种修改。前述实施例可以独立地或任何组合地实施。
【主权项】
1.一种用于处理配置数据的方法,所述配置数据被存储在可编程集成电路上的配置存储器单元中并且用于在所述可编程集成电路上实现电路设计,所述方法包括: 标识所述配置存储器单元的无关子集,所述无关子集存储所述配置数据的无关位,其中,在所述无关位的一个位中的极性变化保留所述可编程集成电路中的电路设计实现的功會K; 计算存储在所述配置存储器单元的第一子集中的所述配置数据的第一子集的第一错误检查位;并且 在所述配置存储器单元的无关子集中的第一配置存储器单元中存储所述第一错误检查位。2.如权利要求1所述的方法,其中,所述配置存储器单元包括以行和列排列的配置存储器单元阵列,并且其中,所述配置数据的所述第一子集被存储在所述阵列中的配置存储器单元的行中。3.如权利要求1所述的方法,进一步包括: 计算存储在所述配置存储器单元的第二子集中的所述配置数据的第二子集的第二错误检查位,其中,所述配置存储器单元的所述第一子集和所述第二子集在公共的预定配置存储器单元中重叠。4.如权利要求3所述的方法,其中,所述配置数据的所述第二子集被存储在所述阵列中的配置存储器单元的列中。5.如权利要求3所述的方法,进一步包括: 在所述配置存储器单元的无关子集中的第二配置存储器单元中存储所述第二错误检查位。6.如权利要求5所述的方法,进一步包括: 将第一位置与所述第一配置存储器单元相关联;并且 为所述第二配置存储器单元选择第二位置,其中,所述第二位置与所述第一位置之间具有一预定的距离。7.如权利要求5所述的方法,进一步包括: 计算存储在所述配置存储器单元的第一子集中的所述配置数据的第一子集的第三错误检查位;并且 通过比较所述第一错误检查位和所述第三错误检查位来检测所述第一错误检查位和所述第三错误检查位之间的不匹配,所述不匹配表明在所述配置数据的第一子集中存在错误。8.如权利要求7所述的方法,进一步包括: 计算存储在所述配置存储器单元的第二子集中的所述配置数据的第二子集的第四错误检查位;并且 通过比较所述第二错误检查位和所述第四错误检查位来检测所述第二错误检查位和所述第四错误检查位之间的不匹配,所述不匹配表明在所述配置数据的第二子集中存在错误;并且 响应于检测到所述第一错误检查位和所述第三错误检查位之间的不匹配,以及所述第二错误检查位和所述第四错误检查位之间的不匹配,对存储在所述公共的预定配置存储器单元中的所述配置数据的值取反。9.如权利要求1所述的方法,其中,标识所述配置存储器单元的无关子集进一步包括: 将所述电路设计实现未使用的配置存储器单元添加到所述配置存储器单元的无关子集。10.如权利要求1所述的方法,其中,标识所述配置存储器单元的无关子集进一步包括: 标识配置存储器单元的第二子集,其中,所述第二子集中的配置存储器单元存储所述配置数据的位,该位具有高逻辑值; 标识配置存储器单元的第三子集,其中,所述第三子集中的配置存储器单元存储所述配置数据的位,该位具有低逻辑值;并且 从所述配置存储器单元减去所述配置存储器单元的第二子集和第三子集,以确定所述配置存储器单元的无关子集。11.一种用于处理配置数据的方法,所述配置数据在集成电路上实现电路设计,所述方法包括: 接收所述配置数据; 标识所述配置数据中的一组无关位,其中,在所述无关位的任何一个位中的极性变化保留所述电路设计的功能; 为所述配置数据的子集计算奇偶校验位; 通过用所述奇偶校验位替代所述一组无关位中的位来产生经更新的配置数据;并且 以所述经更新的配置数据对所述集成电路上的配置存储器单元进行编程。12.如权利要求11所述的方法,其中,产生所述经更新的配置数据进一步包括: 为所述配置数据的附加子集计算附加奇偶校验位,其中,所述配置数据的所述子集和所述附加子集共享公共位。13.如权利要求12所述的方法,进一步包括: 以所述附加奇偶校验位替代所述一组无关位中的附加位; 计算所述配置数据的所述子集的第一奇偶校验; 计算所述配置数据的所述附加子集的第二奇偶校验; 比较所述计算的第一奇偶校验与所述奇偶校验位,并且比较所述计算的第二奇偶校验与所述附加奇偶校验位,以标识所述公共位的位错误;并且 响应于标识所述公共位是错误的,通过对所述公共位取反来校正所述错误位。14.如权利要求11所述的方法,其中,为所述配置数据的所述子集计算所述奇偶校验位进一步包括: 为所述一组无关位和所述配置数据的所述子集共同具有的位产生约束。15.—种用于处理电路设计的非瞬态计算机可读存储介质,所述电路设计在可编程电路上实现,所述非瞬态计算机介质包括指令以用于: 接收所述电路设计; 在所述可编程电路中保存配置存储器单元的第一子集以用于存储错误检查位; 产生配置数据以便对所述可编程电路中的配置存储器单元的第二子集进行编程,其中,所述配置数据在所述可编程电路中实现所述电路设计,并且其中,所述第一子集和所述第二子集是不相交的; 标识所述配置存储器单元的第二子集中的配置存储器单元的无关子集,所述配置存储器单元存储无关位,其中,所述无关位中的极性变化保留所述可编程电路中电路设计实现的功能;并且 对所述配置数据进行错误检查编码。16.如权利要求15所述的非瞬态计算机可读存储介质,其中,执行所述错误检查编码进一步包括: 将配置存储器单元从所述无关子集添加到所述配置存储器单元的第一子集; 在所述配置数据中计算所述错误检查位;并且 在所述配置存储器单元的第一子集中存储所述错误检查位。17.如权利要求16所述的非瞬态计算机可读存储介质,其中,计算所述错误检查位进一步包括: 为配置数据的第一子集计算第一奇偶校验位;并且 为配置数据的第二子集计算第二奇偶校验位,其中,所述配置数据的第一子集和第二子集具有公共位。18.如权利要求15所述的非瞬态计算机可读存储介质,其中,保存所述配置存储器单元的第一子集进一步包括: 通过阻塞到查找表的输入而在所述可编程电路中保存所述查找表的配置存储器单元。19.如权利要求18所述的非瞬态计算机可读存储介质,其中,产生配置数据进一步包括: 通过解除阻塞到所述查找表的输入而从所述第一子集移除配置存储器单元。20.如权利要求15所述的非瞬态计算机可读存储介质,其中,保存所述配置存储器单元的第一子集进一步包括:通过阻塞对可配置路由多路复用器的输出而在所述可编程电路中保存所述可配置路由多路复用器的配置存储器单元,并且其中,产生配置数据进一步包括:通过解除阻塞对所述可配置路由多路复用器的输出而从所述第一子集移除配置存储器单J L ο
【文档编号】G06F17/50GK106021636SQ201610205798
【公开日】2016年10月12日
【申请日】2016年3月31日
【发明人】H·H·施密特, M·D·赫顿
【申请人】阿尔特拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1