一种使可部分配置的fpga芯片系统具有高可靠性的方法

文档序号:6489367阅读:209来源:国知局
一种使可部分配置的fpga芯片系统具有高可靠性的方法
【专利摘要】本发明公开了一种使可部分配置的FPGA芯片系统具有高可靠性的方法,包括:读取设计输入文件;对该设计输入文件进行综合;利用调度算法并结合冗余的思想对FPGA芯片中每个功能模块的空闲进行调度分配,使FPGA芯片中的每个功能模块有足够的空闲时间;将逻辑单元映射到逻辑区块;对映射后的设计进行布局布线;根据包含调度信息的布局布线后的结果生成码流文件;将生成的码流文件下载到FPGA芯片;以及FPGA芯片在正常工作的同时自动地对不同的功能模块进行不断重新配置。本发明解决了FPGA逻辑模块发生位翻转错误导致系统无法正常工作的问题,克服了三模冗余的资源消耗大的缺点,在不影响芯片正常工作的情况下提高了芯片的可靠性。
【专利说明】—种使可部分配置的FPGA芯片系统具有高可靠性的方法
【技术领域】
[0001]本发明涉及现场可编程门阵列(FPGA)和电子设计自动化【技术领域】,特别涉及到一种使可部分配置的FPGA芯片系统在空间辐射效应影响下具有高可靠性的方法。
【背景技术】
[0002]FPGA即现场可编程逻辑门阵列,具有开发周期短、成本低、灵活性强等优点,目前已经在航天领域得到广泛的应用。然而太空中存在大量的辐射电子、高能质子等高能粒子,这些粒子打到芯片上会产生单粒子翻转、总剂量效应、单粒子锁定等效应,给FPGA芯片的可靠性带来了严重的威胁。
[0003]随着FPGA工艺技术的发展,集成度越来越高,考虑功率带来的影响,引入低电压,但这使得发生空间辐射响应的阈值越来越低,发生故障的概率越来越大。如何使FPGA芯片在空间辐射效应影响下仍具有高可靠性,将越来越成为FPGA软硬件设计的难点和重点。
[0004]目前已有一些防范措施,如三模冗余、纠错电路(Error DetectionAndCorrection, EDAC)和定期重新配置FPGA等。其中,三模冗余采用三个相同的单元并联,采用表决器输出最终的数据或信号,具有容错效果较好的优点,同时也具有资源消耗大的缺点。纠错电路是对各个模块关键信号实时监控,并将检测到的错误信号及时纠正,具有较好的容错效果,但是也有设计复杂、实现难度大等缺点。定期重新配置FPGA可以清除积累的错误,具有实现简单的优点,但是其不能在FPGA芯片正常工作的情况下进行。

【发明内容】

