首页> 中国专利> 一种通过逻辑设计提高芯片抗单粒子翻转能力的方法

一种通过逻辑设计提高芯片抗单粒子翻转能力的方法

摘要

一种通过逻辑设计提高芯片抗单粒子翻转能力的方法,通过对芯片的配置寄存器、有限状态机、数据寄存器和存储器采用冗余编码等逻辑设计手段,极大的提高芯片的抗单粒子翻转能力,并向系统主控CPU发出3种中断信号,使系统能够掌握芯片内部发生单粒子翻转的情况。本发明能够以较低的设计复杂度和设计时间代价,大幅度提高芯片在空间单粒子环境下的可靠性和适应性,降低芯片因单粒子翻转造成功能错误或功能中断的概率。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-12-21

    授权

    授权

  • 2016-07-06

    实质审查的生效 IPC(主分类):G06F17/50 申请日:20151225

    实质审查的生效

  • 2016-06-08

    公开

    公开

说明书

技术领域

本发明涉及一种通过逻辑设计提高芯片抗单粒子翻转能力的方法,特别是应用于空间辐射环境使用的数字集成电路芯片提高抗单粒子翻转能力的逻辑设计方法。

背景技术

与地面设备使用的集成电路器件不同,在空间飞行器上使用的集成电路芯片可能会受到宇宙空间中单个高能粒子的入射,在芯片内部产生高密度的电子空穴对,被反偏PN结收集,从而可能造成器件内部的逻辑状态发生翻转,即发生单粒子翻转。单粒子翻转会造成器件的功能错误甚至功能中断,对系统功能造成影响,因此是宇航应用的集成电路器件必须重点关注的效应之一。

随着航天电子技术的不断发展,载荷电子设备在不断向着高频率、高性能、高功能集成度、大容量存储的方向发展。为了不断提高芯片单位面积和单位功耗内集成的功能密度,不可避免的要求集成电路芯片采用特征工艺尺寸更小的工艺平台,而特征工艺尺寸的缩小则带来了新的困扰。

特征工艺尺寸的缩小带来的直接后果就是器件内部逻辑存储单元的节点电容减小,并且电源电压也因工艺需要而降低,导致逻辑存储单元翻转的临界电荷更小,电荷收集效率高。也就是说,当特征工艺尺寸不断减小时,器件会更加容易受到单粒子效应的影响,产生内部存储单元的逻辑错误翻转,给航天器的可靠运行带来隐患。

解决该问题主要有两方面的途径,一方面是在工艺设计层面上进行抗单粒子加固处理,这需要对特定工艺的熟悉掌握的前提下进行抗辐射加固标准单元库的建模和建库,完成建库后,在具备一定抗单粒子加固能力的工艺平台上实现集成电路芯片的研制。但如前所述,随着未来工艺线程的不断缩小,通过抗辐射加固工艺平台设计来提高芯片抗单粒子翻转性能都会越来越难,甚至保持前一个工艺尺寸下实现的抗单粒子翻转能力都要付出很大的代价;另外一条途径是采用三模冗余加固的方法和工具对全芯片的寄存器逻辑进行加固处理,但缺点也很明显,包括:芯片的全部寄存器数量直接变为3倍,芯片面积功耗增大较多;每一个三模寄存器共享输入,一旦输入错误则三模冗余失效;三模的三个寄存器永远同时翻转,功耗较大;无法提供对SRAM等存储器的数据保护等。

发明内容

本发明要解决的技术问题是:克服工艺设计层面实现单粒子翻转加固设计难度大、周期长的缺点,在逻辑设计阶段通过与工艺无关的一整套设计方法,以较短的设计时间和很低的设计难度,实现对配置寄存器、有限状态机、数据寄存器、存储器分别进行单粒子翻转加固,能够极大的提高芯片在空间单粒子环境下的可靠性和容错性,达到甚至超过工艺设计加固的抗单粒子翻转性能;同时通过灵活可变的冗余编码、有限状态机热备份冗余状态、影响域划分、数据箝位等多种设计方法,克服了传统三模冗余加固方法面积功耗大、三模对输入级翻转容错性低、无法保护存储器等缺点,实现芯片级甚至系统级的抗单粒子翻转性能提升。

本发明的技术解决方案是:一种通过逻辑设计提高芯片抗单粒子翻转能力的方法,包括下列步骤:

(1)为外部主控CPU增加N个中断源,N=1或N=3,在待加固芯片内部产生三个中断信号,均为单粒子翻转中断信号,当这三个单粒子翻转中断信号触发时,代表待加固芯片内部出现单粒子翻转,单粒子翻转中断信号的序号代表待加固芯片发生单粒子翻转的逻辑部件,中断信号的序号为3个,定义3类中断,1号代表配置寄存器发生单粒子翻转;2号代表有限状态机发生单粒子翻转;3号代表加固的数据寄存器发生翻转;外部主控CPU将待加固芯片内部产生的三个中断信号连接到自身增加的N个中断源上,获取待加固芯片内部发生单粒子翻转的信息,并统计单粒子翻转发生的次数;

(2)将芯片中的配置寄存器进行影响域划分,即如果待加固芯片内部的n个包含有限状态机的功能模块共享一个配置寄存器时(n>1),为每一个包含有限状态机的功能模块提供独立的m个配置寄存器(m>1),m≤n,并且这些独立的配置寄存器与共享的配置寄存器的输入为相同的配置字,这些独立的配置寄存器的输出送至对应的包含有限状态机的功能模块;

