部分双模冗余的故障检测电路的设计方法与流程

文档序号:11155851阅读:396来源:国知局
部分双模冗余的故障检测电路的设计方法与制造工艺

本发明涉及故障检测技术领域,特别是涉及一种部分双模冗余的故障检测电路的设计方法。



背景技术:

胚胎电子细胞阵列是一种新型的具有故障自检测和自修复能力的高可靠性硬件。在环境恶劣,人工维修难以开展以及对任务要求严苛,需要电子设备长时间连续可靠运行的领域,如深海、深空、强辐射、金融等领域,具有广阔的应用前景。

自胚胎电子细胞阵列的概念提出以来,阵列内故障的实时在线检测问题一直是一个亟待解决的关键性问题。国内外众多学者针对这个问题开展了大量的研究,总结目前已有的故障检测方法,主要的设计思路可分为四类:第一类设计思路是基于电子细胞内或细胞间的局部检测方法;第二类设计思路是采用外部检测资源对电子细胞阵列的输入输出进行实时检测的方法;第三类设计思路是在电子细胞阵列内设计在线BIST(Built-in Self-Test)结构;第四类设计思路是在电子细胞阵列内,利用空闲电子细胞生成在线故障检测结构的方法。

目前,在胚胎电子细胞阵列内,如何利用空闲电子细胞进行在线故障检测设计,尚缺乏深入的研究。其中双模冗余(Dual Modular Redundancy,DMR)是一种可行的,实用的方法,它具有故障检测率高,设计简单,通用性强等优点,但是实现双模冗余的硬件消耗很大,在不考虑电子细胞阵列规模,或者需要实现的电路较小时,双模冗余是一种有效的方法。但是,在实际应用中,电子细胞阵列的规模总是有限的,当要实现的电路规模大于电子细胞阵列规模的一半时,双模冗余结构将无法实现。



技术实现要素:

本发明要解决的技术问题是针对上述现有技术的不足,提供一种部分双模冗余的故障检测电路的设计方法,能够在电子细胞阵列中存在不可检测单元的情况下进行有效的检测。

本发明实施例,提供一种部分双模冗余的故障检测电路的设计方法,用于设计检测胚胎电子细胞阵列故障的故障检测电路,该方法包括:

输入需要进行部分双模冗余的功能电路的描述文件;

从所述描述文件中提取目标电路,并将所提取出的目标电路生成电路网表结构;

通过电子胚胎细胞阵列的平均无故障时间模型,以平均无故障时间为优化目标,对所述电路网表结构进行优化;

将经过优化后的所述电路网表结构映射到电子胚胎细胞阵列中,生成包括查找表和D触发器的电路网表;

其中,所述平均无故障时间模型中包含表征电子细胞阵列中的故障不可检测单元的参数。

优选的,所述将经过优化后的所述电路网表结构映射到电子胚胎细胞阵列中包括:

通过逻辑综合优化过程,将经过优化后的所述电路网表结构再次进行优化;将经过优化后的所述电路网表结构映射到电子胚胎细胞阵列中。

优选的,所述平均无故障时间模型的计算过程为:

假设电路中电子细胞的个数为U,定义电子细胞阵列的规模为m×n,其中

对于电子细胞阵列规模为N×N,采用列移除进行自修复的电子细胞阵列,若m×n的电子细胞为工作细胞,假设每个电子细胞的可靠度r(t)=e-λt,则电子细胞阵列的MTTF为:

在电子细胞阵列中存在故障不可检测的细胞单元时,结合所述故障不可检测单元,假设可被检测的电子细胞的规模为m×n,不可被检测的电子细胞个数为s,则电子系统实际上可以看成是由可检测的电路部分与不可检测的电路部分构成的串联系统,得出所述平均无故障时间模型为:

其中,

优选的,所述平均无故障时间模型的计算过程还包括:

结合输出端口限制、电子细胞阵列规模限制和故障检测率限制,选择输出端口。

优选的,所述输出端口限制条件为:

设定所述电路网表有N个输出端口,输出端口选择向量为O=(o1,o2,…,oN),其中oi={1,0};输出端口权重向量W=(w1,w2,…,wN),其中wi为第i个输出端口的权重值,且0≤wi≤1;

输出端选择向量O受到输出端权重向量的限制,设定输出端口i被选择的概率为pi,则输出端选择向量O中的元素满足oi=1,其中pi=wi

优选的,所述电子细胞阵列规模限制条件为:

