首页> 中国专利> 集成电路的顺序存储电路内单次事件颠覆错误的纠正

集成电路的顺序存储电路内单次事件颠覆错误的纠正

摘要

本发明为集成电路的顺序存储电路内单次事件颠覆错误的纠正。公开一种用于集成电路的顺序存储电路,其包括存储电路、错误检测电路和输出电路,存储电路包含第一存储元件和第二存储元件,错误检测电路包含两个附加存储元件、比较电路和进一步的比较电路,输出电路用于纠正所述存储电路内任何检测到的错误,并且用于输出输出值。

著录项

  • 公开/公告号CN101714397A

    专利类型发明专利

  • 公开/公告日2010-05-26

    原文格式PDF

  • 申请/专利权人 ARM有限公司;

    申请/专利号CN200910206127.8

  • 发明设计人 V·钱德拉;

    申请日2009-10-09

  • 分类号G11C5/00;G11C29/00;H03K19/003;

  • 代理机构中国专利代理(香港)有限公司;

  • 代理人柯广华

  • 地址 英国剑桥郡

  • 入库时间 2023-12-17 23:57:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-06-04

    授权

    授权

  • 2011-11-23

    实质审查的生效 IPC(主分类):G11C5/00 申请日:20091009

    实质审查的生效

  • 2010-05-26

    公开

    公开

说明书

技术领域

本发明的技术领域涉及集成电路的顺序存储电路中的软错误或单次事件颠覆错误(single event upset error)的纠正,例如因为中子或阿尔法粒子撞击所产生的错误。

背景技术

软错误或单次事件颠覆错误(SEU)是电路内节点的扰乱,起因是高能中子或阿尔法粒子撞击在硅基板上。这种撞击可在例如处理器的集成电路内的敏感节点处产生瞬间电压脉冲或状态的变更。由于SEU,错误可发生,其中它导致在确定集成电路的架构状态的状态保持元件中的状态改变,这些元件例如处理器的架构状态寄存器、寄存器文件、RAM阵列、或控制逻辑内的锁存器(latch)和触发器(flip-flop)。在本文档的上下文中,我们将由于SEU的错误视为集成电路内部任何状态保持元件中的状态翻转。

用于保护如SRAM阵列的此类元件的传统技术是通过使用错误纠正技术,例如:错误纠正码或ECC可用来标记错误,然后纠正它们。由于SRAM的高密度,这种技术非常有效,因为一般来说这些存储器内部的SEU只导致单次比特翻转,这可轻易用ECC来纠正。不过,由于遍及集成电路的触发器和锁存器的空间扰乱以及由于这些分散的逻辑中的中子和粒子撞击会导致多个顺序存储电路内的分开的比特失效的事实,ECC不适合纠正这些错误。

随着处理技术的缩小,锁存器与触发器对于软错误或这些SEU的敏感性随之增加,并且确实在45nm它能表现得与SRAM的敏感性极为相似。图1显示在标称电压,锁存器对于此类SEU只比SRAM健壮20%。

随着这种装置对SEU的敏感性增加,最近提出许多技术来解决此问题。在面积、性能、功率开销以及这种附加健壮性方面通常存在权衡。

存在可解决此问题的三种主要方式。

第一,触发器/锁存器可设计成使得更难以因SEU而翻转单元。

第二,可设计检测这种软错误的装置。在这种装置中,如果数据因为SEU而损坏,则可检测到该情况并且因此可通过从其清除错误由系统来改正错误。

第三,该装置可设计成即使SEU翻转单元之一时,输出也不会改变。一般而言,这涉及在装置内增加冗余来检测与纠正错误。

第一项技术具有开销,例如重新调整大小、对节点新增容量以及新增与之相关的反馈。

第二项技术涉及对系统增加冗余,并且将存储值与冗余值比较,由此检测错误。错误检测触发器在2008年3月27日提交的共同转让的共同未决的美国申请US12/078189中描述,其完整内容由此通过引用结合。

此项技术有两个主要问题。

首先,此技术检测错误,但是并未纠正错误。因此,需要进行系统级别的复位来清除错误。这在性能与功率方面耗费极大。

第二,该技术会检测到假阳性。例如,冗余元件中发生的SEU将产生错误信号,并且无法区分真与伪错误。

本发明可解决所有这些问题。

第三项技术具有检测与纠正错误而避免需要系统级别复位的优点。