[0005](一 )要解决的技术问题
[0006]有鉴于此,本发明针现有可靠性方案资源消耗大、实现难度大等缺点,提出了一种使可部分配置的FPGA芯片系统具有高可靠性的方法。
[0007]( 二 )技术方案
[0008]为达到上述目的,本发明提供了一种使可部分配置的FPGA芯片系统具有高可靠性的方法,该方法包括:读取设计输入文件;对该设计输入文件进行综合;利用调度算法并结合冗余的思想对FPGA芯片中每个功能模块的空闲进行调度分配,使FPGA芯片中的每个功能模块有足够的空闲时间;将逻辑单元映射到逻辑区块;对映射后的设计进行布局布线;根据包含调度信息的布局布线后的结果生成码流文件;将生成的码流文件下载到FPGA芯片;以及FPGA芯片在正常工作的同时自动地对不同的功能模块进行不断重新配置。
[0009]上述方案中,所述的FPGA芯片支持可部分配置。
[0010]上述方案中,所述设计输入文件包括Verilog描述的设计文件和FPGA硬件约束文件。所述对设计输入文件进行综合,包括:对Verilog描述的设计文件进行词法、语法和语义的检查;将Verilog描述的设计文件转换为基本的门级网表,并对该基本的门级网表进行优化;将优化后的该基本的门级网表结合FPGA硬件约束文件,打包映射成为FPGA内部的基本逻辑单元LUT。[0011]上述方案中,所述利用调度算法并结合冗余的思想对FPGA芯片中每个功能模块的空闲进行调度分配,使FPGA芯片中的每个功能模块有足够的空闲时间,包括:利用调度(scheduling)算法分配FPGA芯片中各个功能模块的工作时间以及足够的空闲时间Λ t ;对于调度分配空闲时间At不足的模块采用冗余的方法,保证每个模块有足够的空闲时间。
[0012]上述方案中,所述将逻辑单元映射到逻辑区块,包括:将基本的逻辑单元打包映射到FPGA的逻辑区块(logic block, LB);将同一功能模块的逻辑单元优先打包到同一逻辑区块;记录每个逻辑区块空闲的时间信息。
[0013]上述方案中,所述对映射后的设计进行布局布线,包括:布局将同一功能模块的逻辑区块优先放在FPGA内部相邻的位置,便于布线和重新配置,保留对每个逻辑区块空闲的时间信息。
[0014]上述方案中,所述根据包含调度信息的布局布线后的结果生成码流文件的步骤中,是以布局布线的结果为输入,考虑调度的时间信息生成码流文件。
[0015]上述方案中,所述将生成的码流文件下载到FPGA芯片的步骤中,是将生成的码流文件下载到FPGA芯片中,对FPGA芯片进行首次配置。
[0016]上述方案中,所述FPGA芯片在正常工作的同时自动地对不同的功能模块进行不断重新配置的步骤中,是使配置好的FPGA芯片在正常工作的情况下对不同的模块进行不断重新配置,保证了 FPGA芯片逻辑电路的可靠性。
[0017](三)有益效果
[0018]1、本发明提供的这种使可部分配置的FPGA芯片系统具有高可靠性的方法,借助FPGAEDA工具流程,在高级综合阶段利用调度算法,对不同模块的时序进行分配调度,保证每个模块分别在一段时间段(高于某个固定值)内空闲,在该时间段内对该模块进行隔离、重新配置;依次对所有逻辑模块和RAM block进行重新配置。
[0019]2、本发明提供的这种使可部分配置的FPGA芯片系统具有高可靠性的方法,解决了 FPGA逻辑模块发生位翻转错误导致系统无法正常工作的问题,能对发生翻转的逻辑块和RAM block及时进行纠正;这样既克服了三模冗余的资源消耗大的缺点,同时也克服了EDAC设计复杂的缺点,同时在不影响芯片正常工作的情况下提高了芯片的可靠性。
【专利附图】