设定经过优化的冗余电路的电子细胞个数记为UOopt(A);当输出端口个数大于1时,检测器的个数由输出端选择向量O计算可得为O2,当输出端口个数等于1时,检测器的个数为2;则部分双模冗余后电路中的电子细胞总数为:

U=A+UOopt(A)+O2≤D

其中,D为电子细胞阵列规模限制参数。

优选的,所述故障检测率限制条件为:

设定所述故障检测率参数为C,且0≤C≤1;根据电子细胞阵列中可检测的细胞个数与电子细胞总数得出所述故障检测率限制条件:

其中,当选择输出端口i时,电子细胞阵列中与输出端口i相关的电子细胞构成集合ai,所有工作的电子细胞构成集合A,则定义由O确定的A的子集为SO(A)={ai},其中子集ai满足ai∈SO(A)(oi=1),则UO(A)为根据O确定的电子细胞集合

优选的,对输出端口的选择过程具体为:

将输出端口选择向量O作为基因编码,根据输出端权重向量W随机生成预设数量的基因;所述预设数量的基因构成基因池;

根据基因编码,选择相应的输出端口,进行电子细胞集选择;所述电子细胞集中包括冗余电路;

对所述电子细胞集中的冗余电路进行重新综合;

计算所述冗余电路面积和故障检测率;所述冗余电路面积为构成所述冗余电路的电子细胞个数;

计算适应度函数;

通过精英保留策略,从当前基因池中选择精英基因,并在当前基因池其余的基因中随机选择一个普通基因,将所述精英基因与所述普通基因进行交叉操作,生成两个新的基因,并将新生成的两个基因存入所述基因池中;

按照预设变异率,对当前基因池内所有的基因下进行变异操作,并将变异后的基因存入所述基因池中;

采用精英基因保留策略对所述基因池进行基因更新。

优选的,所述适应度函数为:

优选的,所述对所述电子细胞集中的冗余电路进行重新综合包括:

将冗余电路转化为AIG格式;

经过时序优化、逻辑优化和逻辑映射,重新生成与原冗余电路功能完全相同的冗余电路。

采用上述技术方案所产生的有益效果在于:本发明实施例,输入需要进行部分双模冗余的功能电路的描述文件,从所述描述文件中提取目标电路,并将所提取出的目标电路生成电路网表结构;通过电子胚胎细胞阵列的平均无故障时间模型,以平均无故障时间为优化目标,对所述电路网表结构进行优化;将经过优化后的所述电路网表结构映射到电子胚胎细胞阵列中,生成包括查找表和D触发器的电路网表,因此能够在电子细胞阵列中存在不可检测单元的情况下进行有效的故障检测,在资源限制的条件下能够提高故障检测电路的可靠性。

附图说明

图1是本发明实施例中故障检测电路的结构示意图;

图2是本发明实施例中加法器的部分双模冗余设计结构示意图;

图3是本发明实施例中检测器的结构示意图;

图4是本发明实施例中故障检测电路的设计方法的流程图;

图5是本发明实施例中部分双模冗余与双模冗余的MTTF示意图;

图6是本发明实施例中对输出端口的选择流程示意图;

图7是本发明实施例中12×12阵列中的部分双模冗余优化示意图;

图8是本发明实施例中15×15阵列中的部分双模冗余优化示意图;

图9是本发明实施例中20×20阵列中的部分双模冗余优化示意图;

图10是本发明实施例中25×25阵列中的部分双模冗余优化示意图;

图11是本发明实施例中不同阵列中部分双模冗余电路的面积和故障检测率示意图;

图12是本发明实施例中标准电路的面积、MTTF和FDR变化率示意图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细的说明。

参见图1,故障检测电路用于检测胚胎电子细胞阵列的故障,可以包括输入端、功能输出端和检测信号输出端,以及功能电路101、部分双模冗余电路102和检测器103。所述功能电路101、部分双模冗余电路102和检测器103均包括所述胚胎电子细胞阵列中的多个胚胎电子细胞。

所述功能电路101的输入端和所述部分双模冗余电路102的输入端均与所述信号输入端相连。所述功能电路101的输出端与所述功能输出端相连。所述部分双模冗余电路102的输出端与所述检测器103的输入端相连。所述检测器103的输入端还与所述功能电路101的输出端相连。所述检测器103的输出端与所述检测信号输出端相连。

所述检测器103用于检测所述功能电路101的输出信号和所述部分双模冗余电路102的输出信号是否相同:若不同,则所述检测器103输出故障信息;否则,所述检测器103输出正常信息。