这种错误纠正技术在S.Mitra、N.Seifert、M.Zhang、Q.Shi和K.S.Kim等人的“Sequential Element Design with Built-In Soft ErrorResilience”(IEEE Transactions on VLSI Systems,Vol.14,No.12,2006年12月)中描述。

图2显示这种触发器的示例。其思想是复制主和从锁存器,并且使用C元件比较两个输出。当新数据锁存在锁存器PH2,则它也锁存在锁存器LA内。类似地,当数据锁存在锁存器PH1内,则它也锁存在锁存器LB内。换言之,锁存器LA/LB是锁存器PH2/PH1内锁存器中的实际数据的影子。C元件具有只在两个输入(O1和O2)匹配时才使新数据传播、否则保留旧数据的特性。因此,若在任一个锁存器内有软错误,则不会传播该错误并且由该保持者锁存器在输出保持先前的数据。

除了异步C元件以外,图2的设计还具有五个顺序元件(四个主从式锁存器以及保持者锁存器)。

备选的错误纠正技术是三重模块冗余方案,其中复制存储元件三次并且执行投票来输出大多数支持的数据值。这种技术在A.Drake、A.J.Kleinosowski、A.K.Martin的“A Self-Correcting Soft ErrorTolerant Flop-Flop”(第12届VLSI设计NASA会议,2005年)中描述,并且在图3中示出。Drake的方案是反馈纠正的示例,其中在设计中锁存回数据来进行纠正。

在Drake等人的方案中,在SEU的情况下,时钟信号经过修改来让大多数值回到系统中。修改时钟路径可造成其它问题,例如设置违反(set-up violation)。例如,在时钟的上升沿附近发生SEU的情况下,触发器正忙于纠正错误时可能不会取得新数据。

期望有一种可检测并且纠正SEU、同时限制例如增加面积、功率等等的附加开销的顺序存储元件。

发明内容

从一个方面来看,本发明提供用于集成电路的顺序存储电路,包括存储电路,所述存储电路包含:第一存储元件,用于在时钟信号的第一相位期间,存储由所述顺序存储电路接收的输入数据值的第一指示;第二存储元件,耦合到所述第一存储元件的输出,用于在所述时钟信号的第二相位期间存储所述输入数据值的第二指示;以及错误检测电路,用于检测所述第一和第二存储元件的任一个中的单次事件颠覆错误,其包含:两个附加存储元件,用于响应从所述时钟信号得出的脉冲信号而分别存储所述输入数据值的第三和第四指示;比较电路,用于比较所述输入数据值的所述第三和第四指示;以及进一步的比较电路,用于在所述时钟信号的第一相位期间比较所述第一指示和所述第三和第四指示的至少之一,并且用于在所述时钟信号的第二相位期间比较所述第二指示和所述第三和第四指示的至少之一;以及输出电路,用于纠正所述存储电路中任何检测到的错误,并且用于输出输出值;所述输出电路响应所述比较电路的不匹配,在所述时钟信号的第一相位期间输出所述第一指示以及在所述时钟信号的所述第二相位期间输出所述第二指示;以及所述输出电路响应所述比较电路的匹配,根据由所述进一步的比较电路执行的比较来输出值;所述输出电路响应所述时钟信号的第一相位期间所述进一步的比较电路的匹配,在所述第一时钟周期期间输出所述第一指示,以及响应不匹配,输出所述第一指示的反相值;以及所述输出电路响应所述时钟信号的第二相位期间所述进一步的比较电路的匹配,在所述时钟信号的所述第二相位期间输出所述第二指示,以及响应不匹配,输出所述第二指示的反相值。

根据本发明,可检测到发生在顺序存储电路的第一存储元件或第二存储元件中的单次事件颠覆错误,并且实时纠正而不改变设计的任何锁存器中的值。实际上,纠正只发生在最后复用器阶段,这产生前馈错误纠正系统并且避免需要将错误纠正反馈到系统中。这提供有效率的系统,其反应能快过将错误反馈给系统中并且改变锁存器内值的系统。而且,因为锁存器不需要翻转,所以功率需求较低。该系统简单利用以下事实,即如果错误存储在锁存器中之一中,则不输出其值,而是简单地输出其值的反相就可提供正确应答。因此,并不需要改变所存储的值。

因而根据本发明,发生在顺序存储电路的第一存储元件或第二存储元件中的单次事件颠覆错误可以使用两个附加存储元件以及某些比较电路来检测和纠正。