(3)配置寄存器进行步骤(2)的影响域划分之后,进行冗余编码,M定义为冗余编码扩展位宽,M为大于2的整数,冗余编码将配置寄存器中的每一个bit位都扩展为M个bit位,即将加固前的配置寄存器的每一个bit中的0和1,编码为预先设置的两个不同的二进制M位编码,并且预先设置的这两个不同的二进制M位编码的每一个相同bit位都01互斥;冗余编码前的每一个bit位原来只包含0和1两个逻辑状态,而经过冗余编码后,除了代表逻辑0和逻辑1的两个预先设置的二进制M位编码以外还增加了M个对应逻辑0的冗余编码和M个对应逻辑1的冗余编码,这些冗余编码只有当代表逻辑0和逻辑1的两个预先设置的二进制M位编码被单粒子打翻后才能进入,并且代表逻辑0和逻辑1的两个预先设置的二进制M位编码对应的冗余状态互不相同,不会发生混淆;随后在配置寄存器的输出端增加判决和刷新逻辑,即当单粒子翻转造成寄存器的输出编码不是按照预先设置的M位编码,而是冗余编码时,将不是按照预先设置的M位编码刷新为对应逻辑0或这逻辑1的M位编码,即自动刷新为单粒子翻转前的编码,同时向主控CPU发出步骤(1)定义的1号中断信号,即通知主控CPU,配置寄存器发生了一次单粒子翻转;

(4)在进行步骤(3)后,针对有限状态机进行两方面的逻辑设计:第一方面是修改有限状态机的未定义状态,在其中增加返回初始状态的状态跳转,使有限状态机的状态进入未定义状态时立即跳转为上电复位之后的状态;第二方面是采用前述步骤(3)中的冗余编码,为有限状态机的每一个已定义状态增加热备份的冗余状态,每个已定义状态的冗余状态个数为采用步骤(3)的冗余编码前的bit位宽乘以M(M为步骤(3)中定义的冗余编码扩展位宽),这些冗余状态,即已定义状态在发生单粒子翻转后的状态,与对应的已定义状态的功能完全相同;当单粒子翻转造成有限状态机的已定义状态发生变化时,会使有限状态机跳转到热备份的冗余状态进行工作,保持有限状态机的正常工作,同时向主控CPU发出步骤(1)定义的2号中断信号,即通知主控CPU,有限状态机发生了一次单粒子翻转;随后有限状态机会自动从冗余状态跳转为冗余状态对应的已定义状态;

(5)在待加固芯片的数据寄存器和/或存储器上设置数据范围箝位和数据变化量箝位;

数据范围箝位即在数据寄存器和/或数据存储器的输出上增加判决和箝位逻辑,判断数据寄存器和/或存储器中存储的数据是否超过定义的数据范围,如果数据寄存器和/或存储器中存储的数据超过数据范围,则对数据寄存器和/或存储器中存储的输出数据进行箝位;定义的数据范围包含上限和下限,下限大于0,上限小于2P-1,其中P为数据寄存器或数据存储器的位宽;如果数据寄存器和/或存储器中存储的数据大于数据范围的上限,则将输出变为数据范围的上限;反之如果数据寄存器和/或存储器中存储的数据小于数据范围的下限,则将输出变为数据范围的下限;如果数据寄存器和/或存储器中存储的数据在数据范围上下限之间,则不发生箝位,即直接输出数据寄存器和/或存储器中存储的数据;

数据变化量箝位即在数据寄存器和/或数据存储器的输出上增加判决和箝位逻辑,判断数据寄存器和/或存储器中存储的数据发生变化时,变化量是否超过定义的最大变化量,如果变化量超过定义的最大变化量,则对数据寄存器和/或存储器中存储的输出数据进行箝位;定义的最大变化量包含上限,上限小于2P-1,其中P为数据寄存器或数据存储器的位宽;如果数据寄存器和/或存储器中存储的数据发生变化时,变化量大于定义的最大变化量上限,则将输出数据修改为变化前的数据加上最大变化量上限;反之如果数据寄存器和/或存储器中存储的数据发生变化时,变化量小于定义的最大变化量上限,则不发生箝位,即直接输出发生变化后的数据寄存器和/或存储器中存储的数据;

发生数据范围箝位或数据变化量箝位后,向外部主控CPU发出步骤(1)定义的3号中断,即通知外部主控CPU数据寄存器和/或存储器发生了一次单粒子翻转。

所述步骤(1)中外部主控CPU上增加的单粒子翻转中断源个数N为3,待加固芯片内部产生的三个单粒子翻转中断依次连接在外部主控CPU的三个中断源上,此时待加固芯片上每次发生单粒子翻转时就会产生对应类型的三种单粒子翻转中断,并且外部主控CPU通过中断源来区分待加固芯片发生单粒子翻转的逻辑部件是加固过的配置寄存器、有限状态机还是数据寄存器和/或存储器,并对各自逻辑部件的单粒子翻转次数进行计数。

所述步骤(1)中外部主控CPU上增加的单粒子翻转中断源个数N为1,待加固芯片内部产生的三个单粒子翻转中断经过芯片内部的或逻辑后产生一个单独的中断连接在外部主控CPU的一个中断源上,此时待加固芯片上每次无论那个类型的逻辑部件发生单粒子翻转时都会产生同一个单粒子翻转中断,并且外部主控CPU无法通过中断源来区分待加固芯片发生单粒子翻转的逻辑部件是加固过的配置寄存器、有限状态机还是数据寄存器和/或存储器,并只能对待加固芯片内部发生的总体的单粒子翻转次数进行计数。

所述步骤(1)中的中断信号采用沿触发方式,当该中断信号产生上升沿或下降沿时触发。

所述步骤(1)中的中断信号采用电平触发方式,当该中断信号产生高电平或低电平时触发。

所述步骤(2)中的配置寄存器影响域划分时,m=n,即为所有共享同一个配置寄存器的包含有限状态机的功能模块都提供一个独立的配置寄存器。

所述步骤(2)中的配置寄存器影响域划分时,m<n,即为并非为所有共享同一个配置寄存器的包含有限状态机的功能模块都提供独立的配置寄存器。

所述步骤(3)中的M位编码为二进制M个1和二进制M个0,即将配置寄存器中的每一个bit位都扩展为M个bit位,M为大于2的整数,并按照二进制M个1和二进制M个0的编码代替加固前的一个bit中的二进制1和0的两个编码;随后在配置寄存器的输出端增加判决和刷新逻辑,即当单粒子翻转造成输出编码不是按照M个1或M个0编码时,将不是按照M个1或M个0的编码的每一编码位均刷新为编码中数量多的编码位,即编码中数量多的编码位为1,则将不是按照M个1或M个0的编码刷新为M个1,当编码中数量多的编码位为0,则将不是按照M个1或M个0的编码刷新为M个0,实现自动刷新为单粒子翻转前的编码,同时向主控CPU发出步骤(1)定义的1号中断信号,即通知主控CPU,配置寄存器发生了一次单粒子翻转。