当选择全部输出端进行双模冗余时,就构成了常见的双模冗余电路。当选择部分输出端进行双模冗余时,就构成了部分双模冗余电路。因此,双模冗余电路可以看做部分双模冗余电路的一个特例。为了对这种新型的部分双模冗余电路有一个更具体的认识,以常用的2位全加器为例进行说明。

当对电路进行双模冗余设计时,电路共需要13个基本逻辑门,其中用于检测的逻辑门有8个。如果选择CO端进行部分双模冗余设计,电路共需要8个基本逻辑门,其中用于检测的逻辑门个数仅为3个。如果以基本逻辑门个数估计硬件资源消耗,则用于检测的硬件资源消耗下降62.5%。此时,部分双模冗余电路虽然无法对输出端S进行检测,故障检测率有所损失,但是电路的硬件资源消耗显著下降。

当电路更为复杂,电路的输出端口更多时,不同的输出端选择方案,将产生不同的部分双模冗余电路,为设计者提供了更多的设计选择。因此,部分双模冗余实际上提供了一个在电路面积和检测率之间,可供权衡选择的优化空间。

一个实施例中,所述检测器103可以包括多个并行的查找表(Look Up Table,LUT)单元。所述查找表单元,用于检测所述功能电路101的两路输出信号与所述双模冗余电路102的两路输出信号是否对应相同:若全相同,则所述查找表单元输出正常信息;否则,所述查找表单元输出故障信息。且所有的所述查找表单元均输出正常信息时,表示所述检测器103没有检测到故障;否则,表示检测器103检测到故障。

具体的,参见图3,目前,胚胎电子细胞中多采用查找表(Look Up Table,LUT)作为功能单元,因此本文针对LUT型功能单元,设计专门的检测器,如图3所示。其中I1~IN为功能电路101的输出,I'1~I'N为双模冗余电路102的输出,N为大于等于2的整数。检测器103中的每一个查找表单元实现两对输入的比较,当两对输入都相同时,输出0,否则输出1。O1~ON为检测器103的输出,当输出为全零时表示检测器103没有检测到故障;否则,表示检测器103检测到故障。

例如,查找表单元i将Ii与I'i、Ii+1与I'i+1分别进行比较。在Ii与I'i相同,且Ii+1与I'i+1也相同时,查找表单元i输出Oi零;否则,查找表单元1输出1。其中,1<i<N。在各个查找表单元的输出均为零时,表示检测器103没有检测到故障;否则,表示检测器103检测到故障。

进一步的,检测器103不仅能够检测到故障,而且可以根据输出值,实现检测器103自检。具体的,所述检测器103包括N个所述查找表单元,每个所述查找表单元具有两个逻辑相邻的查找表单元。N大于等于2的整数。例如,查找表单元i,具有两个逻辑相邻的查找表单元i-1和查找表单元i+1;其中,2<i<N-1。特别的,对于查找表单元1,逻辑相邻的查找表单元为查找表单元N和查找表单元2。对于查找表单元N,逻辑相邻的查找表单元为查找表单元N-1和查找表单元1。

对于第i个查找表单元,所述功能电路101的两路输出信号分别为Ii和Ii+1,所述双模冗余电路102的两路输出信号分别为I'i和I'i+1,第i个查找表单元的输出值记为Yi,且Ii和I'i的比较结果为Xi,Ii+1和I'i+1的比较结果为Xi+1,则第i个查找表单元的输入和输出之间的逻辑关系为:

所述检测器103的输入和输出的关系为:

则通过输出值Y1,Y2,…,YN求解X1,X2,…,XN时,若X1,X2,…,XN都有解,则所述检测器103无故障;否则,所述检测器103存在故障。

具体的,通过检测器103的输出值判断检测器103本身是否存在故障,即自检的过程,实际上是通过输出值Y1,Y2,…,YN,求解变量X1~XN的过程,当X1~XN都有解时,则检测器103无故障;否则,检测器103存在故障。

当变量Xi=0时,表示输入端Ii,I'i相同;当变量Xi=1时,表示输入端Ii,I'i不同,即输入端Ii或I'i发生故障。假设Y1,Y2,…,YN中仅Yi=0,其余输出为1,则方程(2)至少有一组解{Xi=0,Xi+1=0,Xj=1(j≠i且j≠i+1)}。假设Y1,Y2,…,YN中有M个值为0,M≥2,则Y1,Y2,…,YN可被分为逻辑相邻的M段,假设其中自变量个数最少的一段为Yj~Yk,如式(3):