根据本发明,附加存储元件由从用来控制第一和第二存储元件的时钟信号得出的脉冲信号来驱动。特别是在这种脉冲信号发生时,附加存储元件存储由顺序存储电路所接收的输入数据值的指示。此输入数据值的指示可以是数据值本身,或可以是某些其它指示,例如数据值的反相。

然后使用比较电路形式的错误检测电路来检测任何存储元件中的单次事件颠覆错误,若检测到两个附加存储元件的任一个中有这种错误,则不进行错误纠正,因为这样的错误实际上是伪错误,其原因是这些附加存储元件是冗余元件,并且不存储输出的数据。这样,此电路能够检测伪错误并且因而不继续采取动作。

如果在第一或第二存储元件中发生错误,则在时钟信号的第一相位期间,错误检测电路可通过将它与附加存储元件的任一个中存储的值相比较,来检测第一存储元件中的单次事件颠覆错误。第一存储元件内存储的值是在时钟信号的第一相位期间输出的值,因此此时单次翻转错误的检测使当前正在输出的值能够被纠正(如果有必要的话)。在时钟信号的第二相位期间,电路通过将第二存储元件存储的值与附加存储元件任一个中的值之一进行比较,来检测第二存储元件中的错误。存储值之间的任何差异指示第二存储元件内的错误,然后在时钟周期的第二相位期间输出的这个值可以被纠正。

这样,若在存储数据的两个顺序存储元件的任一个中发生单次事件颠覆错误,则可纠正由电路输出的数据。

在某些实施例中,所述顺序存储电路包含错误检测信号产生电路,用来组合所述比较电路与该进一步的比较电路的输出,以产生要发送到所述输出电路的错误或no_error信号,其中所述比较电路包含响应所述第三和第四指示的差异来输出error_mask(错误屏蔽)信号至所述错误检测信号产生电路的电路,所述错误检测信号产生电路响应所述error_mask信号来产生所述no_error信号,所述输出电路响应所述no_error信号不纠正所述存储电路的输出,所述存储电路的所述输出包含所述时钟周期的第一相位期间的所述第一指示以及所述时钟周期的第二相位期间的所述第二指示。

若由附加存储元件输出的第三和第四指示存在差异,这指示在附加存储元件中已经发生了单次事件颠覆错误,这实际上是伪错误,因为这些元件内的数据值是不用作输出数据、而是仅用来检测第一和第二存储元件内错误的冗余值。因此,产生error_mask信号,其向输出电路指示不应对数据值输出执行纠正。应该注意,以此方式,该电路能够检测单次事件颠覆错误,但是无法检测两个这种错误发生,因为此类错误发生在附加存储元件内,使得它们无法再用于检测第一和第二存储元件内的错误。因此,如果在那也发生错误,则它无法被纠正。但是,这些软错误一般被称为单次事件颠覆错误,因为它们由于中子或阿尔法粒子撞击造成并且通常作为单次事件发生。因此,一般来说无法检测时钟周期内发生的两个错误并不是问题,因为触发器与锁存器中错误如此发生确实很少(由于它们的大布局面积)。

在某些实施例中,所述错误检测信号产生电路响应由所述进一步的比较电路所检测的所述存储电路的输出和所述第三或第四指示的输出间的差异,以及响应未接收到error_mask信号来产生所述错误信号,所述输出电路响应所述错误信号,通过将所述输出反相来纠正所述存储电路的输出。

附加存储指示的任一个的输出与输出电路所输出指示间的差异指示该值输出中的错误,并且这只要通过将其反相就可纠正。因此,仅值输出被改变并且不需改变存储元件内存储的值。

在某些实施例中,用于将数据从所述存储电路输出至所述输出电路的数据输出路径以及包含所述进一步的比较电路和用于将不匹配信号从所述进一步的比较电路输出至所述输出电路的路径的错误纠正路径都已平衡,使得响应于由于所述单次事件错误而切换值的来自所述存储电路的输出,所述输出电路在大约与所述不匹配信号的相同时间接收所述切换的值。

为使本技术有效率地工作而不在信号输出中产生小干扰,则来自进一步的比较电路的不匹配信号必须与切换的值大约同时间到达输出电路。这是因为不匹配信号是到输出电路纠正该值输出的信号。因此,若纠正该值输出的信号大约与错误同时到达输出电路,则几乎立即纠正该值并且无小干扰或极小干扰在系统内发生。若这些路径未很好平衡,则不匹配信号晚到达并且输出值切换至错误值且在稍后被纠正,由此产生小干扰,或者不匹配信号早到达并且正确值切换到不正确值,这在不正确值到达并且它本身被切换时得到纠正。这种小干扰不影响功能性,但是会导致额外的功率消耗。然而,路径的仔细设计与平衡基本上可减少这种问题。