【附图说明】
[0020]图1是本发明提供的使可部分配置的FPGA芯片系统具有高可靠性的方法流程图;
[0021]图2是依照本发明实施例的使可部分配置的FPGA芯片系统具有高可靠性的方法流程图;
[0022]图3是图2中FPGA综合阶段正常调度效果示意图;
[0023]图4是图2中本发明针对FPGA综合调度阶段做出一步调整以后的效果示意图;
[0024]图5是图2中本发明针对FPGA综合调度阶段调整以后BI的效果示意图;
[0025]图6是图2中本发明针对FPGA综合调度阶段调整以后Bx的效果示意图;
[0026]图7是图2中本发明针对FPGA综合调度阶段选定一个logic cell进行重新配置的不意图;
[0027]图8是图2中本发明针对FPGA综合调度阶段对选定的logic cell进行隔离的示意图;
[0028]图9是图2中本发明针对FPGA综合调度阶段选定的logic cell进行配置使能打开的示意图;
[0029]图10是图2中本发明针对FPGA综合调度阶段选定的logic cell进行配置的示意图;
[0030]图11是图2中本发明针对FPGA综合调度阶段选定的logic cell进行配置使能关闭的不意图;
[0031]图12是图2中本发明针对FPGA综合调度阶段选定的logic cell进行配置完成后取消对其的隔离后正常工作的示意图。
[0032]图13是图2中本发明针对FPGA综合调度阶段选定的logic cell进行冗余实现的示意图。
【具体实施方式】
[0033]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0034]本发明提出一种基于可部分配置的FPGA芯片系统的高可靠实现方法,在不影响芯片正常工作的情况下对FPGA芯片进行重复的部分配置,来消除积累的逻辑错误,具有资源消耗小的特点。
[0035]如图1所示,图1是本发明提供的使可部分配置的FPGA芯片系统具有高可靠性的方法流程图,FPGA芯片支持可部分配置,该方法包括以下步骤:
[0036]步骤101:读取设计输入文件;该设计输入文件包括Verilog描述的设计文件和FPGA硬件约束文件。
[0037]步骤102:对该设计输入文件进行综合;具体包括:对Verilog描述的设计文件进行词法、语法和语义的检查;将Verilog描述的设计文件转换为基本的门级网表,并对该基本的门级网表进行优化;将优化后的该基本的门级网表结合FPGA硬件约束文件,打包映射成为FPGA内部的基本逻辑单元LUT。
[0038]步骤103:利用调度算法并结合冗余的思想对FPGA芯片中每个功能模块的空闲进行调度分配,使FPGA芯片中的每个功能模块有足够的空闲时间;具体包括:利用调度(scheduling)算法分配FPGA芯片中各个功能模块的工作时间以及足够的空闲时间At ;对于调度分配空闲时间At不足的模块采用冗余的方法,保证每个模块有足够的空闲时间。
[0039]步骤104:将逻辑单元映射到逻辑区块;具体包括:将基本的逻辑单元打包映射到FPGA的逻辑区块(logic block, LB);将同一功能模块的逻辑单元优先打包到同一逻辑区块;记录每个逻辑区块空闲的时间信息。
[0040]步骤105:对映射后的设计进行布局布线;具体包括:布局将同一功能模块的逻辑区块优先放在FPGA内部相邻的位置,便于布线和重新配置。
[0041]步骤106:根据包含调度信息的布局布线后的结果生成码流文件;具体是以布局布线的结果为输入,考虑调度的时间信息生成码流文件。
[0042]步骤107:将生成的码流文件下载到FPGA芯片;具体是将生成的码流文件下载到FPGA芯片中,对FPGA芯片进行首次配置。[0043]步骤108 =FPGA芯片在正常工作的同时自动地对不同的功能模块进行不断重新配置;具体是配置好的FPGA芯片在正常工作的情况下对不同的模块进行重新配置,保证了FPGA芯片逻辑电路的可靠性。
[0044]FPGAEDA流程自上而下依次包括:综合(Synthesis)、映射(Mapping)、布局(Place)、布线(Route)、码流生成(Bit Gen)和下载到芯片,功能是将HDL描述的设计文件进行转换、优化,最终下载到芯片对芯片进行配置,如图2所示。这几个部分是紧密连接在一起的,HDL设计文件经过综合转换为门级网表;映射将门级网表映射到FPGA内部资源;布局布线是对映射后的网标资源在FPGA内部进行位置分配,形成一个完整的设计;码流生成将整个设计生成码流文件,用来配置FPGA芯片;下载到FPGA的过程也就是配置FPGA的过程;配置完成之后整个系统才能正常工作。
[0045]由于实际调度算法的缺陷,有些功能模块可能达不到理想的效果。因此我们要借助少量冗余对闲置的模块进行重配置,对这些处理不了的模块用冗余进行实现,就有足够的时间对其进行重新配置。这样就能保证每一个模块有足够的空闲时间对其进行重新配置。
[0046]考虑到抗辐射芯片的指标要求10_9/位*天,而对于目前规模较大的FPGA芯片的逻辑模块和RAM block的位数量级约为IO8位,这样如果我们能够对芯片每天进行一次重新配置,就能在很大程度上提高系统的可靠性。而该方案能够实现每秒对整个芯片进行几次重新配置。因此该方案能在很大程度上提高系统的可靠性。
[0047]如图2所示,图2是依照本发明实施例的使可部分配置的FPGA芯片系统具有高可靠性的方法流程图,该方法包括:
[0048]步骤S1、读取Verilog设计文件,并对该文件进行综合。其具体过程包括:
[0049](I)按照正常综合的步骤,对输入HDL文件进行词法语法解析、确立、优化、工艺映射;
[0050](2)在综合的过程中借助调度算法,对不同的功能模块进行调度;
[0051]本发明的核心部分是调度的算法,正常综合调度的结果如图3所示,不同的模块会在不同的时间工作,也会有不同的时间段空闲。调度算法可以对不同的功能模块分别进行调度调整,可以把每个功能模块的部分空闲时间集中在一起,如图4所示为BI进行一步调度的结果,把BI模块两个空闲时间集中在一起,对电路功能不产生影响。以此下去,如图5所示,可以使BI空闲时间达到或者大于一定值Λ Tbi,这样就可以在时间T内可以完成对BI的隔离、重新配置、取消隔离的过程,不影响电路的正常工作,同时记录BI空闲时间的开始时间ΤΒ1,以及空闲时间长度ΛΤΒ1。其中ATbi应满足一定的条件,ATbi大于或者等于5+(BI的逻辑位数/32);配置单元的数据位宽为32位,同时可以为32为的逻辑单元进行配置,如图8——图12所示,还包含隔离、使能开、使能关、取消隔离四个时钟周期,所以1-32位的数据配置只需要5个时钟周期,33-64位的数据则只需要再多一个时钟周期。
[0052]同理,如图6所示,对于任意功能模块Bx进行调度,保证Bx在某个大于或者等于ATbx的时间段不工作,这样在这个时间段就可以对Bx进行隔离、重新配置、取消隔离的过程,同样Λ Tbx满足大于等于5+ (Bx的逻辑位数/32)。
[0053]依次下去,保证对每个功能模块完成重新配置。
[0054](3)对调度无法完成的功能模块,借助冗余进行实现,以完成对这些功能模块的调度。
[0055]由于调度算法不完善,可能会存在某些功能模块Bn无法完成以上的调度,无法完成对这些功能模块的重新配置。在本发明中借助冗余的思想,如图13所示,在对Bn进行配置之前,将其功能用新配置好的闲置的冗余模块实现,然后再对Bn进行隔离配置,最后取消冗余模块。这样就可以在正常工作的情况下对Bn进行重配置,且冗余模块基本不会带来系统可靠性降低的问题。冗余量的最大值取决于无法调度的功能模块中位数最高的功能模块。
[0056](4)生成.edf 文件。
[0057]步骤S2、如图2所示,对SI所生成的.edf文件进行映射、布局、布线,同时保留记录每个模块的调度时间信息。
[0058]映射是将工艺无关的逻辑单元映射到芯片内部结构中的硬件模块LBdogicblock)。考虑到优化及重新配置的问题,优先把同一功能模块的逻辑单元映射到芯片上的同一 LB,这样既方便重新配置的过程,又使同一功能模块内部连线较短延时较小,达到了优化的目的。
[0059]对映射后的网表进行布局、布线,在这几个过程中保留每个模块的调度信息。布局过程优先考虑将同一功能模块的LB资源放入FPGA硬件资源相邻的位置,以减小同一功能模块内部的连线长度,对重新配置过程中的地址寻址和数据传输提供便利,达到优化的目的。
[0060]最终输出.r网表文件。
[0061]步骤S3、码流生成。如图2所示,以S2步骤生成的.r文件为输入,根据布局布线后的附带综合调度信息的结果,生成码流文件(.bit网表文件-和.edf、.r类似,是同一设计.V文件不同阶段的不同格式描述);并将.bit网表文件下载到FPGA芯片中,使FPGA芯片正常工作。
[0062]步骤S1-S3,是FPGA EDA工具的流程,将HDL描述的设计文件进行转换,优化,生成对FPGA配置的文件.bit,并对FPGA芯片进行配置。只有对FPGA芯片进行配置之后,FPGA芯片才能正常工作。其中.V、.edf、.r、.bit为同一设计文件在不同阶段不同格式的对等描述。
[0063]步骤S4,经过S1_S3,FPGA电路系统进入正常工作状态。该步骤不需要任何动作,FPGA芯片在正常工作的同时会自动地对FPGA进行重复配置。这样就在正常工作的同时消除积累的错误,提闻体统的可罪性。
[0064]重新配置的过程如图7所以,以一个逻辑单元为例,选定要重新配置的逻辑单元,保证在重新配置的这个时间段内该单元不会工作,且不会对系统产生不良影响。
[0065]如图8所示,重新配置的第一步,对要重新配置的单元进行隔离,断开与周围的联系,保证在配置的过程当中不会对其他的单元产生影响。
[0066]如图9所示,第二步,打开该单元的配置使能信号,为重新配置做好准备。
[0067]如图10所示,第三步,对该单元进行重新配置。一个Logic Slice包含两个LUT4,每个LUT4由16位的RAM单元,每个Slice包含32位的RAM单元。而配置数据总线是32位的,所以要完成对一个Slice的重新配置配置数据只需要一个时钟周期;对于一个LB来说,包含两个1gicslice,共64位的配置单元,因此完成对一个LB的数据配置需要两个时钟周期;对于一个功能模块来说配置数据所需要的时间约为:位数/32或者位数/32+1。
[0068]如图11所示,第四步,已经配置完毕,关掉配置使能端,防止其他的信号对该逻辑配置单元产生错误的影响。
[0069]如图12所示,第五步,将已配置完成的逻辑单元重新连接,保证其正常的工作。
[0070]如图8、9、10、11、12所示,对一个Slice进行一次重新配置只需要5个时钟周期,对一个LB重新配置一次只需要6个时钟周期。
[0071]由于调度算法不完善,可能会存在某些功能模块Bn无法完成以上的调度,无法完成对这些功能模块的重新配置。在本发明中借助冗余的思想,如图13所示,在对Bn进行配置之前,将其功能用新配置好的闲置的冗余模块实现,然后再对Bn进行隔离配置,最后取消冗余模块。这样就可以在正常工作的情况下对Bn进行重配置,且冗余模块基本不会带来系统可靠性降低的问题。冗余量的最大值取决于无法调度的功能模块中位数最高的功能模块。
[0072]因此本发明在保证FPGA芯片系统正常工作的同时,对FPGA芯片进行重新配置,在很大程度上提高了芯片的可靠性。
[0073]以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种使可部分配置的FPGA芯片系统具有高可靠性的方法,其特征在于,该方法包括: 读取设计输入文件; 对该设计输入文件进行综合; 利用调度算法并结合冗余的思想对FPGA芯片中每个功能模块的空闲进行调度分配,使FPGA芯片中的每个功能模块有足够的空闲时间; 将逻辑单元映射到逻辑区块; 对映射后的设计进行布局布线; 根据包含调度信息的布局布线后的结果生成码流文件; 将生成的码流文件下载到FPGA芯片;以及 FPGA芯片在正常工作的同时自动地对不同的功能模块进行不断重新配置。
2.根据权利要求1所述的使可部分配置的FPGA芯片系统具有高可靠性的方法,其特征在于,所述的FPGA芯片支持可部分配置。
3.根据权利要求1所述的使可部分配置的FPGA芯片系统具有高可靠性的方法,其特征在于,所述设计输入文件包括Verilog描述的设计文件和FPGA硬件约束文件。
4.根据权利要求3所述的使可部分配置的FPGA芯片系统具有高可靠性的方法,其特征在于,所述对设计输入文件进行综合,包括: 对Verilog描述的设计文件进行词法、语法和语义的检查; 将Verilog描述的设计文件转换为基本的门级网表,并对该基本的门级网表进行优化; 将优化后的该基本的门级网表结合FPGA硬件约束文件,打包映射成为FPGA内部的基本逻辑单元LUT。
5.根据权利要求1或4所述的使可部分配置的FPGA芯片系统具有高可靠性的方法,其特征在于,所述利用调度算法并结合冗余的思想对FPGA芯片中每个功能模块的空闲进行调度分配,使FPGA芯片中的每个功能模块有足够的空闲时间,包括: 利用调度(scheduling)算法分配FPGA芯片中各个功能模块的工作时间以及足够的空闲时间At ; 对于调度分配空闲时间At不足的模块采用冗余的方法,保证每个模块有足够的空闲时间。
6.根据权利要求1所述的使可部分配置的FPGA芯片系统具有高可靠性的方法,其特征在于,所述将逻辑单元映射到逻辑区块,包括: 将基本的逻辑单元打包映射到FPGA的逻辑区块(logic block, LB); 将同一功能模块的逻辑单元优先打包到同一逻辑区块; 记录每个逻辑区块空闲的时间信息。
7.根据权利要求1所述的使可部分配置的FPGA芯片系统具有高可靠性的方法,其特征在于,所述对映射后的设计进行布局布线,包括: 布局将同一功能模块的逻辑区块优先放在FPGA内部相邻的位置,便于布线和重新配置,保留对每个逻辑区块空闲的时间信息。
8.根据权利要求1所述的使可部分配置的FPGA芯片系统具有高可靠性的方法,其特征在于,所述根据包含调度信息的布局布线后的结果生成码流文件的步骤中,是以布局布线的结果为输入,考虑调度的时间信息生成码流文件。
9.根据权利要求1所述的使可部分配置的FPGA芯片系统具有高可靠性的方法,其特征在于,所述将生成的码流文件下载到FPGA芯片的步骤中,是将生成的码流文件下载到FPGA芯片中,对FPGA芯片进行首次配置。
10.根据权利要求1所述的使可部分配置的FPGA芯片系统具有高可靠性的方法,其特征在于,所述FPGA芯片在正常工作的同时自动地对不同的功能模块进行不断重新配置的步骤中,是使配置好的FPGA芯片在正常工作的情况下对不同的模块进行重新配置,保证了FPGA芯片逻辑电路的可靠性。
【文档编号】G06F9/445GK103699399SQ201210369283
【公开日】2014年4月2日 申请日期:2012年9月27日 优先权日:2012年9月27日
【发明者】刘贵宅, 于芳, 郭旭峰, 李艳 申请人:中国科学院微电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1