式(3)中,k>j,当k=j+1时,有解{Xk=0,Xj=0,Xj+1=0}。当k=j+2时,无解。当k>j+2时,至少有一组解{Xk=0,Xk+1=0,Xj=0,Xj+1=0,Xp=1(p≠k,k+1,j,j+1)}。因此,在Y1,Y2,…,YN中,如果两个零之间1的个数不为1时,则自变量{Xj,…,Xk+1}有解,式(2)所示的整个检测器方程组也有解。如果在Y1,Y2,…,YN中,存在两个零之间1的个数为1的情况,则无解。在检测器103正常工作时,这种情况是不可能发生的,如果发生,则说明检测器103自身出现故障。

图1示出了本发明实施例一提供的部分双模冗余故障检测电路设计方法的流程图。参见图1,部分双模冗余故障检测电路设计方法可以包括以下过程:

步骤S101,输入需要进行部分双模冗余的功能电路的描述文件。

其中,描述文件包括但不限于Verilog、VHDL、.blif、.aig、.net、.bench等多种格式。

步骤S102,从所述描述文件中提取目标电路,并将所提取出的目标电路生成电路网表结构。

步骤S103,通过电子胚胎细胞阵列的平均无故障时间模型,以平均无故障时间为优化目标,对所述电路网表结构进行优化。

步骤S104,将经过优化后的所述电路网表结构映射到电子胚胎细胞阵列中,生成包括查找表和D触发器的电路网表。

其中,所述平均无故障时间模型中包含表征电子细胞阵列中的故障不可检测单元的参数。胚胎电子细胞阵列的平均无故障时间(mean time to failure,MTTF),是衡量电子细胞阵列性能的关键指标。以MTTF为优化目标指导电路设计,是被普遍采用的方法。Cesar Ortega等人最早提出了胚胎电子细胞阵列的MTTF估计模型,将胚胎电子细胞阵列等效为一个K/N系统。

假设电路中电子细胞的个数为U,定义电子细胞阵列的规模为m×n,其中

在确定了胚胎电子细胞阵列的规模后,即可对电路的MTTF进行估计。例如,对于电子细胞阵列规模为N×N(N行N列),采用列移除进行自修复的电子细胞阵列,若其中m×n的电子细胞为工作细胞,假设每个电子细胞的可靠度r(t)=e-λt,则电子细胞阵列的MTTF为:

在式(4)所示的基本K/N系统模型中,并未考虑电子细胞的故障检测情况,即假设电子细胞阵列中发生的故障总能被检测出来,这与实际是不相符的。实际上,当电子细胞阵列中存在故障不可检测的细胞单元时,如果细胞单元失效,则可能导致整个系统失效。因此,本实施例给出在考虑存在故障不可检测单元情况下的新MTTF估计模型。

具体的,在电子细胞阵列中存在故障不可检测的细胞单元时,结合所述故障不可检测单元,假设可被检测的电子细胞的规模为m×n,不可被检测的电子细胞个数为s,则电子系统实际上可以看成是由可检测的电路部分与不可检测的电路部分构成的串联系统,得出所述平均无故障时间模型为:

其中,在式(5)中,电子细胞阵列中工作细胞的总数为U,由式(5)可知,当电子细胞阵列中不存在无法检测的细胞时,即s=0,则式(5)即为典型的K/N系统;当电子细胞阵列中所有的细胞都无法检测时,即m=n=0,则式(2)即为典型的串联系统。

参见图5,在电子细胞个数为25×25,30×30,35×35,40×40等四个不同大小的电子细胞阵列中,分别采用部分双模冗余(Partial Dual Module Redundancy,PDMR)、双模冗余(Dual Module Redundancy,DMR)和无冗余(No Redundancy,NR)等方式实现不同规模的功能电路,电子细胞阵列采用列移除的自修复方式,由式(4)和式(5)分别计算双模冗余的MTTF值和部分双模冗余的MTTF值。在进行双模冗余设计时,双模冗余电路的规模近似为原始电路的2倍,由式(4)计算出相应的MTTF值,构成双模冗余曲线。在进行部分双模冗余设计时,根据功能电路的大小,选择电路中数量不同的电子细胞进行双模冗余,由(5)计算MTTF,并将其中最大的MTTF值作为电路的MTTF值,构成部分双模冗余曲线。无冗余电路即为功能电路,无冗余电路中所有的电子细胞均无法检测,因此不具备自修复能力。