在某些实施例中,到所述输出电路的所述比较电路输出路径短于所述进一步的比较电路至所述输出电路的所述输出路径,使得所述输出电路在所述进一步的比较电路的所述比较结果之前接收所述比较电路的所述比较结果。

此技术的其它潜在问题是在冗余元件内错误的产生,它事实上是伪错误且需要被如此检测,并且该检测在错误纠正输出电路用于纠正不存在的错误之前被发送到错误纠正输出电路。因而,至输出电路的比较电路输出路径比进一步的比较部件至输出电路的输出路径短是重要的。如果情况是输出电路在接收任何潜在伪错误信号之前接收到冗余元件内有软错误的信息,则它在伪错误到达时知道不应该执行纠正。

在某些实施例中,至所述错误检测信号产生电路的所述比较电路输出路径短于所述进一步的比较部件至所述错误检测信号产生电路的所述输出路径,使得所述进一步的电路在所述进一步的比较电路的所述比较结果之前接收所述比较电路的所述比较结果。

在某些实施例中,使用其它电路来组合比较电路与进一步的比较电路的输出,并且产生错误信号,然后发送到输出电路。若使用这种实施例,则从比较部件和进一步的比较部件到此其它电路的输出路径需要仔细被选取,使得在伪错误信号之前在此其它电路接收到错误屏蔽信号,因此实际上屏蔽伪错误信号并且不产生伪错误。若路径未正确平衡,则会有小干扰,因为伪错误将在响应error_mask信号而覆盖纠正之前导致正确值的纠正。

在某些实施例中,所述输出电路包含反相器,用于将所述存储电路输出的信号反相,所述存储电路在所述时钟周期的第一相位期间输出所述第一指示以及在所述时钟周期的第二相位期间输出所述第二指示,以及包含复用器,用于响应所述错误检测电路输出的错误检测信号而在所述输出信号或所述反相的输出信号之间进行选择。

虽然,由输出电路进行的纠正可用许多方式完成,但反相器是将存储电路输出的信号反相的简单方式,其中复用器用于在反相的输出信号和未反相的输出信号之间进行选择。这是纠正第一或第二存储元件内所发生软错误的简单面积与功率效率方式。

在某些实施例中,所述错误检测电路包含错误检测信号产生电路,用于产生所述错误检测信号以响应来自所述比较电路的匹配信号和来自所述进一步的比较电路的不匹配信号。

本发明的其它方面提供一种集成电路,其包含多个根据本发明第一方面的顺序存储电路元件,以及用于响应所述时钟信号的所述第一相位的开始而产生时钟脉冲的时钟脉冲产生器,所述时钟脉冲产生器将所述时钟脉冲供应给所述多个顺序存储电路元件。

在某些实施例中,所述集成电路还包含插入所述多个顺序存储元件之间的组合电路。

本发明还有的其它方面提供一种纠正集成电路的顺序存储电路中单次事件颠覆错误的方法,所述集成电路的所述顺序存储电路包含第一存储元件和耦合到所述第一存储元件的输出的第二存储元件,以及第三和第四存储元件,该方法包含以下步骤:在时钟信号的第一相位期间,将由所述顺序存储电路接收的输入数据值的第一指示存储在所述第一存储元件中;在所述时钟信号的第二相位期间,将所述输入数据值的第二指示存储在所述第二存储元件中;在从所述时钟信号得出的脉冲信号发生时,将所述输入数据值的分别的第三和第四指示存储在所述第三和第四存储元件中;通过以下步骤检测所述存储元件的任一个中的单次事件颠覆错误:(i)比较所述第三和第四指示并响应差异检测到所述单次事件颠覆错误在所述第三或第四存储元件中;(ii)在所述时钟信号的所述第一相位期间比较由所述第一指示所指示的所述输入数据值和所述输入值的所述第三和第四指示的至少之一,并且若有差异以及步骤(i)发现无差异,则检测到所述单次事件颠覆错误在所述第一存储元件中:以及(iii)在所述时钟信号的所述第二相位期间比较由所述第二指示所指示的所述输入数据值与所述输入值的所述第三和第四指示的至少之一,并且若有差异以及步骤(i)发现无差异,则检测到所述单次事件颠覆错误在所述第二存储元件中:以及通过以下步骤在输出值中纠正所述第一或第二存储元件中检测的单次事件颠覆错误,并输出所述输出值:在所述时钟信号的所述第一相位期间,输出所述输入值的所述第一指示,以响应所述第一存储元件中无单次事件颠覆错误的检测;或输出所述输入值的所述第一指示的反相值,以响应所述第一存储元件中的单次事件颠覆错误的检测;以及在所述时钟信号的所述第二相位期间,输出所述输入值的所述第二指示,以响应所述第二存储元件中无单次事件颠覆错误的检测;或输出所述输入值的所述第二指示的反相值,以响应所述第二存储元件中无单次事件颠覆错误的检测。