所述步骤(3)中配置寄存器进行步骤(2)的影响域划分之后,进行冗余编码,即将配置寄存器中的每一个bit位都扩展为3个bit位,并按照二进制111和二进制000的编码代替加固前的一个bit中的二进制1和0的两个编码;随后在配置寄存器的输出端增加判决和刷新逻辑,即当单粒子翻转造成输出编码不是按照111和000编码时,当出现110或101或011时,刷新为111,当出现100或010或001时,刷新为000,实现自动刷新为单粒子翻转前的编码,同时向主控CPU发出步骤(1)定义的1号中断信号,即通知主控CPU,配置寄存器发生了一次单粒子翻转。

所述步骤(4)中有限状态机的冗余编码的拓展位宽优选为3,即为有限状态机的每一个已定义状态增加热备份的冗余状态,每个已定义状态的冗余状态个数为采用步骤(3)的冗余编码前的bit位宽乘以3,这些冗余状态,即已定义状态在发生单粒子翻转后的状态,与对应的已定义状态的功能完全相同;当单粒子翻转造成有限状态机的已定义状态发生变化时,会使有限状态机跳转到热备份的冗余状态进行工作,保持有限状态机的正常工作,同时向主控CPU发出步骤(1)定义的2号中断信号,即通知主控CPU,有限状态机发生了一次单粒子翻转;随后有限状态机会自动从冗余状态跳转为冗余状态对应的已定义状态;

所述步骤(5)中数据范围箝位的数据范围上限优选为大于2P-1-1。

本发明与现有技术相比的有益效果是:

相比与工艺单元设计加固的方法,本发明的逻辑设计方法与工艺无关,因此每当新的非加固工艺出现时,无需通过较长的设计周期来进行工艺单元设计加固,可以尽快利用新工艺特征线宽小,功能密度高的优势;而相比传统的三模冗余设计方法,本发明具备以下几项优势,一是通过配置寄存器和有限状态机的冗余编码实现了比三模冗余方法更高的系统级容错性,在外部主控CPU配置字被单粒子打翻的情况下仍然能保持正常工作;二是采用配置寄存器的影响域划分实现了三模冗余无法实现的芯片模块级的可靠性提升;三是数据寄存器和存储器都能够被数据箝位保护到;四是通过单粒子翻转中断的加入,使得外部主控CPU可以随时监控芯片的单粒子翻转情况并计数;五是灵活性极高,当工艺平台抗单粒子翻转性能较低时,可以选用较高的冗余编码拓展位宽,实现高可靠性,而当工艺平台抗单粒子翻转性能较高时,可以针对关键逻辑部件选用较高的冗余编码拓展位宽,对非关键逻辑部件选择较低的冗余编码拓展位宽或放弃加固;这五点优势都是传统的三模冗余方法所不具备的。

详细来说,本发明与现有提升芯片抗单粒子翻转能力的技术相比,有益效果体现在:

(1)全部逻辑设计方法均在逻辑设计层面实现,体现在两方面:一方面与工艺无关,因此无需忍受工艺加固设计较长的周期,只要新工艺出现就立即可以开始基于新工艺更高功能密度的平台开展芯片研制,极大的缩短了研制周期;另一方面与特定的硬件描述语言和工具无关,逻辑设计基于Verilog、VHDL、SystemVerilog甚至是网表形式,都不会影响本专利的实施,具备更高的适用性;

(2)步骤(2)中所述的配置寄存器的影响域划分,在芯片级层面缩小了单个冗余配置寄存器的影响域,即冗余的多个配置寄存器中的某一个即使被单粒子打翻,也不会造成芯片级的功能错误甚至是功能中断,与步骤(3)中的配置寄存器的冗余编码相结合,可以实现比三模冗余这种寄存器层面的冗余更高的芯片级抗单粒子翻转性能提升。三模冗余的方法中一旦配置寄存器被打翻,则整个配置寄存器的影响域包含的模块则全部受到影响进入错误的工作状态,甚至导致芯片的功能中断;

(3)步骤(3)中所述的配置寄存器的冗余编码,相比于三模冗余的方法,其冗余特性是基于编码层面而不是基于寄存器层面,因此实现了整个系统从外部主控CPU到芯片内部的抗单粒子翻转能力的全面提升,当单粒子翻转造成外部主控CPU的配置字被打翻时,冗余编码仍然能够保证芯片的正常工作不受影响;而这种特性是三模冗余无法做到的。而且,可以根据系统设计要求自省选取冗余编码的扩展位宽,实现4冗余、5冗余等更高层次的容错性;

(4)步骤(4)中所述的有限状态机的加固具备了三模冗余无法实现的两个有益效果,一个是有限状态机即使被单粒子打翻进入未定义状态时也不会锁死,能够自行跳转到复位后的初始状态;另一个是可以灵活的通过选取冗余编码的扩展位宽,实现4冗余有限状态机、5冗余有限状态机等更高层次的容错性;

(5)步骤(5)中所述的数据寄存器、存储器的数据范围箝位和数据变化量箝位,完全不同于三模冗余的设计方法,能够采用算法上的箝位来避免错误的数据输出造成系统的错误甚至失效;而采用三模冗余的方法一旦被单粒子打翻造成数据溢出,可能对系统带来灾难性的后果。

综上所述,通过本专利的逻辑设计方法,能够以相比于工艺设计加固更快捷、更高效,相比于三模冗余更可靠、更灵活的方式,实现芯片的抗单粒子翻转能力的提升。

附图说明

图1是芯片内部逻辑设计示意图和系统构成图;

图2是本发明通过逻辑设计提高芯片抗单粒子翻转能力的实施流程图;

图3是本发明通过逻辑设计提高芯片抗单粒子翻转能力的逻辑设计示意图

图4是本发明的配置寄存器的影响域划分方法对比示意图;其中图4(a)是芯片进行影响域划分前的状态;图4(b)是芯片进行影响域划分后的状态;