从图5中可以看出,当原始电路的规模较小时,双模冗余具有最高的MTTF值,但是随着电路中电子细胞个数的增加,双模冗余的MTTF值不断下降,当电子细胞个数接近阵列规模的一半时,甚至劣于无冗余电路。另一方面,部分双模冗余电路的MTTF值始终高于无冗余电路,而且随着电子细胞个数的增加,也超过双模冗余电路。这说明,部分双模冗余电路与原始电路相比,可靠性确实得到很大提高,而且当电路的规模大到一定程度时,经过合理设计产生的部分双模冗余电路,具有比双模冗余更高的MTTF。另外,在如图5的仿真过程中发现,当原始电路的规模达到电子细胞阵列规模的约1/4时,即可考虑采用部分双模冗余的方法,设计具有更高MTTF的电路。

优选的,步骤S103之前,该故障检测电路的设计方法还可以包括:结合输出端口限制、电子细胞阵列规模限制和故障检测率限制,选择输出端口。

具体的,对电路进行部分双模冗余设计的过程中,输出端口的选择是最关键的一步。假设电路有N个输出端口,记输出端口选择向量为O=(o1,o2,…,oN),其中oi={1,0}。当oi=1时,表示输出端口i被选择;否则,表示输出端口i不被选择。当选择输出端口i时,电子细胞阵列中与输出端口i相关的电子细胞构成集合ai,所有工作的电子细胞构成集合A,则定义由O确定的A的子集为SO(A)={ai},其中子集ai满足ai∈SO(A)(oi=1)。则由O确定的电子细胞集合记为集合中元素的个数记为|UO(A)|。电子细胞阵列中其余的工作细胞构成的电子细胞集合记为记集合中的元素个数为则与UO(A)互斥,且满足

所述输出端口限制条件具体可以为:

对于某些电路,在设计时要求特定的端口必须被检测,或者预先设定端口间在功能上的重要程度(例如,对于加法器、乘法器等数值计算电路,从输出结果的准确度来看,高位输出比低位输出更加重要)。因此,定义输出端权重向量W=(w1,w2,…,wN),其中N为电路的输出端口个数,wi为第i个端口的权重值,且0≤wi≤1。当wi=1时,表示输出端口i被选择的概率为100%;当wi=0时,表示输出端口i被选择的概率为0;当0<wi<1时,wi的值可由具体的要求(如重要程度)确定。输出端口选择向量O受到输出端口权重向量的限制,记输出端口i被选择的概率为pi,则输出端选择向量O中的元素满足oi=1,其中pi=wi

所述电子细胞阵列规模限制条件具体为:

在某些情况下,要求经过部分双模冗余设计产生的电路规模必须在限定范围内,因此,定义规模限制参数D。部分双模冗余电路由原始电路、冗余电路和检测器构成。其中,原始电路中的电子细胞个数记为|A|。冗余电路由输出端口向量确定的电子细胞集构成。需要特别注意的是,由直接选择出的电子细胞构成的冗余电路往往并不是最优的,需要经过重新逻辑综合和映射,进一步减小规模。此时,经过重新优化产生的冗余电路,与原始电路中功能相同的部分,形成异构双模冗余。

本实施例中,将经过优化的冗余电路的电子细胞个数记为UOopt(A);当输出端口个数大于1时,检测器的个数由输出端选择向量O计算可得为O2,当输出端口个数等于1时,检测器的个数为2。记部分双模冗余后电路中的电子细胞总数为U,即U满足U=A+UOopt(A)+O2≤D。

所述故障检测率限制条件为:

对于某些电路,故障检测率具有明确的要求,则定义电路的故障检测率参数C,且0≤C≤1。在实施例中,原电路中与选中的输出端相关的电子细胞、经过优化的冗余电路和检测器都是可检测的,其余工作的电子细胞是不可检测的,因此检测率可由阵列中可检测的细胞个数与电子细胞总数确定,即要求

一般来说,在满足以上要求的情况下,电路设计还应该具有尽可能高的MTTF,MTTF是电路设计的主要优化目标,可由式(5)计算得到。

因此,输出端口优选的本质是:在考虑输出端口限制、电子细胞阵列规模限制、检测率故障限制的条件下,选择合适的输出端口,使电路MTTF最优。输出端口的优选模型满足式(3)所示:

s.t.oi=1(pi=wi)

s.t.A+UOopt(A)+O2≤D (6)