本发明的还有的其它方面提供一种顺序存储部件,其包含:存储部件,用于在时钟信号的第一相位期间将接收的数据的指示存储在第一存储元件中,以及用于在所述时钟信号的第二相位期间将所述数据的指示存储在第二存储元件中;进一步的第三和第四存储部件,用于响应从所述时钟信号得出的脉冲信号而存储所述数据的指示;错误检测部件,用于通过以下步骤检测所述存储部件中的单次事件颠覆错误:如果所述存储的值中有差异,则检测到所述单次事件颠覆错误在所述第三或第四存储部件中;并且若无差异,则:如果在所述时钟信号的所述第一相位期间,在所述存储值和所述第三和第四存储部件中的所述存储值的至少之一存在差异,则检测到所述单次事件颠覆错误在所述第一存储元件中;以及如果在所述时钟信号的所述第二相位期间,在所述存储值和所述第三和第四存储部件中的所述存储值的至少之一存在差异,则检测到所述单次事件颠覆错误在所述第二存储元件中;以及输出部件,用于在输出值中纠正发生在所述第一或第二存储元件中的所述单次事件颠覆错误,并输出所述输出值,所述输出部件包含:纠正部件,用于将所述存储部件输出的值反相,以响应所述第一或所述第二存储元件中的单次事件颠覆错误的检测,以及不反相所述值,以响应未检测到所述单次事件颠覆错误。

从下面将结合附图阅读的说明性的实施例的详细说明,将明白本发明的上述和其它目的、特征及优点。

附图说明

图1示意示出对于不同VDD在45nm的锁存器对比特单元稳定性的比率(定义为临界电荷Qcrit);

图2示出根据现有技术的错误纠正触发器设计;

图3示出根据现有技术的备选错误纠正触发器设计;

图4示意示出结合顺序存储电路、组合逻辑和管道架构的集成电路;

图5是示出根据本发明的一个实施例的顺序存储电路的布置的框图;

图6是示出图5的顺序存储电路的一个特定实施例的电路图;

图7是无错误情况下的图6的电路的操作的时序图;

图8是当软错误翻转锁存器a或锁存器b时图6的电路的操作的时序图;

图9和10示出当软错误翻转图6的冗余锁存器的任一个时的错误纠正;以及

图11是示出执行本发明实施例的方法的流程图。

具体实施方式

图4显示集成电路2,其包含在可为触发器形式的顺序边沿触发存储电路8之间延伸的管道阶段(pipeline stage)4、6。在顺序存储电路之间是组合逻辑电路10的各自影响范围(incidence),其用于接收来自一个或多个前面阶段的信号,并且产生要通过一个或多个后续阶段的信号。由顺序存储元件8所进行的信号值的捕获之间的时间期对于连续时钟周期来说,就是对于组合逻辑电路10评估其输入以便产生其输出可用的时间。本发明的实施例提供用于顺序存储电路8的新设计,其可检测并纠正由于中子或阿尔法粒子撞击在顺序存储电路上而在顺序存储电路内发生的SEU或软错误。

集成电路2还包含脉冲产生电路12,其从时钟信号clk产生脉冲,并将此脉冲传输至每个顺序存储电路8。此脉冲电路用于触发冗余锁存器中数据的保持,这将从图5和图6的说明变得更清楚。

图5显示示意示出第4图的顺序存储电路8的框图。顺序存储电路8包含存储部分50,该部分具有与从锁存器22串联的主锁存器20,主锁存器20经由时钟驱动开关31接收输入数据值D。此值D通过时钟驱动开关32传递到从锁存器22,然后继续传递到输出Q。在此实施例中,时钟驱动开关31响应时钟的上升沿,而时钟驱动开关32响应下降沿。本领域技术人员将了解,主锁存器20与从锁存器22是基于电平的装置(level based device),但是通过将它们串联地置于顺序存储电路15内,则变成边沿触发装置。特别是,主锁存器20和从锁存器22由时钟的交替相位驱动,使得在时钟的第一相位期间,主锁存器20存储数据值的第一指示,而时钟驱动开关32将存储的值输出至从锁存器22。在时钟的第一相位内,从锁存器是透明的,并且因此仅将此输入值传递通过到达输出Q。然而,在时钟的第二相位期间,主锁存器100变成透明的并且时钟驱动开关32关闭,从而将到从锁存器22的输入与主锁存器20隔离。在第二相位期间,从锁存器22变成不透明的并且存储数据值以及在输出Q提供该数据值。