图5是本发明的配置寄存器冗余编码方式对比示意图;其中图5(a)是进行冗余编码前的逻辑状态及受到单粒子翻转影响时的情况,图5(b)是进行冗余编码后的逻辑状态、冗余状态及受到单粒子翻转影响时的情况;

图6是本发明的配置寄存器冗余编码硬件自动刷新流程示意图;其中图6(a)是增加硬件自动刷新前的配置寄存器工作流程图;图6(b)是增加硬件自动刷新后的配置寄存器工作流程图;

图7是本发明的配置寄存器冗余编码方式与三模冗余方式对比图;其中图7(a)是三模冗余方式在外部主控CPU发生单粒子翻转时的情况;图7(b)是冗余编码方式在外部主控CPU发生单粒子翻转时的情况;

图8是对包含未定义状态的有限状态机进行处理的方法;其中图8(a)是处理前的有限状态机状态图;图8(b)是处理后的有限状态机状态图;

图9是采用冗余编码加固的有限状态机状态图;

图10是采用数据范围箝位方式对数据寄存器进行处理;

图11是采用数据变化量箝位方式对数据寄存器进行处理;

具体实施方式

本发明的基本思路为:一种通过逻辑设计提高芯片抗单粒子翻转能力的方法,通过对芯片的配置寄存器、有限状态机、数据寄存器和存储器采用冗余编码等逻辑设计手段,极大的提高芯片的抗单粒子翻转能力,并向系统主控CPU发出3种中断信号,使系统能够掌握芯片内部发生单粒子翻转的情况。本发明能够以较低的设计复杂度和设计时间代价,大幅度提高芯片在空间单粒子环境下的可靠性和适应性,降低芯片因单粒子翻转造成功能错误或功能中断的概率。

本发明是一种通过逻辑设计提高芯片抗单粒子翻转能力的方法,方法实现的流程是基于航天应用对抗单粒子翻转能力有较高需求的集成电路芯片,图1是本发明描述的芯片内部逻辑设计示意图和系统构成图,针对芯片的不同逻辑部件采用不同的逻辑设计方法,芯片的逻辑部件包括:配置寄存器、有限状态机、数据寄存器和/或存储器;系统构成中芯片外围的设备包括外部主控CPU和外部设备。

其中配置寄存器由触发器单元实现,负责接收外部主控CPU中的配置字寄存器产生并传输给芯片的配置字,并储存在配置寄存器的触发器中;配置字用于主控CPU对芯片工作模式的控制,映射在外部主控CPU的地址空间中的特定地址;配置寄存器的位宽是由外部主控CPU的总线位宽决定,小于等于外部主控CPU的总线位宽;外部主控CPU是32位总线位宽时,配置寄存器的位宽最高为32位。配置寄存器的不同配置会引起芯片的工作模式不同,而芯片内部能够被配置寄存器中存储的不同配置字影响到工作模式的范围称之为配置寄存器的影响域。配置寄存器的影响域越大,说明配置寄存器越关键,芯片内部会有越大比例的逻辑会受到配置寄存器的影响。

例如当芯片是一个图像信号处理芯片并且配置寄存器位宽为2时,配置寄存器中存储的配置字可能是二进制00、01、10、11中的任意一个,二进制00对应图像曝光时间为1μs,二进制01表示2μs,二进制10表示3μs,二进制11表示4μs,外部主控CPU用配置字来控制图像信号处理芯片工作的曝光时间;当发生芯片的配置寄存器发生单粒子翻转,使得当前存储的配置字00翻转为配置字01时,会使芯片的曝光时间从1μs意外的变为2μs,从而使得整个芯片工作在错误的工作模式下,引起图像过度曝光,这甚至可能造成整个系统失效。

再例如当芯片是一个马达电机驱动芯片并且配置寄存器位宽为2时,配置寄存器中存储的配置字可能是二进制00、01、10、11中的任意一个,二进制00对应马达驱动方波输出的频率为1MHz,二进制01表示2MHz,二进制10表示3MHz,二进制11表示4MHz,外部主控CPU用配置字来控制马达驱动方波的输出频率从而控制马达的转速;当发生芯片的配置寄存器发生单粒子翻转,使得当前存储的配置字00翻转为配置字01时,会使芯片的马达驱动方波输出频率从1MHz提升到2MHz,会改变马达的转速,这甚至可能造成整个系统失效甚至更严重的后果。

从上述的两个例子来看,配置寄存器的抗单粒子翻转能力在单粒子环境下是非常重要的。

有限状态机也是由触发器单元实现,包含若干影响芯片工作模式的工作状态,每一个工作状态都会使芯片完成不同的功能,有限状态机根据配置寄存器中的配置字,形成不同的状态跳转方式,进而影响整个芯片的工作流程;部分状态中没有设置任何的工作模式,这类状态称之为未定义状态,否则称之为工作状态。仍然以图像信号处理芯片为例,内部包含一个有限状态机,该有限状态机用2位二进制编码产生了4个状态,其中包含三个工作状态,00、01和10分别代表了图像缓存、图像处理和图像传输,因为11未明确定义,没有设置任何的工作模式,因此11属于未定义状态。根据芯片的配置字,该状态机存在两种跳转方式,跳转方式1是图像处理跳转,即跳转顺序为图像缓存、图像处理、图像传输;跳转方式2是图像旁路跳转,跳转顺序为图像缓存、图像传输;第二种状态跳转方式与第一种不同,图像不经处理直接传输给主控CPU。

当单粒子翻转影响该有限状态机时可能造成两种后果。一种是当状态机处于跳转方式1时,有限状态机的状态从00状态被单粒子直接打翻到10状态,相当于本应工作在图像处理跳转的状态机却未对图像进行处理,发生工作状态的错误;另一种是当有限状态机处于任何一种跳转方式的10状态时,被单粒子打翻为11状态,即未定义状态,造成状态机锁死,芯片直接无法继续工作,直到系统被断电重启或复位。可见单粒子翻转对有限状态机的影响也会直接关系到芯片是否能正常工作。