式(6)为一个典型的多参数组合优化问题。遗传算法因采用离散的编码方式,在解决此类离散的组合优化问题时具有潜在的优势,因此本文采用遗传算法求解最优的输出端口方案。参见图6,对输出端口的选择流程具体可以包括以下过程:

步骤S201,将输出端口选择向量O作为基因编码,根据输出端权重向量W随机生成预设数量的基因。

具体的,在遗传算法中,基因也可称为基因编码,一般由一定长度的0/1编码构成。每一个基因都代表着待求解问题的一个解,所以遗传算法实际上是在一定的限制条件下寻找最优基因的过程。本文中,不同的输出端选择向量O,代表着不同的输出端选择方案,因此直接将输出端选择向量O作为基因编码,即基因。在算法初始化阶段,首先根据输出端权重向量W随机生成一定数量的基因(其中基因的具体数量需要根据具体情况确定)。在随机生成基因O的过程中,对于O中的元素oi,取值为1的概率由输出端权重向量W中相对应的元素wi的值确定。当wi=1时,说明oi以100%的概率取值为1,即输出端口i一定被选择。当wi=0时,说明oi取值为1的概率为0,即输出端口i不能被选择。随机生成的一定数量的基因,构成一个集合,称为基因池。

步骤S202,根据基因编码,选择相应的输出端口,进行电子细胞集选择;所述电子细胞集中包括冗余电路。

本步骤中,根据基因编码,选择相应的输出端口,然后采用递归回溯搜索算法,从每一个被选择的输出端口开始,到电路的输入端为止,依次进行回溯搜索,并标记搜索路径上所有的电子细胞。搜索完成后,原电路中所有被标记的电子细胞,构成电子细胞集,这些电子细胞都是可以检测的。原电路中其余的电子细胞与选择的输出端口无关,这些细胞是不可检测的。

步骤S203,对所述电子细胞集中的冗余电路进行重新综合。

具体的,由电子细胞集中的电子细胞构成的冗余电路往往不是最优的,而且大多数情况下具有很大的优化空间,为了进一步减小冗余电路的面积,需要进行重新综合。首先将冗余电路转化为AIG(And-Inverter Graphs,AIG)格式,然后经过时序优化、逻辑优化和逻辑映射等步骤,重新生成与原冗余电路功能完全相同的、经过优化的冗余电路。一般情况下,这种经过优化形成的冗余电路,与单纯通过双模冗余生成的冗余电路相比,面积将大幅度下降,从而进一步提高了电路的可靠性。

步骤S204,计算所述冗余电路面积和故障检测率。

其中,所述冗余电路面积为构成所述冗余电路的电子细胞个数。部分双模冗余电路由原始电路、经过优化的冗余电路和检测器三部分构成,因此总的电路面积为三部分电路中电子细胞个数之和。在计算电路的故障检测率时,原始电路中与选中的输出端相关的电子细胞、经过优化的冗余电路和检测器电路是可以检测的,其余的电子细胞是不可检测的,因此故障检测率计算公式如式(6)。

步骤S205,计算适应度函数。

具体的,遗传算法中,大多采用目标函数作为适应度函数,适应度函数值越大,在遗传的过程中越有可能被保留下来。在步骤中适应度函数为:

步骤S206,通过精英保留策略,从当前基因池中选择精英基因,并在当前基因池其余的基因中随机选择一个普通基因,将所述精英基因与所述普通基因进行交叉操作,生成两个新的基因,并将新生成的两个基因存入所述基因池中。

本步骤中,采用精英保留策略,在每一代进化中,选择当前基因池中适应度值最大的一个基因作为精英基因,并将精英基因与历史最优值相比较,如果大于历史最优值,则更新历史最优值。然后在其余的基因中随机选择一个基因,与精英基因进行交叉操作。在选择出的精英基因和普通基因中,随机交换1个位置上的基因码,生成两个新的基因,并将这两个新的基因放入基因池。

步骤S207,按照预设变异率,对当前基因池内所有的基因下进行变异操作,并将变异后的基因存入所述基因池中。

本步骤中,当步骤S206中的交叉操作完成后,按照预设变异率对基因池内所有的基因进行变异操作。当基因进行变异时,即在基因编码的随机位置上进行码元的取反操作,并将变异后的基因放入基因池中。其中,预设变异率可以根据实际需要进行设定。

步骤S208,采用精英基因保留策略对所述基因池进行基因更新。