在此实施例内,提供两个附加冗余存储锁存器40和42以用于软错误的检测。这些由脉冲驱动开关45来控制。虽然在此实施例中这些脉冲驱动开关显示为两个独立的开关,但本领域技术人员将了解,也可使用具有两个输出的单个开关。脉冲驱动开关45每个时钟周期接收短暂脉冲信号一次,此脉冲信号由脉冲产生电路12产生。脉冲产生电路12从时钟信号clk产生脉冲信号。在此实施例中,脉冲产生电路12在时钟信号的上升沿发生时产生脉冲,但本领域技术人员了解,响应时钟信号的下降沿也可同样很好地产生脉冲。在任一情况下,它每个时钟周期仅产生单个脉冲。虽然在第4图中将脉冲产生电路12显示作为为集成电路2上的所有顺序存储电路8产生脉冲的单个电路,但在其它实施例中,脉冲产生电路12可在顺序存储电路8内,如本图中虚线框所示。

在脉冲发生时,脉冲驱动开关45提供数据D给附加存储锁存器40和42。当脉冲结束时,锁存器40和42变成不透明的,并且存储从脉冲驱动开关45接收的数据。同样,此时关闭脉冲驱动开关,以避免附加存储锁存器40和42接收到任何新值。

顺序存储电路可认为是分成三个部分,它们由虚线框50、53和55所示。部分50是存储部分,并且包含主锁存器20和从锁存器22。部分53可看成是错误检测电路,并且包含冗余存储锁存器40和42。它还包含比较器60和65以及附加逻辑70。部分55是输出部分,如果错误检测电路53检测到错误,则其纠正存储部分50所输出的数据值,并且如果未检测到错误则输出未经纠正的值,或如果已检测到错误则输出纠正过的值。

错误检测电路53具有比较器60,其比较两个附加存储锁存器40和42中存储的值。若这些值不相等,则输出error_mask信号到错误信号产生电路70。该error_mask信号向错误信号产生电路70指示这两个附加存储锁存器之一中已发生软错误,因为它们没有存储相同值,并且因此假设主锁存器与从锁存器中存储的值是正确的。应该注意,即使在主锁存器或从锁存器的任一个中发生软错误,它也无法被纠正,因为不清楚两个附加存储锁存器当中哪一个存储正确值。因此,响应于从比较器60接收错误屏蔽信号,错误信号产生电路70输出no_error信号给输出电路55。输出电路55响应no_error信号,以经由复用器80选择存储电路50的输出,即Q。

若比较电路60未输出error_mask信号,换言之,存储在两附加存储锁存器40和42中的值相等,则可使用比较电路65检测主锁存器20或从锁存器22中的错误。比较电路65比较附加存储锁存器之一中存储的值,在此例中,附加存储锁存器40具有当前正由存储电路50输出的值。在此实施例中,其将是时钟周期的第一相位期间主锁存器20中存储的值,以及时钟周期的第二相位期间从锁存器22中存储的值。若比较电路65检测到附加存储锁存器40中存储的值与存储电路50输出的值的差异,则它产生错误信号给错误信号产生逻辑70,并且如果当前此电路未正在接收error_mask信号,则此错误信号传播至输出电路55内的复用器80。响应于此错误信号,复用器80选择存储元件50的已反相的输出。因此,在此例中,输出电路的反相值被输出,因为知道输出的当前值事实上不正确。若比较电路65发现附加存储锁存器40中存储的值等于存储电路50输出的值Q,则它产生no_error信号并且复用器80响应于此而输出Q。