数据寄存器和数据存储器都在芯片中负责数据的存储,前者由寄存器单元实现,而后者由SRAM等片上存储器实现。例如在图像信号处理芯片中,数据寄存器和/或存储器负责存储外部设备发送来的实时图像采集原始数据、图像处理过程中产生的过程数据、图像处理完成后的图像数据等。如果数据寄存器和/或存储器中存储的数据被单粒子打翻,可能会对主控CPU读取的图像造成影响,直接影响系统的功能和性能;

再例如在一个闭环温度控制系统中,芯片上的数据寄存器和/或存储器中存储的是外部采集到的温度数据。如果这些数据被单粒子打翻,造成主控CPU认为系统温度异常,那么闭环温度的过补偿甚至可能造成整个闭环振荡等严重后果。

外部设备通常是传感器或驱动器,例如前面例子中的向芯片提供图像数据的图像传感器、被芯片驱动的马达电机、向芯片提供温度数据的温度传感器等,通过采集量和控制量与芯片进行数据和控制的交互;

外部主控CPU是系统的核心部件,总体控制协调系统各部件按照软件预定的模式进行工作,是待加固芯片配置字的来源,控制芯片以何种方式进行工作,同时外部主控CPU需要掌握芯片的运行状态。外部主控CPU掌握芯片运行状态可以通过查询或中断的方式进行,查询是外部主控CPU按照固定的周期读取芯片运行状态,这种方式由于比较占用CPU资源,已经逐渐被淘汰;而中断方式则是仅当芯片需要外部主控CPU介入时才向外部主控CPU发送特定形式的信号,例如信号产生触发沿(上升、下降)或电平(高电平、低电平)发送给外部主控CPU,外部主控CPU此时才根据软件设置进行相应的操作,其他时间外部主控CPU的工作不受到任何影响。中断的实施方式通常是芯片的输出信号通过信号线连接到外部主控CPU的输入信号,例如高电平触发的数据溢出中断,是每当芯片内部存储的数据到达一定程度时,芯片的中断输出信号产生一定时间的高电平,此时外部主控CPU的中断输入信号接收到高电平信号,得知芯片中的数据溢出,从而采取读取数据等相应操作。

图2是本发明通过逻辑设计提高芯片抗单粒子翻转能力的实施流程图,一共分为5个步骤,在图中用虚线上下分开并分别标注,分别是对外部主控CPU增加单粒子翻转中断和对芯片增加单粒子翻转中断、对配置寄存器进行影响域划分、对配置寄存器进行冗余编码、对有限状态机进行冗余编码和未定义状态处理、以及对数据寄存器和/或存储器进行数据范围和数据变化量箝位。

图3是本发明通过逻辑设计提高芯片抗单粒子翻转能力的逻辑设计示意图,图中的序号表示针对不同逻辑部件采用的不同逻辑设计方法,其中:1、为外部主控CPU增加单粒子翻转中断源,并在芯片内部产生3种类型的单粒子翻转中断;2、对芯片的配置寄存器进行影响域划分;3、外部主控CPU的配置字寄存器和芯片的配置寄存器统一采用冗余编码加固,实现编码层次的冗余加固;4、对有限状态机的状态编码实现冗余编码加固,并增加未定义状态的跳转;5、对数据寄存器和/或存储器进行数据范围箝位和数据变化量箝位,从而保护外部主控CPU和芯片之间、芯片和外部设备之间的数据交互。

五个步骤的具体实施方式如下:

(1)第一个步骤是为外部主控CPU增加N个中断源,N=1或N=3,在待加固芯片内部产生三个中断信号,均为单粒子翻转中断信号,当这三个单粒子翻转中断信号触发时,代表待加固芯片内部出现单粒子翻转,单粒子翻转中断信号的序号代表待加固芯片发生单粒子翻转的逻辑部件,中断信号的序号为3个,定义3类中断,1号代表配置寄存器发生单粒子翻转;2号代表有限状态机发生单粒子翻转;3号代表加固的数据寄存器发生翻转;外部主控CPU将待加固芯片内部产生的三个中断信号连接到自身增加的N个中断源上,获取待加固芯片内部发生单粒子翻转的信息,并统计单粒子翻转发生的次数;

外部主控CPU增加的单粒子翻转中断源的个数N的值,需要考虑外部主控CPU的中断源是否足够,在中断源足够的前提下优选N=3,因为此时外部主控CPU可以分别单独监控芯片内部三种类型的逻辑部件发生单粒子翻转的情况以及具体发生单粒子翻转的次数,并进行相应的不同处理。例如外部主控CPU可以设置为,当发生配置寄存器或有限状态机的单粒子翻转时,即中断信号的序号为1或2时,外部主控CPU向芯片发送软件复位,避免芯片继续按照错误的工作状态继续工作;而当发生数据寄存器或存储器的单粒子翻转时,CPU选择忽略当前帧的数据,但是系统继续工作,不进行任何复位操作;反之,外部主控CPU可以忽略配置寄存器的单粒子翻转,但是对有限状态机和数据寄存器和/或存储器的单粒子翻转执行复位操作。

外部主控CPU的中断源不足的情况下,可以选择N=1,此时外部主控CPU可以监控芯片内部的逻辑部件上发生了单粒子翻转,但是无法确认是具体哪一类的逻辑部件发生了单粒子翻转,因此主控CPU的对应措施只能统一进行。实施时,将芯片内部产生的3个单粒子翻转中断信号采用组合逻辑实现或逻辑功能,即任一逻辑部件产生的任一序号的单粒子翻转中断,都会向外部主控CPU发送相同的单粒子翻转中断。

(2)第二个步骤需要将芯片中的配置寄存器进行影响域划分,即如果待加固芯片内部的n个包含有限状态机的功能模块共享一个配置寄存器时(n>1),为每一个包含有限状态机的功能模块提供独立的m个配置寄存器(m>1),m≤n,并且这些独立的配置寄存器与共享的配置寄存器的输入为相同的配置字,这些独立的配置寄存器的输出送至对应的包含有限状态机的功能模块;