本步骤中,在每一代搜索结束后,采用精英基因保留策略进行基因更新,即在基因池中随机选择一个基因删除,然后加入精英基因。这样在每一代的进化过程中,当前的历史最优基因被保留下来,参与到后期的进化过程中,避免了精英基因的丢失。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

以下通过仿真实验对本发明实施例进行详细说明。

仿真实验在Linux系统中,以逻辑综合工具ABC为基础,采用C语言编程实现。本实施例中,基因结构体中主要参数为:

基因由gene结构体表示,每一个基因代表着一个部分双模冗余电路。其中Circuit存储着部分双模冗余电路网表的地址;Code存储着基因编码;Adapt是基因的适应度值,即基因的MTTF值;Area是部分双模冗余电路中的电子细胞个数;FDR(Fault Detection Rate)是部分双模冗余电路的故障检测率。本实施例中采用遗传算法作为部分双模冗余设计的优化算法,主要算法流程及伪码如下:

GA_Function(Network*network,double*W,int D,double C){

genes=Gene_Pool_Alloc(genenum);

for(i=0;i<genenum;i++){

do{ponum=NetworkPoNum(network);

cellnum=NetworkCellNum(network);

circuit=Partial_Function(network,genes[i].code,&uncover);

Network_Opt_Function(&circuit,&optnum);

genes[i].area=Area_Function(cellnum,uncover,ponum,optnum);

genes[i].adapt=Fitness_Function(network,uncover,cellnum);

genes[i].Fdr=FDR_Function(cellnum,uncover,ponum,optnum);

}while(Limitcheck(genes[i],W,D,C));}

for(i=0;i<Times;i++){for(j=0;j<genenum;j++){

if(Geneisnew(genes[j])){Gene_Calculate(gene[j])}}

Select(genes,&elite_index,&other_index);

Gene_Copy(elite_gene,genes[elite_index]);

Cross(genes[elite_index],genes[other_index]);

Mutation(genes[elite_index],genes[other_index]);

Update(elite_gene,genes);}

其中,cellnum为原电路中的电子细胞个数,uncover为原电路中不可检测的电子细胞个数,ponum为部分双模冗余电路的输出端数目,optnum为经过优化的冗余电路中的电子细胞个数。Gene_Pool_Alloc函数根据指定的基因数量,生成相应大小的基因池空间。Partial_Function函数根据基因编码,在原电路中搜索与输出端口相关的电子细胞,生成电子细胞集,并返回由电子细胞集构成的待优化的冗余电路;Network_Opt_Function为电路优化函数;Area_Function,Fitness_Function,FDR_Function分别为求解面积、适应度值和故障检测率的函数;Limitcheck是检验基因是否达到要求的函数;Select,Cross,Mutation,Update分别为遗传算法中的选择、交叉、变异和更新函数。elite_gene为精英基因变量。

首先以C8标准电路为例,说明基于遗传算法的部分双模冗余设计的优化过程。本文采用VTR提供的经过逻辑综合和4输入LUT映射生成的C8.blif文件作为原始电路文件。其中,C8标准电路中含有39个LUT逻辑单元,包括28个输入端和18个输出端。以电路的MTTF作为主要优化目标,分别在12×12,15×15,20×20,25×25等不同大小的胚胎电子细胞阵列中,实现C8标准电路的部分双模冗余设计及优化,分析部分双模冗余和双模冗余的MTTF值与电子细胞阵列规模之间的关系。

设定遗传算法中基因池大小为20,最大进化代数为100,变异率为0.4,输出端权重向量W=(0.5,0.5,…,0.5),规模限制参数D为阵列规模的1/4,检测率限制参数C为0.2。

参见图7至图10,设定4个不同规模的电子细胞阵列,并分别在每个电子细胞阵列中,采用遗传算法独立的进行4次部分双模冗余设计,分别记录算法在每次设计过程中的进化轨迹(即从第1代至100代每代基因池中最优的MTTF值),记为Search 1~Search 4,同时计算相同规模的电子阵列中,双模冗余电路的MTTF值。从图7~图10可以得到如下结论:

(1)随着电子细胞阵列规模的增大,部分双模冗余和双模冗余电路的MTTF值不断升高,且越来越接近。如图7所示,在规模为12×12的胚胎电子细胞阵列中,双模冗余的MTTF值约为2.74×103h,部分双模冗余最优MTTF值约为4.23×103h。两个电路之间的MTTF值相差很大,其中部分双模冗余电路的MTTF值比双模冗余的MTTF值提升约54.4%。随着电子细胞阵列规模增大,部分双模冗余电路和双模冗余电路的MTTF值不断上升,而且两者的MTTF值越来越接近。如图10,在规模为25×25的电子细胞阵列中,双模冗余和部分双模冗余的MTTF值相同,均上升至约为9.87×103h。这主要是因为随着阵列规模的增加,阵列中空余的电子细胞增加,对于采用列移除机制的胚胎电子细胞阵列来说,可修复的故障数量增加。

而且,在不同的电子细胞阵列中,双模冗余电路的结构没有发生任何变化,但是经过优化的部分双模冗余电路的面积和故障检测率随着阵列规模的增加而增加。如图11,当阵列规模增加至25×25,部分双模冗余电路的故障检测率达到100%,面积增长至94,此时功能电路的全部输出端都被选择,部分双模冗余电路即为双模冗余电路。

(2)采用遗传算法,部分双模冗余电路结构得到不断优化,电路的MTTF值逐渐升高,并收敛于最优值。这里的最优值可能是全局最优值,也可能是局部最优值。虽然遗传算法难以保证得到一个全局最优的结果,但是能够保证得到一个相对较优的结果。如在图9中,虽然阵列规模较大,双模冗余的MTTF值很高,但是经过4次进化,算法每次都收敛到一个优于双模冗余的MTTF值7.79×103h。在图10中,电子细胞阵列规模为25×25时,双模冗余具有全局最优的MTTF值,遗传算法经过4次搜索,有两次搜索到全局最优值9.87×103h,另外两次搜索到接近最优值的较优值9.40×103h,说明了算法的有效性。另外,在工程实际中,电路的设计往往难以保证全局最优或理论最优,因此,接近全局最优的较优方案依然具有一定的实际意义。

为了对本文提出的方法进行更充分的验证,分别选取5个不同规模的标准组合电路和时序电路,分析部分双模冗余电路和双模冗余电路的面积、故障检测率和MTTF,如表1。实验中,设定基因池的大小为20,最大进化代数为200,进化过程中的变异率为0.4。输出端权重向量W=(0.5,0.5,…,0.5),规模限制参数D为阵列规模的1/2,检测率限制参数C为0.5。根据标准电路的大小,分别设定电子细胞阵列的规模为12×12,15×15,20×20和25×25。阵列规模的确定:当标准电路的规模小于电子细胞阵列规模的1/4时,一般来说双模冗余具有较高的MTTF值,可以采用双模冗余的方法;当标准电路的规模大于电子细胞阵列规模的1/2时,只能采用部分双模冗余的方法;当标准电路的规模为电子细胞阵列规模的1/4~1/2时,可以采用双模冗余的方法也可以采用部分双模冗余的方法,但是一般情况下经过优化设计的部分双模冗余电路具有更高的MTTF,因此这里主要对这种情况进行仿真和验证。

表1标准电路分别采用双模冗余和部分双模冗余设计产生的面积、

MTTF和故障检测率

仿真结果如表1,经过优化设计的部分双模冗余电路与双模冗余电路相比,虽然故障检测率降低了,但是电路面积得到优化,而且电路的MTTF值明显升高。对比双模冗余和部分双模冗余的MTTF值,如图12所示。

在图12中,采用部分双模冗余与双模冗余相比,各标准电路虽然损失了一定的故障检测率,但是电路面积都相应减小,电路的MTTF值也升高了,说明电路都变得更加可靠。而且除了dk14电路外,其余电路的MTTF值增加明显,如C3540电路,MTTF值提升了一倍以上,说明了部分双模冗余方法的有效性。仅有dk14电路的性能提升较小,这主要是因为dk14电路仅有5个输出端口,因此优化空间受限。

上述部分双模冗余故障检测电路设计方法,输入需要进行部分双模冗余的功能电路的描述文件,从所述描述文件中提取目标电路,并将所提取出的目标电路生成电路网表结构;通过电子胚胎细胞阵列的平均无故障时间模型,以平均无故障时间为优化目标,对所述电路网表结构进行优化;将经过优化后的所述电路网表结构映射到电子胚胎细胞阵列中,生成包括查找表和D触发器的电路网表。由于所述平均无故障时间模型中包含表征电子细胞阵列中的故障不可检测单元的参数,因此上述故障检测电路的设计方法能够在电子细胞阵列中存在不可检测单元的情况下进行有效的故障检测,在资源限制的条件下能够提高故障检测电路的可靠性。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1