图6显示图5的顺序存储电路的一个特定实施的电路图。在此电路中,时钟驱动开关31将输入数据D与主锁存器20分离,并且时钟驱动开关32将主锁存器20与从锁存器22分离。如可见的,这些时钟驱动开关设计成在时钟信号的不同相位上操作。还显示有脉冲产生电路12。在此图中,与图5内使用的相同的引用编号用于说明相似特征。因此,图5的比较电路60就是此图中的异或门60,若两个输入不相等时则该门输出1的error_mask信号,若相等时则输出0的信号。类似地,比较存储电路50的输出Q的比较电路65是异或门65,并且若两个输入相等则输出0的Q_diff,若不等则输出1。在此实施例中,错误信号产生电路70是在其输入104上具有反相器的与门。因此,若输出1的error_mask信号,则该信号作为0出现在与门上,因此产生0,也就是no_error信号。

现在将结合图7至图10的时序图来说明图6的电路的操作。

在图7中,当时钟信号上升时,脉冲产生电路12产生脉冲CPLSE。此电路可由多个顺序存储电路8共享,来降低面积开销。脉冲的宽度由反相器13的数量来控制。上升CLK信号锁存主锁存器20中的数据。脉冲CPLSE大约同时锁存两个影子锁存器40、42中的数据。一旦在CPLSE的高相位期间数据得以存储在影子锁存器中,则数据保持稳定直到CLK的下一个上升沿产生下一个脉冲。在不具任何错误的情况下,当CLK为1时,存储在影子或冗余锁存器40和42内的数据将与主锁存器内的相同,当CLK为0时,则与从锁存器内的数据相同,这从图7的时序图中可看到。

因此,在主锁存器20内于时钟的上升沿输入与捕获的数据也在两个影子锁存器40和42中捕获。一旦已锁存,锁存器40和42中的数据将不改变,直到下一个脉冲前都无任何错误,CPLSE发生在CLK的下一个上升沿。在CLK的高周期期间主锁存器20是不透明的,并且在CLK的低周期期间从锁存器22是不透明的。在CLK的两个相位内,Q值反映主锁存器20在CLK的上升沿锁存的数据。在无任何软错误的理想情况中,节点Q、Q1和Q2将具有相同值,如图7中所示,这就是该设计在没有SEU错误的情况下如何操作的。

因为Q1和Q2一致,所以error_mask信号停留在0。同样,因为Q和Q1一致,所以Q_DIFF信号和后续错误信号也停留在0。0错误信号表示SEU并未损坏系统的状态,因此复用器80将Q传播至Qout。因此,在不具任何错误的情况下,Qout遵循D,因而该提出的顺序存储电路的行为类似于传统触发器。

如果粒子撞击改变四个锁存器的任一个中存储的值,则节点Q、Q1和Q2将不同。提出的设计使用两个异或门、与门和2∶1复用器,来确定损坏的数据不会传播至输出。为了理解触发器如何纠正软错误,考虑以下单次比特错误情况。

图8显示其中主锁存器20中发生SEU的第一情况。将明白,这与软错误发生在从锁存器22中将发生的情况一致,除了图8的时序图将显示在时钟相位的低部分期间而非高相位期间发生粒子撞击以外。

从图8的时序图可看见,只有当CLK为高时,主锁存器20才是不透明的。因此在本例中,假设当时钟在高相位内,主锁存器20中发生粒子撞击。从时序图可看到,粒子撞击翻转锁存器20,如星号所标记的,并且在此点,锁存器20从1变为0,因此Q从1切换到0。Qout遵循Q并且它也转换成0。Q与Q1的差异导致Q_diff变成1。error_mask信号保持为0,因为Q1和Q2一致,这指示软错误不在冗余锁存器中之一中。因此,Q_diff的转换导致与门70输出的错误信号变成1。错误信号的高转换导致复用器选择反相器85输出的Q的反相值,Qout得以纠正。如可见到的,输出Qout在短小干扰之后复原正确值。在此有些事项要注意,小干扰的持续时间可通过平衡数据路径与错误路径来最小化或至少减少。因此,当Q翻转时,如果输出此翻转的Q所耗费的时间类似于检测错误并变更复用器的选择所耗费的时间,则它是有利的。换言之,从节点90到复用器80的输入的路径应该类似于从节点90到复用器80的选择输入的路径。

应该注意,对于当主锁存器20从0翻转为1时的情况,以及还对于当在时钟周期的低相位期间在从锁存器内发生粒子撞击时的情况,上面的分析同样保持正确。

因此,如可见到的,用于错误纠正的此方案将纠正时钟的任一相位期间主锁存器或从锁存器内发生的所有单次比特错误。应该注意,对于此电路存在易损性窗口,其在脉冲CPLSE期间发生。如果那个时间发生软错误,则此电路将无法检测它。