可以看出,影响域的划分完全保证加固前后电路功能的等价性,但是在加固前,共享的一个配置寄存器会影响到n个功能模块,而加固后这n个功能模块的配置字来自于m个独立的但是功能相同的配置寄存器。显然加固以后的每一个独立配置寄存器的影响域都减小了m倍。当单粒子翻转发生在配置寄存器中时,加固前的所有n个功能模块都会受到影响;而加固后n个功能模块中只有一部分受到影响,不会导致所有的模块都功能失效。

图4是本发明的配置寄存器的影响域划分方法对比示意图;其中图4(a)是芯片进行影响域划分前的状态;图4(b)是芯片进行影响域划分后的状态。

如图4(a)所示,例如芯片进行配置寄存器的影响域划分前内部包含4个功能模块,这4个功能模块共享一个配置寄存器,每一个功能模块中的有限状态机的运行状态都取决于该配置寄存器存储的配置字。此时由于没有进行影响域划分,该配置寄存器的影响域为如图4(a)中所示的阴影部分包含的全部4个功能模块,因此当配置寄存器发生单粒子翻转引起存储的配置字发生意外变化时,所有的4个模块均接收到了错误的配置字,因此均产生了错误的输出,很有可能导致整个系统停止运行甚至主控CPU程序出现问题,造成较为严重的后果。

如图4(b)所示,采用n=4,m=4的影响域划分方式,即为4个包含有限状态机的功能模块均单独提供一个独立的配置寄存器,每一个包含有限状态机的功能模块中的状态机的运行状态取决于各自对应的独立配置寄存器中存储的配置字,并且互不干扰。由于这4个独立的配置寄存器与影响域划分前的共享配置寄存器连接到相同的配置字输入,因此功能和影响域划分前等价。但是这4个独立的配置寄存器的影响域如图4(b)中的阴影部分所示,均减小为1个包含有限状态机的模块。当独立配置寄存器2发生单粒子翻转时,导致其中存储的配置字发生意外变化,仅有独立配置寄存器2对应的功能模块2接收到了错误的配置字,功能模块2产生错误的输出,但是功能模块1、3、4均仍在正常工作,此时并没有造成整个芯片失效,因此CPU仍然可以通过识别单粒子翻转中断的方式采取软件复位等相应措施进行处理。

例如图4(a)和图4(b)中的4个包含独立有限状态机的功能模块是通信管理芯片的四路通信接口处理模块,其中功能模块1、2对应的数据通道互相校验和备份,功能模块3、4对应的数据通道互相校验和备份。在采用影响域划分前,即图4(a)中的情况下,4个通信接口处理模块采用同一个共享的配置寄存器,当该配置寄存器发生单粒子翻转时,4路通信接口处理模块都接收到了错误的配置,导致4路通信接口均按照相同的错误配置进行数据通信,此时校验和备份都失去了作用,整个系统工作出现错误。而在进行了影响域划分后,即图4(b)中的情况下,4个通信接口处理模块分别采用了1个独立的配置寄存器,当独立配置寄存器2受到单粒子翻转影响,为通信接口处理模块2提供了错误的配置字时,仅仅会造成数据通道2的通信产生错误,而1、2通道之间互相的校验可以定位通信数据的错误,系统会定位和发现该情况,不会造成整个系统工作出现错误。

需要注意的是,影响域划分的方法能够在更高的设计层次上提高抵抗单粒子翻转的能力,会对芯片级的抗单粒子翻转能力起到非常明显的提升作用,这是三模冗余这种寄存器层面的加固方法完全无法实现的。

(3)配置寄存器进行步骤(2)的影响域划分之后,进行冗余编码,M定义为冗余编码扩展位宽,M为大于2的整数,冗余编码将配置寄存器中的每一个bit位都扩展为M个bit位,即将加固前的配置寄存器的每一个bit中的0和1,编码为预先设置的两个不同的二进制M位编码,并且预先设置的这两个不同的二进制M位编码的每一个相同bit位都01互斥;冗余编码前的每一个bit位原来只包含0和1两个逻辑状态,而经过冗余编码后,除了代表逻辑0和逻辑1的两个预先设置的二进制M位编码以外还增加了M个对应逻辑0的冗余编码和M个对应逻辑1的冗余编码,这些冗余编码只有当代表逻辑0和逻辑1的两个预先设置的二进制M位编码被单粒子打翻后才能进入,并且代表逻辑0和逻辑1的两个预先设置的二进制M位编码对应的冗余状态互不相同,不会发生混淆;

图5是本发明的配置寄存器冗余编码方式对比示意图;其中图5(a)是进行冗余编码前的逻辑状态及受到单粒子翻转影响时的情况,图5(b)是进行冗余编码后的逻辑状态、冗余状态及受到单粒子翻转影响时的情况。

如图5(a)所示,例如加固前的配置寄存器包含2个bit位,即用二进制00、01、10、11来表示4个状态。当单粒子翻转造成高位的bit位从1翻转为0时,会造成配置寄存器定义的状态发生错误,从状态3变为了状态1。此时配置寄存器对单粒子翻转完全没有抵抗能力,一旦发生单粒子翻转必然造成功能错误。

而冗余编码的实现就是把这2个bit位,每一个都扩展为预先设置的2个不同的二进制M位编码,例如当M=3时,即2个bit位,每一个都扩展为3位的预先设置的编码,整体来说,就是把原来用2个bit位实现的4个状态,改为由6个bit位实现的4个状态。假如进行预先设置的冗余编码时,采用111代表逻辑1,采用000代表逻辑0(代表逻辑1的冗余编码与代表逻辑0的冗余编码的每一个bit位都01互斥),那么冗余编码前的每一个bit位都包含了逻辑0和逻辑1两种状态,而冗余编码后,每一个bit位扩展为3bit,并且二进制111和二进制000分别代表逻辑1和逻辑0状态,如图5(b)所示,可以看出在进行冗余编码后,采用6bit的寄存器来表示4个状态,即000000代表状态1(即冗余编码前的00),000111代表状态2(即冗余编码前的01),111000代表状态3(即冗余编码前的10),111111代表状态4(即冗余编码前的11)。并且,每一个预先设置的状态都增加了6个冗余状态,这6个冗余状态必然是预先设置的冗余编码状态被单粒子打翻后才能进入的状态,而且和其他所有预先设置的编码状态及其对应的冗余状态均不会混淆。例如111000(状态3)的6个冗余状态分别是每一个寄存器被打翻后的状态,111001、111010、111100、110000、101000、011000,而且这6个状态均不会和状态1、2、4的任何一个预先设置的编码状态及其冗余状态发生混淆。例如图5(b)中,状态3中的bit2位被单粒子打翻,从111000变为了111100,从预先设置的冗余编码状态变为冗余状态,但是不会和其他任何编码发生混淆,整个芯片仍然按照状态3的状态进行工作。从上面的这个例子可以明显看出,进行了M=3的冗余编码后,任何一个预先设置的M位冗余编码的任一个bit位被单粒子打翻后,会进入其编码对应的冗余状态,不会和其他任何一个预先设置的M位编码状态及其冗余状态相混淆,这也是冗余编码提高寄存器单粒子翻转能力的原因。

