本发明涉及一种fpga软错误容错方法,具体涉及一种基于布尔可满足性的sram型fpga软错误容错方法。
背景技术:
随着超大规模集成电路(vlsi)技术的发展,制造工艺已从深亚微米工艺时代进入纳米工艺时代,国际半导体技术蓝图报告预测2020年vlsi特征尺寸减小到5nm,将导致现场可编程门阵列(fpga)的噪声容限日益减少,对高能粒子辐射和噪声干扰愈发敏感,软错误率(ser)呈指数增长。研究表明,因软错误引发的故障已经成为fpga功能失效的重要原因,fpga器件的可靠性成为继性能和功耗之后制约fpga产业进一步发展的关键因素。因此,增强fpga器件的软错误容错能力是当前学术界和工业界亟待解决的问题。
本发明涉及的静态随机存取存储器(sram)型fpga,采用sram单元存储可配置资源的配置字流,能够以更小的芯片面积容纳更多的配置字数据。然而,控制着sram型fpga逻辑资源和布线资源的配置字约占sram单元的95%~99%,极易受到高能粒子辐射和电路内部噪声干扰,被异常地充电或放电,引发电路内部的状态错误,最终导致电路功能的失效。
sram型fpga器件对软错误的影响十分敏感,不仅fpga逻辑资源配置字的软错误会改变其电路的逻辑功能,甚至fpga布线资源配置字的软错误还会改变其电路的结构,导致fpga功能失效,直到下一次对其刷新配置时才能够消除配置字软错误造成的严重影响。因此,研究适用于静态随机存取存储器(sram)型fpga的软错误容错方法是当前学术界和工业界亟待解决的问题,该问题的解决将有效地降低软错误引发的fpga功能失效概率,增强fpga的软错误容错能力,从而有效地提高fpga器件的可靠性,促进fpga产业的迅速发展。
为解决上述问题,本发明sram型fpga软错误容错方法,针对逻辑资源无关配置字、逻辑资源闲置配置字和布线资源互连配置字,以耗费较低的容错代价来增强fpga的软错误容错能力。
一、本发明涉及的逻辑资源无关配置字:现有mcnc测试电路集中无关配置字总量分布的统计结果,查找表(lut)中15%~40%的配置字都具备无关配置字的特性,表明利用无关配置字来逻辑屏蔽软错误具有很大的优化空间。本发明通过重新配置lut中具有无关配置字特性的配置位,尽可能地增加等同配置字对的数量,使得lut在错误输入的情况下仍然可以产生预期的输出,最大程度地实现逻辑屏蔽软错误的效果。
二、本发明涉及的逻辑资源闲置配置字:fpga受到逻辑综合软件的局限,lut及内部的进位链、加法器等资源仅有20%能够同时得到利用。lut中一个空闲的输入就意味着一半配置字处于闲置状态,使得lut很少也很难被全部利用。本发明针对大量闲置的配置字,基于原地分解策略寻找最优的逻辑等价分解方案,并结合原地复制策略最大程度地优化逻辑屏蔽软错误能力。
三、本发明涉及的布线资源互连配置字:fpga结构模型主要由可配置逻辑单元(clb)、可配置连接开关盒(cbox)和可配置交换开关盒(sbox)组成,其中clb的管脚通过cbox和四周布线通道中的布线线轨相连,相邻布线通道中的布线线轨则通过sbox相连。cbox和sbox通常由可配置的多路选择器(mux)组成,其中任何一个互连配置字都有可能因软错误发生状态改变,进而改变fpga电路的结构,导致fpga功能失效。本发明充分利用lut逻辑极性可配置的特性,最大程度地屏蔽布线资源上发生的互连配置字软错误,从而增强布线资源的软错误容错能力。
技术实现要素:
本发明涉及的层次式fpga布局布线方法,是针对sram型fpga逻辑资源无关配置字、闲置配置字和布线资源互连配置字的特征,利用fpga电路中存在的隐式冗余,通过对原电路重新进行逻辑综合,即确保电路的等价逻辑转换的同时,力图采用最小的面积、功耗和性能的开销,减缓fpga配置字软错误,降低软错误对fpga系统功能的影响。
本发明的目的在于针对已有技术存在的不足,提供一种基于布尔可满足性的sram型fpga软错误容错方法,增强fpga芯片的容错能力、降低容错成本、提高fpga器件的可靠性。为达到上述目的,本发明的构思如下。
本发明涉及的sram型fpga逻辑资源无关配置字的软错误容错:本发明通过将其转化成为基于布尔可满足性的无关配置字原地重配置,尽可能地增加等同配置字对的数量,以增强lut对上游电路的逻辑屏蔽软错误能力。首先,对每个lut结点的软错误敏感度进行非递增顺序排序,并按此序遍历各结点。然后对每一个lut结点,建立以它为汇点的扇入锥形,并对锥形中的lut进行基于布尔可满足性的原地重配置,在保证原有电路的逻辑功能和拓扑结构的同时,最大程度地增加该扇入锥形中等同配置字对的数量,从而最小化软错误在其扇入锥形中的传播。
本发明涉及的sram型fpga逻辑资源闲置配置字的软错误容错:本发明通过将其转化成为基于布尔可满足性的原地逻辑等价分解,尽可能地寻找更少配置字的等价逻辑实现,并基于原地分解和复制策略相结合的方式,最大程度地优化逻辑屏蔽软错误的能力。首先,对所有lut结点的软错误敏感度进行非递增顺序排序,并按此序遍历各结点。然后分析每个lut结点,如果其闲置配置字能够容纳原逻辑的副本,则采取原地复制策略屏蔽配置字软错误的传播;否则,采取基于布尔可满足性的原地逻辑等价分解策略,在保证原有电路的逻辑功能和拓扑结构的同时,寻找最优的逻辑等价分解方案,最大程度地增加该lut中闲置配置字的数量。继而采取原地复制策略复制等价逻辑、构造会聚逻辑,以屏蔽配置字软错误的传播。
本发明涉及的sram型fpga布线资源互连配置字的软错误容错:本发明通过将其转化成为基于布尔可满足性的原地逻辑极性反转,尽可能地减少布线资源互连配置字的软错误敏感度总和,最大程度地屏蔽布线资源上发生的互连配置字软错误。首先,对每个布线资源互连配置字构建伪扇入lut组,包括互连配置字正常情况下选择的lut和发生软错误后选择的lut。然后依据“lut逻辑极性反转下的互连配置字敏感度局部依赖于其伪扇入lut组”,即敏感度局部依赖定理,求解布线资源互连配置字的软错误敏感度总和极小优化问题,得到lut逻辑极性的配置优化方案。进而,对每个lut进行基于布尔可满足性的真值表原地转换,反转所需的lut逻辑极性,在保证原有电路的逻辑功能和拓扑结构的同时,增强布线资源的软错误容错能力,降低fpga功能失效概率。
根据上述的发明构思,本发明的技术方案是这样实现的:一种基于布尔可满足性的sram型fpga软错误容错方法,其特征在于,具体步骤如下。
步骤1,用硬件描述语言描述该fpga设计,生成fpga设计的硬件描述语言文件。
步骤2,借助xilinx公司硬件设计套装ise的综合工具xst,输入fpga设计的硬件描述语言文件,生成fpga综合后的ngc网表文件。
步骤3,借助xilinx公司硬件设计套装ise的转译工具ngdbuild,输入ngc网表文件和ucf用户约束文件,生成完成fpga转译后的ngd网表文件。
步骤4,借助xilinx公司硬件设计套装ise的映射工具map,输入ngd网表文件,生成fpga映射后的ncd二进制电路网表文件和pcf物理约束文件。
步骤5,借助xilinx公司硬件设计套装ise的布局布线工具par,输入fpga映射后的ncd二进制电路网表文件和pcf物理约束文件,生成fpga布局布线后的ncd二进制电路网表文件。
步骤6,借助xilinx公司硬件设计套装ise的布局布线后仿真工具netgen,输入pcf物理约束文件和fpga布局布线后的ncd二进制电路网表文件,生成用来进行仿真的fpga布局布线后的v网表文件和fpga布局布线后的sdf时延文件。
步骤7,借助xilinx公司硬件设计套装ise的网表转换工具xdl,输入fpga布局布线后的ncd二进制电路网表文件,生成fpga布局布线后的xdl网表文件。
步骤8,借助mentor公司hdl硬件语言仿真套装modelsim的仿真工具vsim,输入用来进行仿真的testbench测试床文件、fpga布局布线后的v网表文件和fpga布局布线后的sdf时延文件,生成fpga布局布线后的vcd仿真波形数据文件。
步骤9,借助xilinx公司硬件设计套装ise的网表转换工具xdl,通过report功能参数在xilinx的fpga芯片数据库中,生成相应fpga型号的xdlrc芯片网表描述文件。
步骤10,启动基于布尔可满足性的fpga软错误容错程序,输入相应fpga型号的xdlrc芯片网表描述文件、fpga布局布线后的xdl网表文件、fpga布局布线后的vcd仿真结果文件,输出具备fpga软错误容错能力的xdl网表文件。
步骤11,借助xilinx公司硬件设计套装ise的网表转换工具xdl,输入具备fpga软错误容错能力的xdl网表文件,生成具备fpga软错误容错能力的ncd二进制电路网表文件。
步骤12,借助xilinx公司硬件设计套装ise的生成配置流工具bitgen,输入具备fpga软错误容错能力的ncd二进制电路网表文件,生成具备fpga软错误容错能力的bit配置流文件。
上述的步骤10中,所述的基于布尔可满足性的fpga软错误容错程序的步骤如下。
步骤10.1,读取xdlrc芯片网表描述文件,进行词法分析、语法分析、语义分析、中间代码生成和抽取fpga芯片的逻辑资源可配置字和布线资源可配置字。
步骤10.2,读取xdl网表文件,进行词法分析、语法分析、语义分析、中间代码生成和抽取fpga设计布局布线后电路实现的逻辑配置和配置互联信息。
步骤10.3,读取vcd仿真波形数据文件,进行词法分析、语法分析、语义分析、中间代码生成和抽取fpga布局布线后的仿真波形数据。
步骤10.4,基于fpga设计布局布线后电路实现的逻辑配置和配置互联信息,以及fpga芯片的逻辑资源可配置字和布线资源可配置字,结合fpga布局布线后的仿真波形数据,计算每个lut结点的软错误敏感度。
步骤10.5,基于布尔可满足性原地重配置fpga设计的逻辑资源无关配置字。
步骤10.6,基于布尔可满足性原地重配置fpga设计的逻辑资源闲置配置字。
步骤10.7,基于布尔可满足性原地重配置fpga设计的布线资源互连配置字。
步骤10.8,通过修改fpga配置字流的逻辑资源无关配置字、逻辑资源闲置配置字和布线资源互连配置字的0→1或1→0位翻转,输出具备fpga软错误容错能力的xdl网表文件。
上述的步骤10.1中,所述的抽取xdlrc芯片网表描述文件的fpga芯片的逻辑资源可配置字和布线资源可配置字的步骤如下。
步骤10.1.1,xdlrc芯片信息描述文件的词法分析,从左到右一个个读入xdlrc芯片网表描述文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词。
步骤10.1.2,xdlrc芯片信息描述文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据芯片信息描述文件的语法规则,确定整个字符流是否构成一个语法上正确的结构描述文件。
步骤10.1.3,xdlrc芯片信息描述文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息。
步骤10.1.4,xdlrc芯片信息描述文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示。
步骤10.1.5,xdlrc芯片信息描述文件的可配置字抽取,基于内部中间格式生成xdlrc芯片网表描述文件对应fpga型号芯片包含的tile、primitive、wire和pip资源的坐标、名称,以及资源之间的互连结构信息,分析fpga结构元素中所包含的可编程开关及其配置字,抽取fpga芯片的逻辑资源可配置字和布线资源可配置字。
上述的步骤10.2中,所述的抽取xdl网表文件的fpga设计电路实现的逻辑配置和配置互联信息的步骤如下。
步骤10.2.1,xdl网表文件的词法分析,从左到右一个个读入xdl网表文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词。
步骤10.2.2,xdl网表文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据网表文件的语法规则,确定整个字符流是否构成一个语法上正确的结构描述文件。
步骤10.2.3,xdl网表文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息。
步骤10.2.4,xdl网表文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示。
步骤10.2.5,xdl网表文件的电路基本信息和布局布线信息抽取,基于内部中间格式生成xdl网表文件对应fpga设计布局布线后包含的design、inst、net模块,抽取fpga设计电路实现的逻辑配置和配置互联信息。
上述的步骤10.3中,所述的抽取vcd仿真波形数据文件的fpga布局布线后的仿真波形数据的步骤如下。
步骤10.3.1,vcd仿真波形数据文件的词法分析,从左到右一个个读入vcd仿真波形数据文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词。
步骤10.3.2,vcd仿真波形数据文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据仿真波形数据文件的语法规则,确定整个字符流是否构成一个语法上正确的结构描述文件。
步骤10.3.3,vcd仿真波形数据文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息。
步骤10.3.4,vcd仿真波形数据文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示。
步骤10.3.5,vcd仿真波形数据文件的仿真波形数据抽取,基于内部中间格式生成因时间的增加信号变化的值信息,抽取fpga布局布线后的仿真波形数据。
上述的步骤10.5中,所述的基于布尔可满足性原地重配置fpga设计的逻辑资源无关配置字的步骤如下。
步骤10.5.1,对每个lut结点的软错误敏感度进行非递增顺序排序。
步骤10.5.2,按非递增顺序排序遍历各结点,对每个lut结点建立以它为汇点的扇入锥形。
步骤10.5.3,对扇入锥形中的lut进行基于布尔可满足性的原地重配置,在保证原有电路的逻辑功能和拓扑结构,最大程度地增加该扇入锥形中的lut等同配置字对数量。
上述的步骤10.6中,所述的基于布尔可满足性原地重配置fpga设计的逻辑资源闲置配置字的步骤如下。
步骤10.6.1,对每个lut结点的软错误敏感度进行非递增顺序排序。
步骤10.6.2,按非递增顺序排序遍历各结点,分析每个lut结点,如果每个lut结点的闲置配置字能够容纳原逻辑的副本,采取原地复制策略屏蔽配置字软错误的传播。
步骤10.6.3,按非递增顺序排序遍历各结点,分析每个lut结点,如果每个lut结点的闲置配置字不能容纳原逻辑的副本,则采取基于布尔可满足性的原地逻辑等价分解策略,在保证原有电路的逻辑功能和拓扑结构的同时,寻找逻辑等价分解方案最大程度地增加该lut中闲置配置字的数量,进而采取原地复制策略复制等价逻辑,构造会聚逻辑以屏蔽配置字软错误的传播。
上述的步骤10.7中,所述的基于布尔可满足性原地重配置fpga设计的布线资源互连配置字的步骤如下。
步骤10.7.1,对每个布线资源互连配置字构建伪扇入lut组,包括互连配置字正常情况下选择的lut和发生软错误后选择的lut。
步骤10.7.2,依据lut逻辑极性反转下的互连配置字敏感度局部依赖于其伪扇入lut组的敏感度局部依赖定理,求解布线资源互连配置字的软错误敏感度总和极小优化问题,得到lut逻辑极性的配置优化方案。
步骤10.7.3,对每个lut进行基于布尔可满足性的真值表原地转换,反转相应的lut逻辑极性,在保证原有电路的逻辑功能和拓扑结构,增强布线资源的软错误容错能力。
本发明与现有技术相比较,具有如下显而易见的突出实质性特点和显著优点。
本发明涉及的sram型fpga逻辑资源无关配置字的软错误容错:fpga器件的逻辑资源无关配置字在正确无错误的情况下,可以被任意地配置而不增加任何额外的开销。本发明针对lut中大量的无关配置字,借助fpga逻辑资源配置字的软错误敏感度量化手段,通过基于布尔可满足性的逻辑电路等价原地重配置,实现逻辑资源无关配置字的等同配置字对数量的极大化,有效地增强了逻辑资源屏蔽软错误的能力。
本发明涉及的sram型fpga逻辑资源闲置配置字的软错误容错:fpga器件的逻辑资源闲置配置字因处于闲置状态,可以被任意地配置而不增加任何额外的开销。本发明针对lut中众多闲置的配置字,通过基于布尔可满足性的逻辑电路等价原地分解,在保证原有电路的逻辑功能和拓扑结构的同时,最大程度地增加逻辑资源闲置配置字的数量,进而原地复制等价逻辑并借助会聚逻辑屏蔽配置字软错误的传播。
本发明涉及的sram型fpga布线资源互连配置字的软错误容错:fpga器件的lut输入和输出极性,可以被任意地反转而不增加任何额外的开销。本发明针对布线资源的互连配置字,借助fpga软错误敏感度的量化评价,实现布线资源互连配置字的软错误敏感度总和极小化,进而通过基于布尔可满足性的逻辑电路等价原地极性反转,反转所需的lut逻辑极性以屏蔽软错误,有效地增强了布线资源的软错误容错能力。
附图说明
通过以下对本发明基于布尔可满足性的sram型fpga软错误容错方法的实例结合其附图的描述,可以进一步理解本发明的目的、具体结构特征和优点。
图1是本发明基于布尔可满足性的sram型fpga软错误容错方法的流程图。
图2是本发明基于布尔可满足性的fpga软错误容错程序的流程图。
图3是本发明抽取xdlrc芯片网表描述文件的fpga芯片的逻辑资源可配置字和布线资源可配置字的流程图。
图4是本发明抽取xdl网表文件的fpga设计电路实现的逻辑配置和配置互联信息的流程图。
图5是本发明抽取vcd仿真波形数据文件的fpga布局布线后的仿真波形数据的流程图。
图6是本发明基于布尔可满足性原地重配置fpga设计的逻辑资源无关配置字的流程图。
图7是本发明基于布尔可满足性原地重配置fpga设计的逻辑资源闲置配置字的流程图。
图8是本发明基于布尔可满足性原地重配置fpga设计的布线资源互连配置字的流程图。
图9是本发明基于布尔可满足性原地重配置逻辑资源无关配置字以屏蔽无关配置字软错误的实例。
图10是本发明采取原地复制策略原地重配置逻辑资源闲置配置字以屏蔽闲置配置字软错误的实例。
图11是本发明采取原地分解和复制策略原地重配置逻辑资源闲置配置字以屏蔽闲置配置字软错误的实例。
图12是本发明采取lut逻辑极性强制反转策略原地重配置布线资源互连配置字以降低互连配置字软错误的实例。
具体实施方式
为了能够更清楚地理解本发明基于布尔可满足性的sram型fpga软错误容错方法的技术内容,特举以下实例详细说明。
本实施例的基于布尔可满足性的sram型fpga软错误容错方法的流程图如图1所示,步骤如下。
a01,用硬件描述语言描述该fpga设计,生成fpga设计的硬件描述语言文件。
a02,借助xilinx公司硬件设计套装ise的综合工具xst,输入fpga设计的硬件描述语言文件,生成fpga综合后的ngc网表文件。
a03,借助xilinx公司硬件设计套装ise的转译工具ngdbuild,输入ngc网表文件和ucf用户约束文件,生成完成fpga转译后的ngd网表文件。
a04,借助xilinx公司硬件设计套装ise的映射工具map,输入ngd网表文件,生成fpga映射后的ncd二进制电路网表文件和pcf物理约束文件。
a05,借助xilinx公司硬件设计套装ise的布局布线工具par,输入fpga映射后的ncd二进制电路网表文件和pcf物理约束文件,生成fpga布局布线后的ncd二进制电路网表文件。
a06,借助xilinx公司硬件设计套装ise的布局布线后仿真工具netgen,输入pcf物理约束文件和fpga布局布线后的ncd二进制电路网表文件,生成用来进行仿真的fpga布局布线后的v网表文件和fpga布局布线后的sdf时延文件。
a07,借助xilinx公司硬件设计套装ise的网表转换工具xdl,输入fpga布局布线后的ncd二进制电路网表文件,生成fpga布局布线后的xdl网表文件。
a08,借助mentor公司hdl硬件语言仿真套装modelsim的仿真工具vsim,输入用来进行仿真的testbench测试床文件、fpga布局布线后的v网表文件和fpga布局布线后的sdf时延文件,生成fpga布局布线后的vcd仿真波形数据文件。
a09,借助xilinx公司硬件设计套装ise的网表转换工具xdl,通过report功能参数在xilinx的fpga芯片数据库中,生成相应fpga型号的xdlrc芯片网表描述文件。
a10,启动基于布尔可满足性的fpga软错误容错程序,输入相应fpga型号的xdlrc芯片网表描述文件、fpga布局布线后的xdl网表文件、fpga布局布线后的vcd仿真结果文件,输出具备fpga软错误容错能力的xdl网表文件。
a11,借助xilinx公司硬件设计套装ise的网表转换工具xdl,输入具备fpga软错误容错能力的xdl网表文件,生成具备fpga软错误容错能力的ncd二进制电路网表文件。
a12,借助xilinx公司硬件设计套装ise的生成配置流工具bitgen,输入具备fpga软错误容错能力的ncd二进制电路网表文件,生成具备fpga软错误容错能力的bit配置流文件。
本实施例的基于布尔可满足性的fpga软错误容错程序的流程图如图2所示,步骤如下。
b01,读取xdlrc芯片网表描述文件,进行词法分析、语法分析、语义分析、中间代码生成和抽取fpga芯片的逻辑资源可配置字和布线资源可配置字。
b02,读取xdl网表文件,进行词法分析、语法分析、语义分析、中间代码生成和抽取fpga设计布局布线后电路实现的逻辑配置和配置互联信息。
b03,读取vcd仿真波形数据文件,进行词法分析、语法分析、语义分析、中间代码生成和抽取fpga布局布线后的仿真波形数据。
b04,基于fpga设计布局布线后电路实现的逻辑配置和配置互联信息,以及fpga芯片的逻辑资源可配置字和布线资源可配置字,结合fpga布局布线后的仿真波形数据,计算每个lut结点的软错误敏感度。
b05,基于布尔可满足性原地重配置fpga设计的逻辑资源无关配置字。
b06,基于布尔可满足性原地重配置fpga设计的逻辑资源闲置配置字。
b07,基于布尔可满足性原地重配置fpga设计的布线资源互连配置字。
b08,通过修改fpga配置字流的逻辑资源无关配置字、逻辑资源闲置配置字和布线资源互连配置字的0→1或1→0位翻转,输出具备fpga软错误容错能力的xdl网表文件。
本实施例的抽取xdlrc芯片网表描述文件的fpga芯片的逻辑资源可配置字和布线资源可配置字的流程图如图3所示,步骤如下。
c01,xdlrc芯片信息描述文件的词法分析,从左到右一个个读入xdlrc芯片网表描述文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词。
c02,xdlrc芯片信息描述文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据芯片信息描述文件的语法规则,确定整个字符流是否构成一个语法上正确的结构描述文件。
c03,xdlrc芯片信息描述文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息。
c04,xdlrc芯片信息描述文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示。
c05,xdlrc芯片信息描述文件的可配置字抽取,基于内部中间格式生成xdlrc芯片网表描述文件对应fpga型号芯片包含的tile、primitive、wire和pip资源的坐标、名称,以及资源之间的互连结构信息,分析fpga结构元素中所包含的可编程开关及其配置字,抽取fpga芯片的逻辑资源可配置字和布线资源可配置字。
本实施例的抽取xdl网表文件的fpga设计电路实现的逻辑配置和配置互联信息的流程图如图4所示,步骤如下。
d01,xdl网表文件的词法分析,从左到右一个个读入xdl网表文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词。
d02,xdl网表文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据网表文件的语法规则,确定整个字符流是否构成一个语法上正确的结构描述文件。
d03,xdl网表文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息。
d04,xdl网表文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示。
d05,xdl网表文件的电路基本信息和布局布线信息抽取,基于内部中间格式生成xdl网表文件对应fpga设计布局布线后包含的design、inst、net模块,抽取fpga设计电路实现的逻辑配置和配置互联信息。
本实施例的抽取vcd仿真波形数据文件的fpga布局布线后的仿真波形数据的流程图如图5所示,步骤如下。
e01,vcd仿真波形数据文件的词法分析,从左到右一个个读入vcd仿真波形数据文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词。
e02,vcd仿真波形数据文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据仿真波形数据文件的语法规则,确定整个字符流是否构成一个语法上正确的结构描述文件。
e03,vcd仿真波形数据文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息。
e04,vcd仿真波形数据文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示。
e05,vcd仿真波形数据文件的仿真波形数据抽取,基于内部中间格式生成因时间的增加信号变化的值信息,抽取fpga布局布线后的仿真波形数据。
本实施例的基于布尔可满足性原地重配置fpga设计的逻辑资源无关配置字的流程图如图6所示,步骤如下。
f01,对每个lut结点的软错误敏感度进行非递增顺序排序。
f02,按非递增顺序排序遍历各结点,对每个lut结点建立以它为汇点的扇入锥形。
f03,对扇入锥形中的lut进行基于布尔可满足性的原地重配置,在保证原有电路的逻辑功能和拓扑结构,最大程度地增加该扇入锥形中的lut等同配置字对数量。
本实施例的基于布尔可满足性原地重配置fpga设计的逻辑资源闲置配置字的流程图如图7所示,步骤如下。
g01,对每个lut结点的软错误敏感度进行非递增顺序排序。
g02,按非递增顺序排序遍历各结点,分析每个lut结点,如果每个lut结点的闲置配置字能够容纳原逻辑的副本,采取原地复制策略屏蔽配置字软错误的传播。
g03,按非递增顺序排序遍历各结点,分析每个lut结点,如果每个lut结点的闲置配置字不能容纳原逻辑的副本,则采取基于布尔可满足性的原地逻辑等价分解策略,在保证原有电路的逻辑功能和拓扑结构的同时,寻找逻辑等价分解方案最大程度地增加该lut中闲置配置字的数量,进而采取原地复制策略复制等价逻辑,构造会聚逻辑以屏蔽配置字软错误的传播。
本实施例的基于布尔可满足性原地重配置fpga设计的布线资源互连配置字的流程图如图8所示,步骤如下。
h01,对每个布线资源互连配置字构建伪扇入lut组,包括互连配置字正常情况下选择的lut和发生软错误后选择的lut。
h02,依据lut逻辑极性反转下的互连配置字敏感度局部依赖于其伪扇入lut组的敏感度局部依赖定理,求解布线资源互连配置字的软错误敏感度总和极小优化问题,得到lut逻辑极性的配置优化方案。
h03,对每个lut进行基于布尔可满足性的真值表原地转换,反转相应的lut逻辑极性,在保证原有电路的逻辑功能和拓扑结构,增强布线资源的软错误容错能力。
本实施例的基于布尔可满足性原地重配置逻辑资源无关配置字以屏蔽无关配置字软错误的实例如图9所示,左图采用4个lut查找表,l4的lut查找表101、l3的lut查找表104、l2的lut查找表102、l1的lut查找表103实现了电路逻辑,右图采用4个lut查找表,l4的lut查找表201、l3的lut查找表204、l2的lut查找表202、l1的lut查找表203实现了电路逻辑。左图的电路和右图的电路,电路逻辑,连接关系和拓扑结构相同,只是lut查找表101和lut查找表201的配置字c11有所不同。由于左图的电路和右图的电路在正确无错误的情况下无法访问到lut查找表101和lut查找表201的配置字c11,因此lut查找表101和lut查找表201的配置字c11是无关配置字。当左图l4的lut查找表101的c11被配置为0时,l4的lut查找表101输入z1的配置字对{l(2’b00),l(2’b10)}和{l(2’b01),l(2’b11)}、l4的lut查找表101输入z2的配置字对{l(2’b00),l(2’b01)}和{l(2’b10),l(2’b11)}完全不等同,无法屏蔽l4的lut查找表101输入的软错误。相反,当右图l4的lut查找表201的c11被配置为1时,l4的lut查找表201输入z1的配置字对{l(2’b01),l(2’b11)}、l4的lut查找表201输入z2的配置字对{l(2’b10),l(2’b11)}等同。假设l4输入z1或z2发生0→1的seu软错误,导致l4从访问配置字c01或c10变成错误地访问配置字c11,l4仍然可以正确输出1,等同配置字对有效地屏蔽了输入z1或z2的seu软错误,降低了软错误率。
本实施例的采取原地复制策略原地重配置逻辑资源闲置配置字以屏蔽闲置配置字软错误的实例如图10所示,301是一个只使用了5输入的6-lut;302将5输入lut的32位配置字复制一份副本,置于所在6-lut的32位闲置配置字中,再将原逻辑f1和逻辑副本f2通过and门,形成会聚逻辑f后作为lut的输出;303在lut的闲置配置字中复制原逻辑的副本,再利用lut内部的双输出结构和进位链构造所需的会聚逻辑,经过cin配置后,进位逻辑cout=f1·f2+f1·cin+cin·f2可满足会聚逻辑甄选原逻辑f1和逻辑副本f2的需要,从而将软错误的影响控制在lut内部。
本实施例的采取原地分解和复制策略原地重配置逻辑资源闲置配置字以屏蔽闲置配置字软错误的实例如图11所示,对于401所示的逻辑f,求解会聚逻辑⊙,将f分解成两个子逻辑f1和f2且f=⊙(f1,f2),使402所示的子逻辑f1和f2在会聚逻辑⊙的作用下与原逻辑f等价。以403的6输入and门为例,分解成404的两个3输入and门,并在2输入and门的会聚逻辑作用下与原逻辑等价。因此,403原逻辑所需的64位配置字,减少为404两个3输入and门所需的16位配置字和2输入and门所需的进位链,有效地增加了闲置配置字。接着,405基于原地复制策略复制一份⊙(f1,f2),再将原逻辑和逻辑副本的输出通过2输入and门作为lut的最终输出,有效地屏蔽了配置字软错误的传播。
本实施例的采取lut逻辑极性强制反转策略原地重配置布线资源互连配置字以降低互连配置字软错误的实例如图12所示,对于501所示的muxm,函数observ(m)表明由互连配置字bk软错误引发的多路选择器输出错误,是否会被传播到fpga的输出管脚。因此,互连配置字bk的软错误率为ser(bk)=(v(i)⊕v(j))·observ(m)。502通过对muxm的输入j端口的逻辑极性强制反转,有效地屏蔽了互连配置字bk软错误产生的错误输出。数据分析表明,此示例的互连配置字软错误率ser由503的74%降低到504的26%。
1.一种基于布尔可满足性的sram型fpga软错误容错方法,其特征在于,具体步骤如下:
步骤1,用硬件描述语言描述该fpga设计,生成fpga设计的硬件描述语言文件;
步骤2,借助xilinx公司硬件设计套装ise的综合工具xst,输入fpga设计的硬件描述语言文件,生成fpga综合后的ngc网表文件;
步骤3,借助xilinx公司硬件设计套装ise的转译工具ngdbuild,输入ngc网表文件和ucf用户约束文件,生成完成fpga转译后的ngd网表文件;
步骤4,借助xilinx公司硬件设计套装ise的映射工具map,输入ngd网表文件,生成fpga映射后的ncd二进制电路网表文件和pcf物理约束文件;
步骤5,借助xilinx公司硬件设计套装ise的布局布线工具par,输入fpga映射后的ncd二进制电路网表文件和pcf物理约束文件,生成fpga布局布线后的ncd二进制电路网表文件;
步骤6,借助xilinx公司硬件设计套装ise的布局布线后仿真工具netgen,输入pcf物理约束文件和fpga布局布线后的ncd二进制电路网表文件,生成用来进行仿真的fpga布局布线后的v网表文件和fpga布局布线后的sdf时延文件;
步骤7,借助xilinx公司硬件设计套装ise的网表转换工具xdl,输入fpga布局布线后的ncd二进制电路网表文件,生成fpga布局布线后的xdl网表文件;
步骤8,借助mentor公司hdl硬件语言仿真套装modelsim的仿真工具vsim,输入用来进行仿真的testbench测试床文件、fpga布局布线后的v网表文件和fpga布局布线后的sdf时延文件,生成fpga布局布线后的vcd仿真波形数据文件;
步骤9,借助xilinx公司硬件设计套装ise的网表转换工具xdl,通过report功能参数在xilinx的fpga芯片数据库中,生成相应fpga型号的xdlrc芯片网表描述文件;
步骤10,启动基于布尔可满足性的fpga软错误容错程序,输入相应fpga型号的xdlrc芯片网表描述文件、fpga布局布线后的xdl网表文件、fpga布局布线后的vcd仿真结果文件,输出具备fpga软错误容错能力的xdl网表文件;
步骤11,借助xilinx公司硬件设计套装ise的网表转换工具xdl,输入具备fpga软错误容错能力的xdl网表文件,生成具备fpga软错误容错能力的ncd二进制电路网表文件;
步骤12,借助xilinx公司硬件设计套装ise的生成配置流工具bitgen,输入具备fpga软错误容错能力的ncd二进制电路网表文件,生成具备fpga软错误容错能力的bit配置流文件;
上述的步骤10中,所述的基于布尔可满足性的fpga软错误容错程序的步骤如下:
步骤10.1,读取xdlrc芯片网表描述文件,进行词法分析、语法分析、语义分析、中间代码生成和抽取fpga芯片的逻辑资源可配置字和布线资源可配置字;
步骤10.2,读取xdl网表文件,进行词法分析、语法分析、语义分析、中间代码生成和抽取fpga设计布局布线后电路实现的逻辑配置和配置互联信息;
步骤10.3,读取vcd仿真波形数据文件,进行词法分析、语法分析、语义分析、中间代码生成和抽取fpga布局布线后的仿真波形数据;
步骤10.4,基于fpga设计布局布线后电路实现的逻辑配置和配置互联信息,以及fpga芯片的逻辑资源可配置字和布线资源可配置字,结合fpga布局布线后的仿真波形数据,计算每个lut结点的软错误敏感度;
步骤10.5,基于布尔可满足性原地重配置fpga设计的逻辑资源无关配置字;
步骤10.6,基于布尔可满足性原地重配置fpga设计的逻辑资源闲置配置字;
步骤10.7,基于布尔可满足性原地重配置fpga设计的布线资源互连配置字;
步骤10.8,通过修改fpga配置字流的逻辑资源无关配置字、逻辑资源闲置配置字和布线资源互连配置字的0→1或1→0位翻转,输出具备fpga软错误容错能力的xdl网表文件;
上述的步骤10.1中,所述的抽取xdlrc芯片网表描述文件的fpga芯片的逻辑资源可配置字和布线资源可配置字的步骤如下:
步骤10.1.1,xdlrc芯片信息描述文件的词法分析,从左到右一个个读入xdlrc芯片网表描述文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词;
步骤10.1.2,xdlrc芯片信息描述文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据芯片信息描述文件的语法规则,确定整个字符流是否构成一个语法上正确的结构描述文件;
步骤10.1.3,xdlrc芯片信息描述文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息;
步骤10.1.4,xdlrc芯片信息描述文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示;
步骤10.1.5,xdlrc芯片信息描述文件的可配置字抽取,基于内部中间格式生成xdlrc芯片网表描述文件对应fpga型号芯片包含的tile、primitive、wire和pip资源的坐标、名称,以及资源之间的互连结构信息,分析fpga结构元素中所包含的可编程开关及其配置字,抽取fpga芯片的逻辑资源可配置字和布线资源可配置字;
上述的步骤10.2中,所述的抽取xdl网表文件的fpga设计电路实现的逻辑配置和配置互联信息的步骤如下:
步骤10.2.1,xdl网表文件的词法分析,从左到右一个个读入xdl网表文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词;
步骤10.2.2,xdl网表文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据网表文件的语法规则,确定整个字符流是否构成一个语法上正确的结构描述文件;
步骤10.2.3,xdl网表文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息;
步骤10.2.4,xdl网表文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示;
步骤10.2.5,xdl网表文件的电路基本信息和布局布线信息抽取,基于内部中间格式生成xdl网表文件对应fpga设计布局布线后包含的design、inst、net模块,抽取fpga设计电路实现的逻辑配置和配置互联信息;
上述的步骤10.3中,所述的抽取vcd仿真波形数据文件的fpga布局布线后的仿真波形数据的步骤如下:
步骤10.3.1,vcd仿真波形数据文件的词法分析,从左到右一个个读入vcd仿真波形数据文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词;
步骤10.3.2,vcd仿真波形数据文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据仿真波形数据文件的语法规则,确定整个字符流是否构成一个语法上正确的结构描述文件;
步骤10.3.3,vcd仿真波形数据文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息;
步骤10.3.4,vcd仿真波形数据文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示;
步骤10.3.5,vcd仿真波形数据文件的仿真波形数据抽取,基于内部中间格式生成因时间的增加信号变化的值信息,抽取fpga布局布线后的仿真波形数据;
上述的步骤10.5中,所述的基于布尔可满足性原地重配置fpga设计的逻辑资源无关配置字的步骤如下:
步骤10.5.1,对每个lut结点的软错误敏感度进行非递增顺序排序;
步骤10.5.2,按非递增顺序排序遍历各结点,对每个lut结点建立以它为汇点的扇入锥形;
步骤10.5.3,对扇入锥形中的lut进行基于布尔可满足性的原地重配置,在保证原有电路的逻辑功能和拓扑结构,最大程度地增加该扇入锥形中的lut等同配置字对数量;
上述的步骤10.6中,所述的基于布尔可满足性原地重配置fpga设计的逻辑资源闲置配置字的步骤如下:
步骤10.6.1,对每个lut结点的软错误敏感度进行非递增顺序排序;
步骤10.6.2,按非递增顺序排序遍历各结点,分析每个lut结点,如果每个lut结点的闲置配置字能够容纳原逻辑的副本,采取原地复制策略屏蔽配置字软错误的传播;
步骤10.6.3,按非递增顺序排序遍历各结点,分析每个lut结点,如果每个lut结点的闲置配置字不能容纳原逻辑的副本,则采取基于布尔可满足性的原地逻辑等价分解策略,在保证原有电路的逻辑功能和拓扑结构的同时,寻找逻辑等价分解方案最大程度地增加该lut中闲置配置字的数量,进而采取原地复制策略复制等价逻辑,构造会聚逻辑以屏蔽配置字软错误的传播;
上述的步骤10.7中,所述的基于布尔可满足性原地重配置fpga设计的布线资源互连配置字的步骤如下:
步骤10.7.1,对每个布线资源互连配置字构建伪扇入lut组,包括互连配置字正常情况下选择的lut和发生软错误后选择的lut;
步骤10.7.2,依据lut逻辑极性反转下的互连配置字敏感度局部依赖于其伪扇入lut组的敏感度局部依赖定理,求解布线资源互连配置字的软错误敏感度总和极小优化问题,得到lut逻辑极性的配置优化方案;
步骤10.7.3,对每个lut进行基于布尔可满足性的真值表原地转换,反转相应的lut逻辑极性,在保证原有电路的逻辑功能和拓扑结构,增强布线资源的软错误容错能力。
技术总结