图9和图10显示当在冗余锁存器的任一个中发生软错误时将发生什么。在图9中,在冗余锁存器40中发生错误,并且在图10中,在冗余锁存器42中发生错误。

因为锁存器40和42是冗余锁存器,所以关键在于不会将这些锁存器内的软错误标记为真正的错误。图中再次显示为星号的粒子撞击将锁存器40或42从1翻转为0,因此Q1或Q2变更为0。因为Q1和Q2不同,所以error_mask信号转换成1。error_mask信号门控错误,因此这两种情况中的错误将被抑制为0。然而,由于路径长度的差异,因此在错误信号中可能存在小干扰。若路径是平衡的,则错误信号中的小干扰可减少、最小化或去除,并且Qout上的影响将可忽略,如图9和图10中所示。

如注意到的,错误信号中的小干扰的持续时间可通过平衡路径来最小化或完全去除。在此例中,重要的路径是error_mask路径,其应该与通过比较器65的路径平衡或优选为比通过比较器65的路径短。若锁存器40接收来自软错误的撞击,则比较器65将产生伪错误。应该注意,因为锁存器42在输出信号Q的比较中未使用,所以它无法产生伪错误或小干扰。因此,从节点100到102处的与门70的输入的路径应该比从节点100通过比较器60到104处的与门70的输入的路径更长。如果通过比较器60的路径更短,则error_mask信号在Q_diff信号到达与门70之前到达与门70,并且屏蔽掉Q_diff信号产生的任何错误。如果它不是更短的,则Q_diff信号导致从与门70产生错误信号,并且选取Q的反相输出直到error_mask信号到达并且将错误信号纠正为no_error信号,然后选择正确输出Q。

应该注意,对于当冗余锁存器从0翻转为1时的情况,以及当在时钟的低相位期间发生粒子撞击时的情况,上面的分析也有效。

图11显示说明本发明实施例的顺序存储电路的操作方法的流程图。响应于时钟转换的接收,数据存储在第一存储元件中,并且由脉冲产生电路产生脉冲。脉冲的产生触发数据存储在冗余存储元件3和4中。然后执行元件3和4中存储的数据的比较,并且如果数据不相等,则输出元件1中存储的数据。若存储在元件3和4(冗余存储元件)中的数据相同,则这指示这些元件内无软错误,并且将第一存储元件中存储的数据与元件3或4的任一个中存储的数据进行比较。如果它们不相同,则这显示元件1中已经发生软错误,并且应该反相从此元件输出的数据。如果它们相同,则这显示对于元件1中存储的数据并无软错误,并且可输出此数据本身。

接收下一个时钟转换,并且将元件1中的数据存储在元件2中。然后再次检查以查看元件3中的数据以及元件4中的数据是否仍旧相同。换言之,这些元件内是否发生软错误。如果数据不相同,则已发生软错误并且输出元件2中存储的数据。这是因为在这种情况中,在元件3或4的任一个中已经发生单次错误,因此假设元件2中未发生错误。如果数据相同,则将这些元件之一中存储的数据与元件2中存储的数据进行比较。如果它们相同,则输出元件2中存储的数据,并且如果它们不相同,这显示元件2中已经发生软错误并且输出元件2中存储的数据的反相数据。

然后再次接收时钟转换,并且将在输入接收的数据存储在元件1中,然后重复该过程。总的来说,应该注意,本发明的实施例能够纠正主锁存器与从锁存器中的单次事件颠覆错误,以及检测它们何时在冗余锁存器中发生,由此避免对伪错误进行纠正。因为这是自行纠正的顺序存储电路,所以系统在软错误事件中不需要被复位,而错误永远不会传播出该存储电路。此外,该设计忽略在冗余锁存器内发生的软错误,并且因此不检测或纠正假阳性。该设计在此顺序存储电路内检测并纠正错误,这比起在电路之外具有检测和/或纠正成本更低。

此外,使用基于脉冲的冗余锁存器可在给定时间有三个锁存器来比较和纠正错误。由于该基于脉冲的方案,所以开销小于其它的提出的现有技术。而且,该设计可轻松适合于无额外需求(例如无额外引脚)的标准设计流程。

虽然本文已经参考附图详细描述了本发明的说明性实施例,但应理解,本发明不受限于这些特定实施例,而且本领域技术人员在不背离所附权利要求所定义的本发明范围或精神的前提下可在其中实现多种变更与修改。例如,在不背离本发明范围的情况下,可进行所附从属权利要求的特征与独立权利要求的特征的各种组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号