随后在配置寄存器的输出端增加判决和刷新逻辑,即当单粒子翻转造成寄存器的输出编码不是按照预先设置的M位编码,而是冗余编码时,将不是按照预先设置的M位编码刷新为对应逻辑0或这逻辑1的M位编码,即自动刷新为单粒子翻转前的编码,同时向主控CPU发出步骤(1)定义的1号中断信号,即通知主控CPU,配置寄存器发生了一次单粒子翻转;图6是本发明的配置寄存器冗余编码硬件自动刷新流程示意图;其中图6(a)是增加硬件自动刷新前的配置寄存器工作流程图;图6(b)是增加硬件自动刷新后的配置寄存器工作流程图;从图6(a)可以看出,在配置寄存器输出端增加判决和刷新逻辑前,配置寄存器的工作流程为判断系统是否更新配置字,如果更新则载入更新的配置字,否则保持原值;而从图6(b)中可以看出,在配置寄存器输出端增加判决和刷新逻辑后,配置寄存器会先判断系统是否更新配置字,如果更新则载入更新的配置字,否则再判断当前寄存器中存储的是否是默认配置字,即属于预先设置的冗余编码配置状态,如果是则保持原值,否则说明受到了单粒子翻转的影响,当前配置字的编码对应冗余状态,因此立即刷新为该冗余状态对应的默认配置字,并且向外部主控CPU发送1号单粒子翻转中断信号。

例如状态1对应的预先设置的M位编码为000000,当单粒子翻转造成寄存器的编码不是000000而是001000时,自动刷新为该冗余编码对应的单粒子翻转前的预先设置的编码000000,从而避免单粒子翻转累积造成混淆。因为虽然通过编码可以免疫1bit的单粒子翻转,但是如果被打翻的状态长期保持,则可能在下一次单粒子翻转时导致状态错误和失效,假如000000被单粒子打翻为001000,没有进行刷新,随后又被单粒子打翻为101000,则变为状态3对应的冗余编码,会直接造成逻辑错误。

综上所述,通过M位冗余编码的加固处理后,配置寄存器中的状态处于预先设置的M位冗余编码,并且任意一个bit位被单粒子打翻后都会进入一个已经预先定义好的冗余状态,并且和其他任何预先设置的冗余编码状态及其冗余状态都不会发生混淆,因此单粒子翻转不会造成逻辑混淆,从而直接免疫单位时间内1位的单粒子翻转(而这正是单粒子翻转效应的前提假设),通过自动判决和刷新逻辑,则可以避免单粒子翻转后的状态长期积累和存储造成下一次单粒子翻转不免疫。冗余编码和判决刷新极大的提高了芯片受到单粒子翻转影响时的可靠性和容错性,基本可以避免单粒子翻转造成的功能错误或功能中断;

值得注意的是,本专利提出的编码方式和三模冗余虽然都是基于冗余特性来实现单粒子翻转的容错性,但是本质上存在不同。三模冗余是基于寄存器单元本身实现三冗余的备份,而本专利则是强制将配置寄存器的编码方式改变,这两种冗余方式在外部主控CPU的配置字寄存器发生单粒子翻转时则存在本质不同。当外部主控CPU受到单粒子影响使得外部输入给芯片配置寄存器的输入值发生错误时,三模冗余毫无办法,只能接收错误的配置字;而对于冗余编码方式来说,则仍然可以纠正该单粒子翻转造成的错误配置,实现正确的功能,并向CPU发出中断。这两者存在本质不同。而配置寄存器的位宽小于外部主控CPU总线位宽是非常常见的情况,通常会在高位补0,造成了寄存器资源的浪费。因此本专利提出的编码冗余加固相比于三模冗余加固对于系统并没有造成额外的资源浪费,却大大提高了整个系统抗单粒子翻转的能力。

图7是本发明的配置寄存器冗余编码方式与三模冗余方式对比图;其中图7(a)是三模冗余方式在外部主控CPU发生单粒子翻转时的情况;图7(b)是冗余编码方式在外部主控CPU发生单粒子翻转时的情况。如图7(a)所示,三模冗余的局限性在于,当一个采用8位总线位宽的外部主控CPU向三模冗余加固的芯片发送10(即配置字为状态3的状态)时,外部主控CPU的配置字寄存器受到单粒子翻转的影响,被打翻为11,此时芯片内部虽然有三模冗余加固,但是因为是按bit位加固,所以三模冗余的三个寄存器都变为了错误的“1”,最终将错误的状态4送入内部;而如图7(b)所示,本专利提出的冗余编码方式则可以解决这类问题,一个采用8位总线位宽的外部主控CPU向采用冗余编码加固的芯片发送状态3,但是因为采用了6bit的冗余编码,单粒子虽然将外部主控CPU配置字寄存器的最低位打翻,变为了111001,但是仍然能够正确的将正确的配置字状态3送入内部。

(4)在进行步骤(3)后,针对有限状态机进行两方面的逻辑设计:第一个方面是修改有限状态机的未定义状态,在其中增加返回初始状态的状态跳转,使有限状态机的状态进入未定义状态时立即跳转为上电复位之后的状态;

图8是对包含未定义状态的有限状态机进行处理的方法;其中图8(a)是处理前的有限状态机状态图;图8(b)是处理后的有限状态机状态图;如图8(a)所示,例如用2位寄存器实现的包含3个状态的有限状态机,存在一个未定义的状态,即2进制11。当状态10或者01被单粒子打翻时,可能进入11状态(单粒子翻转造成的状态跳转在图8中用虚线箭头表示)。而如果该未定义状态没有任何跳转的话,必然导致状态机锁死,再也无法脱离11状态,并且不执行任何功能,整个芯片必须重新上电或复位才能重新开始工作。因此在状态11中增加跳转到上电复位后的初始状态的跳转,如图8(b)所示,从而使得有限状态机被单粒子翻转打翻意外进入未定义状态时,不会锁死,而是跳转到初始状态,并向系统外部主控CPU发出单粒子翻转中断信号,使外部主控CPU提前采取应对措施。

第二个方面是采用前述步骤(3)中的冗余编码,为有限状态机的每一个已定义状态增加热备份的冗余状态,每个已定义状态的冗余状态个数为采用步骤(3)的冗余编码前的bit位宽乘以M(M为步骤(3)中定义的冗余编码扩展位宽),这些冗余状态,即已定义状态在发生单粒子翻转后的状态,与对应的已定义状态的功能完全相同;当单粒子翻转造成有限状态机的已定义状态发生变化时,会使有限状态机跳转到热备份的冗余状态进行工作,保持有限状态机的正常工作,同时向主控CPU发出步骤(1)定义的2号中断信号,即通知主控CPU,有限状态机发生了一次单粒子翻转;随后有限状态机会自动从冗余状态跳转为冗余状态对应的已定义状态;

芯片上的有限状态机一旦发生错误跳转可能造成芯片工作在错误的状态下,甚至造成系统错误或崩溃,此时需要针对有限状态机进行冗余编码,编码方式类似于前述配置寄存器的冗余编码。图9是采用冗余编码加固的有限状态机状态图,如图9所示,仍然以包含00(状态1)、01(状态2)、10(状态3)三个有效状态的状态机为例,进行冗余编码后,每一个状态机的状态都包含6个热备份状态,被单粒子打翻后状态机跳转到热备份的冗余状态,并且每一个热备份的状态中都会执行和单粒子打翻前对应的状态完全一致的功能、操作和跳转,因此发生单粒子翻转时完全不对功能造成任何影响,并且能跳转回默认状态。

(5)在芯片的数据寄存器和/或存储器上设置数据范围箝位和数据变化量箝位;

数据范围箝位即在数据寄存器和/或数据存储器的输出上增加判决和箝位逻辑,判断数据寄存器和/或存储器中存储的数据是否超过定义的数据范围,如果数据寄存器和/或存储器中存储的数据超过数据范围,则对数据寄存器和/或存储器中存储的输出数据进行箝位;定义的数据范围包含上限和下限,下限大于0,上限小于2P-1,其中P为数据寄存器或数据存储器的位宽;如果数据寄存器和/或存储器中存储的数据大于数据范围的上限,则将输出变为数据范围的上限;反之如果数据寄存器和/或存储器中存储的数据小于数据范围的下限,则将输出变为数据范围的下限;如果数据寄存器和/或存储器中存储的数据在数据范围上下限之间,则不发生箝位,即直接输出数据寄存器和/或存储器中存储的数据;

假如某温度测量芯片负责在系统中测量某温度变量,8bit温度数据寄存器从系统外部设备提供的采集量中提取温度数据并传输给外部主控CPU。8bit的寄存器定义的无符号数可以实现0~255的数据范围,但是在该系统应用中,采集量的温度数据的数据上限230,即数据范围上限为230,小于255。因此在芯片内部增加数据范围箝位,芯片将温度数据输出到外部主控CPU之前进行判决和箝位,如果温度数据大于230,必然是寄存器受到单粒子翻转效应的影响,意外翻转为230以上的数值。因此将温度数据寄存器输出值箝位在230,避免对系统产生不良影响。图10是采用数据范围箝位方式对温度数据寄存器进行处理的示意图,如图10所示(a)和(b),第四个系统周期和第六个系统周期,寄存器输出为250和254,可以判断是温度数据寄存器受到了单粒子翻转的影响,因此在输出给外部主控CPU前进行箝位,将数据箝位在230。假如不进行箝位,错误的将大于230的温度数据发送给外部主控CPU,则可能使得外部主控CPU采取错误的温度补偿行为,例如导致外部温控设备的过度补偿等,甚至可能导致系统的温度产生振荡;

数据变化量箝位即在数据寄存器和/或数据存储器的输出上增加判决和箝位逻辑,判断数据寄存器和/或存储器中存储的数据发生变化时,变化量是否超过定义的最大变化量,如果变化量超过定义的最大变化量,则对数据寄存器和/或存储器中存储的输出数据进行箝位;定义的最大变化量包含上限,上限小于2P-1,其中P为数据寄存器或数据存储器的位宽;如果数据寄存器和/或存储器中存储的数据发生变化时,变化量大于定义的最大变化量上限,则将输出数据修改为变化前的数据加上最大变化量上限;反之如果数据寄存器和/或存储器中存储的数据发生变化时,变化量小于定义的最大变化量上限,则不发生箝位,即直接输出发生变化后的数据寄存器和/或存储器中存储的数据;

仍然以前述的温度控制系统为例,假如芯片采集的温度数据变化量存在上限,例如上限是10,这代表每次温度数据发生变化时,变化前后的温度数据差值不超过10。图11(a)和图11(b)是采用数据变化量箝位方式对数据寄存器进行处理,如图11所示,在进行数据变化量箝位前,第4个周期温度数据寄存器值为132,第5个周期温度数据寄存器值为150,变化量达到了18,超过了数据变化量的上限,因此可以判断是温度数据寄存器受到单粒子翻转效应的影响,将第5个周期温度数据寄存器值输出的温度数据修改为变化前的132加上最大变化量上限10,即142,避免输出对外部设备造成影响。

发生数据范围箝位或数据变化量箝位后,向外部主控CPU发出步骤(1)定义的3号中断,即通知外部主控CPU数据寄存器和/或存储器发生了一次单粒子翻转。

本发明未详细说明部分属本领域技术人员公知常识。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号