CN102054102B - 一种与/异或电路的最佳混合极性搜索方法 - Google Patents
一种与/异或电路的最佳混合极性搜索方法 Download PDFInfo
- Publication number
- CN102054102B CN102054102B CN201010606541A CN201010606541A CN102054102B CN 102054102 B CN102054102 B CN 102054102B CN 201010606541 A CN201010606541 A CN 201010606541A CN 201010606541 A CN201010606541 A CN 201010606541A CN 102054102 B CN102054102 B CN 102054102B
- Authority
- CN
- China
- Prior art keywords
- polarity
- xor
- variable
- circuit
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Logic Circuits (AREA)
Abstract
本发明公开了一种与/异或电路的最佳混合极性搜索方法,特点是包括以下步骤:1)对于输入变量个数为n的逻辑电路,产生非循环格雷码极性序列;2)从最小项表达式得到i=1时的极性g1的混合极性里德穆勒的表达式,通过低功耗映射得到极性g1的的最小成本;3)从当前极性得到下一位极性的混合极性里德穆勒表达式,并用低功耗映射得到此位极性的与/异或电路的面积成本和功耗成本;4)定义此位极性为当前极性,并将当前极性的成本与整个电路的最小成本比较,确定整个与/异或电路的最佳极性和整个与/异或电路的最小成本。最后通过对18个MCNC和ISCAS基准电路测试表明本发明的方法要优于固定极性里德穆勒电路实现形式优化方案和与/或电路实现形式。
Description
技术领域
本发明涉及一种集成电路设计中电路最佳极性的搜索方法,尤其是涉及一种与/异或电路的最佳混合极性搜索方法。
背景技术
现代集成电路的小尺寸和高性能导致巨大的功耗,使芯片在封装、散热和稳定性等方面存在诸多问题。低功耗已成为超大规模集成电路(VLSI)设计的重要目标之一,特别是在便携式设备中,低功耗已超越面积和性能成为首要设计约束。过去的VLSI低功耗设计主要针对与/或(AND/OR)电路进行展开,研究表明相比传统的AND/OR电路,与/异或(AND/XOR)电路不仅有更好的可测试性,而且用其实现的算术逻辑部件、通信系统和错误校验等功能电路在功耗、面积等方面具有显著优势。因此,研究AND/XOR电路低功耗逻辑综合技术对发展和完善集成电路低功耗设计方法有重要意义。
工艺映射是一个按照给定工艺库中的逻辑门把逻辑函数分解成优化的电路结构的逻辑综合步骤,而低功耗映射是根据特定工艺映射一个功耗优化的工艺无关电路的过程。低功耗映射常用的解决方案是在逻辑综合行为级实现开关活动性最小化,如Tsui等提出的Modified Huffman算法、Zhou等提出的ExDcomp算法、Narayanan等提出的Narayananand Liu算法以及Zhou等提出的Zhou and Wong算法。AND/XOR电路低功耗映射通过将多输入AND/XOR门电路分解成功耗最小的二输入AND/XOR门电路实现。n个输入变量的AND/XOR电路有2n种固定极性里德穆勒(Fixed-Polarity Reed-Muller,FPRM)电路实现形式和3n种混合极性里德穆勒(Mixed-Polarity Reed-Muller,MPRM)电路实现形式。通常,AND/XOR电路以固定极性里德穆勒电路实现形式进行低功耗映射,而混合极性里德穆勒电路包含所有固定极性里德穆勒电路。因此,混合极性里德穆勒电路实现形式比固定极性里德穆勒电路实现形式更可能获得功耗最小的AND/XOR电路。
发明内容
本发明所要解决的技术问题是提供一种与/异或电路的最佳混合极性搜索方法,能够实现AND/XOR电路的功耗与面积综合最优化。
本发明解决上述技术问题所采用的技术方案为:一种与/异或电路的最佳混合极性搜索方法,首先定义极性P的与/异或电路的成本为Cost(P),其计算公式为:
Cost(P)=Earea(P)·w/Earea_max+Epow(P)·(1-w)/Epow_max
式中Earea(P)和Epow(P)分别为极性P的与/异或电路的面积成本和功耗成本,它们的估计公式分别为:
Earea(P)=m·AAND(P)+a·AXOR(P)
式中m是两输入与门的数量,a是两输入异或门的数量,AAND(P)和AXOR(P)分别为两输入与门和两输入异或门的面积代价,Cin和Cout分别为输入电容和输出电容,Vdd为电源电压;fclk为时钟频率,∑Cin(v)和∑Cout(v)分别为节点v的总负载输入电容和输出电容,Esw(v)为节点v的开关活动性,表示一个时钟周期内节点逻辑值变换的次数,Earea_max和Epow_max分别为与/异或电路的最大面积估计值和最大功耗估计值,w为权重值,且0≤w≤1;然后进行以下步骤:
1)对于输入变量个数为n的逻辑电路,产生非循环格雷码极性序列{g1,g2,...,gi,...},该非循环格雷码极性序列的演化规律为1→0→2→2→0→1→1→0→2→2→0→1......,其中i为非循环格雷码极性的位数,1≤i≤3n;
2)使用基于列表技术的混合极性转换算法来实现从最小项表达式得到i=1时的极性g1的混合极性里德穆勒的表达式,使用与/异或电路低功耗映射算法对极性g1的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射,然后利用面积估计公式:
Earea(g1)=m·AAND(g1)+a·AXOR(g1)
和功耗估计公式:
分别计算得到极性g1的与/异或电路的面积成本和功耗成本,将极性g1定义为当前极性,并作为整个与/异或电路的最佳极性,极性g1的与/异或电路成本:
Cost(g1)=Earea(g1)·w/Earea_max+Epow(g1)·(1-w)/Epow_max
作为整个与/异或电路的最小成本;
3)使用基于列表技术的混合极性间转换算法从当前极性的混合极性里德穆勒表达式得到下一位极性的混合极性里德穆勒表达式,使用与/异或电路低功耗映射算法对此位极性的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射,利用面积估计公式:
Earea(gi)=m·AAND(gi)+a·AXOR(gi)
和功耗估计公式:
分别计算得到此位极性的与/异或电路的面积成本和功耗成本;
4)定义步骤3)得到的此位极性为当前极性,若当前极性的与/异或电路成本:
Cost(gi)=Earea(g1)·w/Earea_max+Epow(gi)·(1-w)/Epow_max
小于整个与/异或电路的最小成本,则将当前极性作为整个与/异或电路的最佳极性,将当前极性的与/异或电路成本作为整个与/异或电路的最小成本;
5)判断当前极性的位数i是否≤3n,是则返回步骤3),否则极性搜索结束。
最大面积估计值Earea_max和最大功耗估计值Epower_max通过一轮穷尽搜索得到,其具体搜索过程为:
1)对于输入变量个数为n的逻辑电路,产生非循环格雷码极性序列{g1,g2,...,gi,...},该非循环格雷码极性序列的演化规律为1→0→2→2→0→1→1→0→2→2→0→1......,其中i为非循环格雷码极性的位数,1≤i≤3n;
2)使用基于列表技术的混合极性转换算法来实现从最小项表达式得到i=1时的极性g1的混合极性里德穆勒的表达式,使用与/异或电路低功耗映射算法对极性g1的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射,将极性g1定义为当前极性,用面积估计公式:
Earea(g1)=m·AAND(g1)+a·AXOR(g1)
和功耗估计公式:
估算极性g1的与/异或电路的功耗与面积成本,式中m是两输入与门的数量,a是两输入异或门的数量,AAND(gi)和AXOR(gi)分别为两输入与门和两输入异或门的面积代价,Cin为输入电容,Cout为输出电容,Vdd为电源电压,fclk为时钟频率,∑Cin(v)和∑Cout(v)分别为节点v的总负载输入电容和输出电容,Esw(v)为节点v的开关活动性,将当前极性g1的与/异或电路的功耗作为整个与/异或电路的最大功耗,将当前极性g1的与/异或电路的面积估计值作为整个与/异或电路的最大面积估计值;
3)使用基于列表技术的混合极性间转换算法从当前极性的混合极性里德穆勒表达式得到下一位极性的混合极性里德穆勒表达式,使用与/异或电路低功耗映射算法对此位极性的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射,用面积估计公式:
Earea(gi)=m·AAND(gi)+a·AXOR(gi)
和功耗估计公式:
估算此位极性的与/异或电路的功耗与面积成本,式中m是两输入与门的数量,a是两输入异或门的数量,AAND(gi)和AXOR(gi)分别为两输入与门和两输入异或门的面积代价,Cin为输入电容,Cout为输出电容,Vdd为电源电压,fclk为时钟频率,∑Cin(v)和∑Cout(v)分别为节点v的总负载输入电容和输出电容,Esw(v)为节点v的开关活动性;
4)定义步骤3)得到的此位极性为当前极性,若当前极性的与/异或电路功耗大于整个与/异或电路的最大功耗,则将当前极性的与/异或电路功耗作为整个与/异或电路的最大功耗;若当前极性的与/异或电路面积大于与/异或电路的最大面积,则将当前极性的与/异或电路面积作为整个与/异或电路的最大面积;
5)判断当前极性的位数i是否≤3n,是则返回步骤3),否则搜索结束。
使用基于列表技术的混合极性转换算法来实现从最小项表达式得到i=1时的极性g1的混合极性里德穆勒的表达式的步骤如下:
1)对于输入变量个数为n和输出变量个数为z的逻辑电路,先将该逻辑电路表示成布尔函数最小项表达式,将该表达式中每一个最小项都表示成列表行<πn-1...πj...π0,oz-1...ol...o0>,其中,0≤j≤n-1,0≤l≤z-1,若该最小项出现在第l个输出变量中,则ol=1,否则ol=0,若该最小项中的第j个变量以原变量形式出现,则πj=1,否则πj=0,定义第一空集和第二空集,然后把上述表达式中的所有列表行放入第一空集中得到第一集合,将i=1时的极性g1用极性P表达,并表示成三进制数形式的极性位(pn-1...pc...p0),0≤c≤n-1,针对极性P中的所有极性从c=0时的第1位极性位p0开始进行步骤2)中操作;
2)对第一集合中的所有列表行进行以下操作:若pc=2,则直接进入步骤5),若pc=0且πc=0,则产生新列表行<πn-1πn-2...πc+11πc-1...π0,oz-1oz-2...o0>,若pc=1且πc=1,则产生新列表行<πn-1πn-2...πc+10πc-1...π0,oz-1oz-2...o0>,将上述新的列表行放入第二空集得到第二集合,若已对第一集合中的所有列表行进行了以上操作则进入步骤3);
3)找到第一集合和第二集合中πn-1πn-2...π0项相同的两个列表行进行如下操作:将这两个列表行中的oz-1oz-2...o0项进行逐位异或运算,若异或运算结果为0,则将这两个列表行分别从第一集合和第二集合中删去,否则将异或运算结果替换这两个列表行中属于第一集合的列表行的oz-1oz-2...o0项,并将这两个列表行中属于第二集合的列表行删去,直至第一集合和第二集合中无πn-1πn-2...π0项相同的列表行,结束该步骤进入步骤4);
4)将第二集合中的列表行转移至第一集合中,若pc=1,则对第一集合中的列表行的πn-1πn-2...πc...π0项的πc值取反,进入步骤5);
5)判断是否遍历完极性P中所有的极性位,若没有遍历完,则转至下一极性进行步骤2)操作,否则算法结束,将第一集合中列表行表示成混合极性里德穆勒的表达式形式,即得到极性P的混合极性里德穆勒的表达式,也就是i=1时的极性g1的混合极性里德穆勒的表达式。
使用基于列表技术的混合极性间转换算法从当前极性的混合极性里德穆勒表达式得到下一位极性的混合极性里德穆勒表达式的步骤如下:
1)对于输入变量个数为n和输出变量个数为z的逻辑电路,对于当前极性PS的混合极性里德穆勒的表达式,先将当前极性PS和下一位极性PD分别表示成三进制数形式(pn-1pn-2...pj...p0)S和(pn-1pn-2...pj...p0)D,将当前极性的混合极性里德穆勒表达式中的每一个与项都表示成列表行<γn-1...γj...γ0,βz-1...βl...β0>,其中0≤j≤n-1,0≤l≤z-1,若pj=0,且该与项中的第j个变量以原变量形式出现,则γj=1,否则γj=0,若pj=1,且该与项中的第j个变量以反变量形式出现,则γj=1,否则γj=0,若pj=2,且该与项中的第j个变量以原变量形式出现,则γj=1,否则γj=0,若该与项出现在第l个输出变量中,则βl=1,否则βl=0,定义第三空集和第四空集,把当前极性PS的混合极性里德穆勒表达式中的所有列表行放入第三空集中形成第三集合,再定义数字 ,其中,(pc)S和(pc)D分别为当前极性PS和下一位极性PD的第c位极性位,针对数字Q中第1位数字位q0进行步骤2)中操作;
2)对第三集合中的所有列表行进行以下操作:若qc=0,则直接进入步骤5),若qc=1且γc=1,则产生新列表行<γn-1γn-2...γc+10γc-1...γ0,βz-1...βl...β0>,若qc=2且γc=0,则产生新列表行<γn-1γn-2...γc+1γc-1...γ0,βz-1...βl...β0>,若qc=3且(pc)S=2且γc=1,则产生新列表行<γn-1γn-2...γc+10γc-1...γ0,βz-1...βl...β0>,若qc=3且(pc)S=1且γc=0,则产生新列表行<γn-1γn-2...γc+11γc-1...γ0,βz-1...βl...β0>,将上述所有新列表行放入第四空集中形成第四集合,若已对第三集合中的所有列表行进行了以上操作则进入步骤3);
3)找到第四集合和第三集合中γn-1...γj...γ0项相同的两个列表行进行如下操作:将这两个列表行中的βz-1...βl...β0项进行逐位异或运算,若异或运算结果为0,则将这两个列表行分别从第三集合和第四集合中删去,否则将异或运算结果替换这两个列表行中属于第三集合的列表行的βz-1...βl...β0项,并将这两个列表行中属于第四集合的列表行删去,直至第四集合和第三集合中无γn-1...γj...γ0项相同的列表行,结束该步骤进入步骤4);
4)将第四集合中的列表行转移至第三集合中,若qc=3,则对第三集合中的列表行的γn-1γn-2...γc...γ0项的γc值取反,进入步骤5);
5)判断是否遍历完数字Q中所有的数字位,若没有遍历完,则转至下一数字位进行步骤2)操作,否则算法结束,将第三集合中列表行表示成混合极性里德穆勒表达式形式,即得到下一位极性PD的混合极性里德穆勒表达式。
使用与/异或电路低功耗映射算法对任一位极性的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射的具体方法为:
1)对于任一有n个基本输入变量和t个多输入与门的与/异或电路,首先将与/异或电路的基本输入变量{x0,x1,...,xn-1}的信号概率{pr(x0),pr(x1),...,pr(xn-1)}作为多输入与门的输入变量信号概率,对与/异或电路中多输入与门进行如下操作:使用多输入与门低功耗映射算法对多输入与门进行低功耗映射得到两输入与门电路,对于该两输入与门电路中某一两输入与门,在已知其输入节点vand_in1和vand_in2的信号概率pr(vand_in1)和pr(vand_in2)的条件下,由公式:
pr(vand_out)=pr(vand_in1)·pr(vand_in2)
计算得到该两输入与门输出节点vand_out的信号概率pr(vand_out),然后根据上述计算过程,将上一级两输入与门输出节点的信号概率作为下一级两输入与门输入节点的信号概率,逐级推得该两输入与门电路内部各个节点和最终输出节点的信号概率,在此基础上,根据公式:
ESW(vand)=2pr(vand)(1-vand)
计算得到两输入与门电路中任一节点vand的开关活动性Esw(vand),若对与/异或电路中所有多输入与门都执行过以上操作,则进入步骤2);
2)将步骤1)中计算得到的两输入与门电路的最终输出节点{v0,v1,...,vt-1}作为多输入异或门的基本输入变量,将两输入与门电路的最终输出节点的信号概率{pr(v0),pr(v1),...,pr(vt-1)}作为多输入异或门的基本输入变量的信号概率,对与/异或电路中多输入异或门进行如下操作:使用多输入异或门低功耗映射算法对多输入异或门进行低功耗映射得到两输入异或门电路,对于该两输入异或门电路中某一两输入异或门,在已知两输入异或门中输入节点vxor_in1和vxor_in2的信号概率pr(vxor_in1)和pr(vxor_in2)的条件下,由公式:
pr(vxor_out)=pr(vxor_in1)+pr(vxor_in2)-2·pr(vxor_in1)·pr(vxor_in2)
计算得到两输入异或门中输出节点vxor_out的信号概率pr(vxor_out),根据上述计算过程,将上一级两输入异或门输出节点的信号概率作为下一级两输入异或门输入节点的信号概率,逐级推得该两输入异或门电路内部各个节点和最终输出节点的信号概率,在此基础上,根据公式:
ESW(vxor)=2pr(vxor)(1-vxor)
计算得到两输入异或门电路中任一节点vxor的开关活动性Esw(vxor),若对与/异或电路中所有多输入异或门都执行过以上操作,则进入步骤3);
3)最后将步骤1)所得到的两输入与门电路的节点的开关活动性和步骤2)所得到的两输入异或门电路的节点的开关活动性进行累加,其结果即为进行低功耗映射后的与/异或电路的开关活动性。
使用多输入与门低功耗映射算法对多输入与门进行低功耗映射得到两输入与门电路的具体步骤为:
1)对于多输入与门的基本输入变量{x0,x1,...,xn-1},其信号概率为{pr(x0),pr(x1),...,pr(xn-1)},首先进行如下操作:将基本输入变量中信号概率小于等于0.5的基本输入变量放入第一变量序列C1,将基本输入变量中信号概率大于0.5的基本输入变量放入第二变量序列C2,然后按基本输入变量的信号概率从小到大的顺序对第一变量序列C1和第一变量序列C2中的基本输入变量进行排序,进入步骤2);
2)若第一变量序列C1中的变量个数大于等于2,则进入步骤3),若第一变量序列C1中的变量个数等于1,则将第一变量序列C1中的变量插入到第二变量序列C2的信号概率最小的变量的后面,进入步骤4),若第一变量序列C1中的变量个数等于0,则直接进入步骤4);
3)将第一变量序列C1中信号概率最小的两个变量进行结合,根据公式:
pr(vand_out)=pr(vand_in1)·pr(vand_in2)
计算该结合所得到的变量的信号概率,将这两个最小变量从第一变量序列C1中删除,把该结合所得到的变量插入到第一变量序列C1中信号概率最小的变量的后面,并返回步骤2);
4)若第二变量序列C2中的变量个数大于2,则进入步骤5),否则进入步骤6);
5)首先定义min{a,b}的值等于a和b两者中值较小的一个,然后进行如下操作:若第二变量序列C2中min{信号概率最小的两个变量的信号概率之积的值,1-信号概率最小的两个变量的信号概率之积}小于min{信号概率最大的两个变量的信号概率之积,1-信号概率最大的两个变量的信号概率之积}的值,则进入步骤6),否则取第二变量序列C2中信号概率最大的两个变量进行结合,根据公式:
pr(vand_out)=pr(vand_in1)·pr(vand_in2)
计算该结合所得输出变量的信号概率,将这两个最大变量从第二变量序列C2中删除,把该结合所得到的变量按信号概率大小插入到第二变量序列C2中,并返回步骤4);
6)若第二变量序列C2中的变量个数小于等于1,则算法结束,否则进入步骤7);
7)取第二变量序列C2中信号概率最小的两个变量进行结合,根据公式:
pr(vand_out)=pr(vand_in1)·pr(vand_in2)
计算该结合所得输出变量的信号概率,将这两个变量从第二变量序列C2中删除,把该结合所得到的变量插入第二变量序列C2的信号概率最小的变量的后面,并返回步骤6)。
根据多输入异或门低功耗映射算法对多输入异或门进行低功耗映射得到两输入异或门电路的具体步骤为:
1)首先将多输入异或门的基本输入变量{v0,v1,...,vt-1}放入第三变量序列C3中,然后根据它们信号概率{pr(v0),pr(v1),...,pr(vt-1)}按min{pr(vu),1-pr(vu)}从小到大的顺序对第三变量序列C3中变量进行排序,其中0≤u≤t-1,进入步骤2);
2)若第三变量序列C3中变量的个数小于等于1,则算法结束,否则进入步骤3);
3)取第三变量序列C3中min{pr(vu),1-pr(vu)}最小的两个变量进行结合,将这两个变量从第三变量序列C3中删除,并根据公式:
pr(vxor_out)=pr(vxor_in1)+pr(vxor_in2)-2·pr(vxor_in1)·pr(vxor_in2)
计算该结合所得到的变量的信号概率,把该结合所得到的变量按min{pr(vu),1-pr(vu)}值的大小插入第三变量序列C3中,并返回步骤2)。
与现有技术相比,本发明的优点在于提出一种以电路节点开关活动性最小化为目的快速与/异或电路低功耗映射算法。该算法在低功耗映射的基础上根据功耗和面积估计模型估算与/异或电路的功耗和面积,利用极性转换技术快速地获得任意极性下混合极性里德穆勒电路,沿非循环格雷码路径遍历所有混合极性,有效地实现与/异或电路的功耗与面积综合最优化。
为了验证本发明方法的有效性,对多个MCNC和ISCAS基准电路进行仿真测试,其中所有的算法均用C语言实现,通过GCC编译,在Linux操作系统运行,程序的硬件运行环境为Pentium 4 CPU(2.8GHZ)1G RAM。所用测试电路均采用MCNC和ISCAS基准电路,若所用测试电路不是PLA格式,则使用逻辑综合与优化工具SIS将其转换成PLA格式。所选测试电路均经过SIS Espresso工具优化,得到最简两级与/或电路。时钟频率fclk固定为20MHz,电源电压Vdd等于5V,电路映射选用SIS mcnc.genlib工艺库,工艺库中逻辑门参数如图1所示,其中“面积”为两输入与门和异或门的面积代价,Cin_A、Cin_B和Cout分别为输入和输出电容参数。测试过程中,假定所有基本输入变量的信号概率都为0.5,随机选取的18个输入变量为3~12的中小规模基准电路针对不同的权重w对其进行测试,实验结果如图2所示,其中含有两组对比数据,如“FPRM”和“AND/OR”栏,分别为与/异或电路固定极性里德穆勒实现形式优化方案和与/或电路优化方案。图2中“name”、“in”和“out”分别为基准电路的名称、输入变量和输出变量个数;“area”和“power”分别表示电路的面积和功耗;“AND/XOR”栏中数据为在不同的权重w下测试电路经本发明的方法优化后此电路的面积和功耗。
由图2中18个测试电路的优化结果可知:本发明的方法要优于与/异或电路固定极性里德穆勒实现方法,且最大平均节省电路面积和功耗分别为14.13%和44.22%;实验结果表明对于部分电路,如xor5、rd53、rd73、rd84、prom1、br1等,若选用与/异或电路实现形式要明显优于与/或电路实现形式,相比与/或电路实现形式,与/异或电路实现形式最大平均节省电路面积和功耗分别为32.72%和60.09%。同时,权重w对与/异或电路性能的影响如图3所示:当w=0时,电路面积优化最佳,但对电路功耗优较差;当1<w<0时,能对电路的面积和功耗进行综合优化,且当w≈0.5时,电路的面积和功耗综合优化最佳;当w=1时,电路功耗优化最佳,但对电路面积优较差。本发明的方法所用CPU时间与电路规模直接相关:当电路规模较大时,CPU时间长,如newapla的CPU时间超过33分钟;当电路规模较小时,CPU时间短,如tcheck的CPU时间几乎为0。
通过对18个MCNC和ISCAS基准电路测试表明本发明的方法要优于传统与/异或电路固定极性里德穆勒电路实现形式优化方案,并验证了部分电路使用与/异或电路实现形式明显优于与/或电路实现形式,且当w≈0.5时该方法对与/异或电路的功耗和面积综合优化的效果最佳。
附图说明
图1为对本发明的方法进行仿真测试时测试电路选用的工艺库的逻辑门参数列表;
图2为本发明的方法及传统与/异或电路固定极性里德穆勒电路实现形式优化方法及与/或电路实现形式优化方法的比较结果表;
图3为权重w对与/异或电路性能的影响的示意图,其中(a)为与固定极性里德穆勒电路优化结果相比不同权重w下混合极性里德穆勒电路功耗和面积节省率,(b)为与与/或电路优化结果相比不同权重w下混合极性里德穆勒电路功耗和面积节省率。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述。
一种与/异或电路的最佳混合极性搜索方法,首先定义极性P的与/异或电路的成本为Cost(P),其计算公式为:
Cost(P)=Earea(P)·w/Earea_max+Epow(P)·(1-w)/Epow_max
式中Earea(P)和Epow(P)分别为极性P的与/异或电路的面积成本和功耗成本,Earea_max和Epow_max分别为与/异或电路的最大面积估计值和最大功耗估计值,w为权重值,且0≤w≤1,面积成本Earea(P)的估计公式为:
Earea(P)=m·AAND(P)+a·AXOR(P)
功耗成本Epow(P)的估计公式为
式中m是两输入与门的数量,a是两输入异或门的数量,AAND(P)和AXOR(P)分别为两输入与门和两输入异或门的面积代价,Cin和Cout分别为输入电容和输出电容,Vdd为电源电压,fclk为时钟频率,∑Cin(v)和∑Cout(v)分别为节点v的总负载输入电容和输出电容,Esw(v)为节点v的开关活动性,表示一个时钟周期内节点逻辑值变换的次数;然后进行以下步骤:
1)对于输入变量个数为n的逻辑电路,产生非循环格雷码极性序列{g1,g2,...,gi,...},该非循环格雷码极性序列的演化规律为1→0→2→2→0→1→1→0→2→2→0→1......,其中i为非循环格雷码极性的位数,1≤i≤3n;
2)使用基于列表技术的混合极性转换算法来实现从最小项表达式得到i=1时的极性g1的混合极性里德穆勒的表达式,使用与/异或电路低功耗映射算法对极性g1的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射,然后利用面积估计公式:
Earea(g1)=m·AAND(g1)+a·AXOR(g1)
和功耗估计公式:
分别计算得到极性g1的与/异或电路的面积成本和功耗成本,将极性g1定义为当前极性,并作为整个与/异或电路的最佳极性,极性g1的与/异或电路成本:
Cost(g1)=Earea(g1)·w/Earea_max+Epow(g1)·(1-w)/Epow_max
作为整个与/异或电路的最小成本;
3)使用基于列表技术的混合极性间转换算法从当前极性的混合极性里德穆勒表达式得到下一位极性的混合极性里德穆勒表达式,使用与/异或电路低功耗映射算法对此位极性的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射,利用面积估计公式:
Earea(gi)=m·AAND(gi)+a·AXOR(gi)
和功耗估计公式:
分别计算得到此位极性的与/异或电路的面积成本和功耗成本;
4)定义步骤3)得到的此位极性为当前极性,若当前极性的与/异或电路成本:
Cost(gi)=Earea(g1)·w/Earea_max+Epow(gi)·(1-w)/Epow_max
小于整个与/异或电路的最小成本,则将当前极性作为整个与/异或电路的最佳极性,将当前极性的与/异或电路成本作为整个与/异或电路的最小成本;
5)判断当前极性的位数i是否≤3n,是则返回步骤3),否则极性搜索结束。
最大面积估计值Earea_max和最大功耗估计值Epower_max通过一轮穷尽搜索得到,其具体搜索过程为:
1)对于输入变量个数为n的逻辑电路,产生非循环格雷码极性序列{g1,g2,...,gi,...},该非循环格雷码极性序列的演化规律为1→0→2→2→0→1→1→0→2→2→0→1......,其中i为非循环格雷码极性的位数,1≤i≤3n;
2)使用基于列表技术的混合极性转换算法来实现从最小项表达式得到i=1时的极性g1的混合极性里德穆勒的表达式,使用与/异或电路低功耗映射算法对极性g1的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射,将极性g1定义为当前极性,用面积估计公式:
Earea(g1)=m·AAND(g1)+a·AXOR(g1)
和功耗估计公式:
估算极性g1的与/异或电路的功耗与面积成本,式中m是两输入与门的数量,a是两输入异或门的数量,AAND(gi)和AXOR(gi)分别为两输入与门和两输入异或门的面积代价,Cin为输入电容,Cout为输出电容,Vdd为电源电压,fclk为时钟频率,∑Cin(v)和∑Cout(v)分别为节点v的总负载输入电容和输出电容,Esw(v)为节点v的开关活动性,将当前极性g1的与/异或电路的功耗作为整个与/异或电路的最大功耗,将当前极性g1的与/异或电路的面积估计值作为整个与/异或电路的最大面积估计值;
3)使用基于列表技术的混合极性间转换算法从当前极性的混合极性里德穆勒表达式得到下一位极性的混合极性里德穆勒表达式,使用与/异或电路低功耗映射算法对此位极性的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射,用面积估计公式
Earea(gi)=m·AAND(gi)+a·AXOR(gi)
和功耗估计公式
估算此位极性的与/异或电路的功耗与面积成本,式中m是两输入与门的数量,a是两输入异或门的数量,AAND(gi)和AXOR(gi)分别为两输入与门和两输入异或门的面积代价,Cin为输入电容,Cout为输出电容,Vdd为电源电压,fclk为时钟频率,∑Cin(v)和∑Cout(v)分别为节点v的总负载输入电容和输出电容,Esw(v)为节点v的开关活动性;
4)定义步骤3)得到的此位极性为当前极性,若当前极性的与/异或电路功耗大于整个与/异或电路的最大功耗,则将当前极性的与/异或电路功耗作为整个与/异或电路的最大功耗;若当前极性的与/异或电路面积大于与/异或电路的最大面积,则将当前极性的与/异或电路面积作为整个与/异或电路的最大面积;
5)判断当前极性的位数i是否≤3n,是则返回步骤3),否则搜索结束。
使用基于列表技术的混合极性转换算法来实现从最小项表达式得到i=1时的极性g1的混合极性里德穆勒的表达式的步骤如下:
1)对于输入变量个数为n和输出变量个数为z的逻辑电路,先将该逻辑电路表示成布尔函数最小项表达式,将该表达式中每一个最小项都表示成列表行<πn-1...πj...π0,oz-1...ol...o0>,其中,0≤j≤n-1,0≤l≤z-1,若该最小项出现在第l个输出变量中,则ol=1,否则ol=0,若该最小项中的第j个变量以原变量形式出现,则πj=1,否则πj=0,定义第一空集Ω1和第二空集Ω2,然后把上述表达式中的所有列表行放入第一空集Ω1中得到第一集合Φ1,将i=1时的极性g1用极性P表达,并表示成三进制数形式的极性位(pn-1...pc...p0),0≤c≤n-1,针对极性P中的所有极性从c=0时的第1位极性位p0开始进行步骤2)中操作;
2)对第一集合Φ1中的所有列表行进行以下操作:若pc=2,则直接进入步骤5),若pc=0且πc=0,则产生新列表行<πn-1πn-2...πc+11πc-1...π0,oz-1oz-2...o0>,若pc=1且πc=1,则产生新列表行<πn-1πn-2...πc+10πc-1...π0,oz-1oz-2...o0>,将上述新的列表行放入第二空集Ω2得到第二集合Φ2,若已对第一集合Φ1中的所有列表行进行了以上操作则进入步骤3);
3)找到第一集合Φ1和第二集合Φ2中πn-1πn-2...π0项相同的两个列表行进行如下操作:将这两个列表行中的oz-1oz-2...o0项进行逐位异或运算,若异或运算结果为0,则将这两个列表行分别从第一集合Φ1和第二集合Φ2中删去,否则将异或运算结果替换这两个列表行中属于第一集合Φ1的列表行的oz-1oz-2...o0项,并将这两个列表行中属于第二集合Φ2的列表行删去,直至第一集合Φ1和第二集合Φ2中无πn-1πn-2...π0项相同的列表行,结束该步骤进入步骤4);
4)将第二集合Φ2中的列表行转移至第一集合Φ1中,若pc=1,则对第一集合Φ1中的列表行的πn-1πn-2...πc...π0项的πc值取反,进入步骤5);
5)判断是否遍历完极性P中所有的极性位,若没有遍历完,则转至下一极性进行步骤2)操作,否则算法结束,将第一集合Φ1中列表行表示成混合极性里德穆勒的表达式形式,即得到极性P的混合极性里德穆勒的表达式,也就是i=1时的极性g1的混合极性里德穆勒的表达式。
使用基于列表技术的混合极性间转换算法从当前极性的混合极性里德穆勒表达式得到下一位极性的混合极性里德穆勒表达式的步骤如下:
1)对于输入变量个数为n和输出变量个数为z的逻辑电路,对于当前极性PS的混合极性里德穆勒的表达式,先将当前极性PS和下一位极性PD分别表示成三进制数形式(pn-1pn-2...pj...p0)S和(pn-1pn-2...pj...p0)D,将当前极性的混合极性里德穆勒表达式中的每一个与项都表示成列表行<γn-1...γj...γ0,βz-1...βl...β0>,其中0≤j≤n-1,0≤l≤z-1,若pj=0,且该与项中的第j个变量以原变量形式出现,则γj=1,否则γj=0,若pj=1,且该与项中的第j个变量以反变量形式出现,则γj=1,否则γj=0,若pj=2,且该与项中的第j个变量以原变量形式出现,则γj=1,否则γj=0,若该与项出现在第l个输出变量中,则βl=1,否则βl=0,定义第三空集Ω3和第四空集Ω4,把当前极性PS的混合极性里德穆勒表达式中的所有列表行放入第三空集Ω3中形成第三集合Φ3,再定义数字,其中,(pc)S和(pc)D分别为当前极性PS和下一位极性PD的第c位极性位,针对数字Q中第1位数字位q0进行步骤2)中操作;
2)对第三集合Φ3的所有列表行进行以下操作:若qc=0,则直接进入步骤5),若qc=1且γc=1,则产生新列表行<γn-1γn-2...γc+10γc-1...γ0,βz-1...βl...β0>,若qc=2且γc=0,则产生新列表行<γn-1γn-2...γc+11γc-1...γ0,βz-1...βl...β0>,若qc=3且(pc)S=2且γc=1,则产生新列表行<γn-1γn-2...γc+10γc-1...γ0,βz-1...βl...β0>,若qc=3且(pc)S=1且γc=0,则产生新列表行<γn-1γn-2...γc+11γc-1...γ0,βz-1...βl...β0>,将上述所有新列表行放入第四空集Ω4中形成第四集合Φ4,若已对第三集合Φ3中的所有列表行进行了以上操作则进入步骤3);
3)找到第四集合Φ4和第三集合Φ3中γn-1...γj...γ0项相同的两个列表行进行如下操作:将这两个列表行中的βz-1...βl..β0项进行逐位异或运算,若异或运算结果为0,则将这两个列表行分别从第三集合Φ3和第四集合Φ4中删去,否则将异或运算结果替换这两个列表行中属于第三集合Φ3的列表行的βz-1...βl...β0项,并将这两个列表行中属于第四集合Φ4的列表行删去,直至第四集合Φ4和第三集合Φ3中无γn-1...γj...γ0项相同的列表行,结束该步骤进入步骤4);
4)将第四集合Φ4中的列表行转移至第三集合Φ3中,若qc=3,则对第三集合Φ3中的列表行的γn-1γn-2...γc...γ0项的γc值取反,进入步骤5);
5)判断是否遍历完数字Q中所有的数字位,若没有遍历完,则转至下一数字位进行步骤2)操作,否则算法结束,将第三集合Φ3中列表行表示成混合极性里德穆勒表达式形式,即得到下一位极性PD的混合极性里德穆勒表达式。
使用与/异或电路低功耗映射算法对任一位极性的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射的具体方法为:
1)对于任一有n个基本输入变量和t个多输入与门的与/异或电路,首先将与/异或电路的基本输入变量{x0,x1,...,xn-1}的信号概率{pr(x0),pr(x1),...,pr(xn-1)}作为多输入与门的输入变量信号概率,对与/异或电路中多输入与门进行如下操作:使用多输入与门低功耗映射算法对多输入与门进行低功耗映射得到两输入与门电路,对于该两输入与门电路中某一两输入与门,在已知其输入节点vand_in1和vand_in2的信号概率pr(vand_in1)和pr(vand_in2)的条件下,由公式:
pr(vand_out)=pr(vand_in1)·pr(vand_in2)
计算得到该两输入与门输出节点vand_out的信号概率pr(vand_out),然后根据上述计算过程,将上一级两输入与门输出节点的信号概率作为下一级两输入与门输入节点的信号概率,逐级推得该两输入与门电路内部各个节点和最终输出节点的信号概率,在此基础上,根据公式:
ESW(vand)=2pr(vand)(1-vand)
计算得到两输入与门电路中任一节点vand的开关活动性Esw(vand),若对与/异或电路中所有多输入与门都执行过以上操作,则进入步骤2);
2)将步骤1)中计算得到的两输入与门电路的最终输出节点{v0,v1,...,vt-1}作为多输入异或门的基本输入变量,将两输入与门电路的最终输出节点的信号概率{pr(v0),pr(v1),...,pr(vt-1)}作为多输入异或门的基本输入变量的信号概率,对与/异或电路中多输入异或门进行如下操作:使用多输入异或门低功耗映射算法对多输入异或门进行低功耗映射得到两输入异或门电路,对于该两输入异或门电路中某一两输入异或门,在已知两输入异或门中输入节点vxor_in1和vxor_in2的信号概率pr(vxor_in1)和pr(vxor_in2)的条件下,由公式:
pr(vxor_out)=pr(vxor_in1)+pr(vxor_in2)-2·pr(vxor_in1)·pr(vxor_in2)
计算得到两输入异或门中输出节点vxor_out的信号概率pr(vxor_out),根据上述计算过程,将上一级两输入异或门输出节点的信号概率作为下一级两输入异或门输入节点的信号概率,逐级推得该两输入异或门电路内部各个节点和最终输出节点的信号概率,在此基础上,根据公式:
ESW(vxor)=2pr(vxor)(1-vxor)
计算得到两输入异或门电路中任一节点vxor的开关活动性Esw(vxor),若对与/异或电路中所有多输入异或门都执行过以上操作,则进入步骤3);
3)最后将步骤1)所得到的两输入与门电路的节点的开关活动性和步骤2)所得到的两输入异或门电路的节点的开关活动性进行累加,其结果即为进行低功耗映射后的与/异或电路的开关活动性。
使用多输入与门低功耗映射算法对多输入与门进行低功耗映射得到两输入与门电路的具体步骤为:
1)对于多输入与门的基本输入变量{x0,x1,...,xn-1},其信号概率为{pr(x0),pr(x1),...,pr(xn-1)},首先进行如下操作:将基本输入变量中信号概率小于等于0.5的基本输入变量放入第一变量序列C1,将基本输入变量中信号概率大于0.5的基本输入变量放入第二变量序列C2,然后按基本输入变量的信号概率从小到大的顺序对第一变量序列C1和第一变量序列C2中的基本输入变量进行排序,进入步骤2);
2)若第一变量序列C1中的变量个数大于等于2,则进入步骤3),若第一变量序列C1中的变量个数等于1,则将第一变量序列C1中的变量插入到第二变量序列C2的信号概率最小的变量的后面,进入步骤4),若第一变量序列C1中的变量个数等于0,则直接进入步骤4);
3)将第一变量序列C1中信号概率最小的两个变量进行结合,根据公式:
pr(vand_out)=pr(vand_in1)·pr(vand_in2)
计算该结合所得到的变量的信号概率,将这两个最小变量从第一变量序列C1中删除,把该结合所得到的变量插入到第一变量序列C1中信号概率最小的变量的后面,并返回步骤2);
4)若第二变量序列C2中的变量个数大于2,则进入步骤5),否则进入步骤6);
5)首先定义min{a,b}的值等于a和b两者中值较小的一个,然后进行如下操作:若第二变量序列C2中min{信号概率最小的两个变量的信号概率之积,1-信号概率最小的两个变量的信号概率之积}的值小于min{信号概率最大的两个变量的信号概率之积,1-信号概率最大的两个变量的信号概率之积}的值,则进入步骤6),否则取第二变量序列C2中信号概率最大的两个变量进行结合,根据公式:
pr(vand_out)=pr(vand_in1)·pr(vand_in2)
计算该结合所得输出变量的信号概率,将这两个最大变量从第二变量序列C2中删除,把该结合所得到的变量按信号概率大小插入到第二变量序列C2中,并返回步骤4);
6)若第二变量序列C2中的变量个数小于等于1,则算法结束,否则进入步骤7);
7)取第二变量序列C2中信号概率最小的两个变量进行结合,根据公式:
pr(vand_out)=pr(vand_in1)·pr(vand_in2)
计算该结合所得输出变量的信号概率,将这两个变量从第二变量序列C2中删除,将把结合所得到的变量插入到第二变量序列C2的信号概率最小的变量的后面,并返回步骤6)。
根据多输入异或门低功耗映射算法对多输入异或门进行低功耗映射得到两输入异或门电路的具体步骤为:
1)首先将多输入异或门的基本输入变量{v0,v1,...,vt-1}放入第三变量序列C3中,然后根据它们信号概率{pr(v0),pr(v1),...,pr(vt-1)}按min{pr(vu),1-pr(vu)}从小到大的顺序对第三变量序列C3中变量进行排序,其中0≤u≤t-1,进入步骤2);
2)若第三变量序列C3中变量的个数小于等于1,则算法结束,否则进入步骤3);
3)取第三变量序列C3中min{pr(vu),1-pr(vu)}最小的两个变量进行结合,将该两个变量从第三变量序列C3中删除,并根据公式:
pr(vxor_out)=pr(vxor_in1)+pr(vxor_in2)-2·pr(vxor_in1)·pr(vxor_in2)
计算该结合所得到的变量的信号概率,把该结合所得到的变量按min{pr(vu),1-pr(vu)}值的大小插入到第三变量序列C3中,并返回步骤2)。
Claims (5)
1.一种与/异或电路的最佳混合极性搜索方法,其特征在于首先定义极性P的与/异或电路的成本为Cost(P),其计算公式为:
Cost(P)=Earea(P)·w/Earea_max+Epow(P)·(1-w)/Epow_max
式中Earea(P)和Epow(P)分别为极性P的与/异或电路的面积成本和功耗成本,它们的估计公式分别为:
Earea(P)=m·AAND(P)+a·AXOR(P)
式中m是两输入与门的数量,a是两输入异或门的数量,AAND(P)和AXOR(P)分别为两输入与门和两输入异或门的面积代价,Cin和Cout分别为输入电容和输出电容,Vdd为电源电压,fclk为时钟频率,∑Cin(v)和∑Cout(v)分别为节点v的总负载输入电容和输出电容,Esw(v)为节点v的开关活动性,表示一个时钟周期内节点逻辑值变换的次数,Earea_max和Epow_max分别为与/异或电路的最大面积估计值和最大功耗估计值,w为权重值,且0≤w≤1;然后进行以下步骤:
1)对于输入变量个数为n的逻辑电路,产生非循环格雷码极性序列{g1,g2,…,gi,…},该非循环格雷码极性序列的演化规律为1→0→2→2→0→1→1→0→2→2→0→1……,其中i为非循环格雷码极性的位数,1≤i≤3n;
2)使用基于列表技术的混合极性转换算法来实现从最小项表达式得到i=1时的极性g1的混合极性里德穆勒的表达式,使用与/异或电路低功耗映射算法对极性g1的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射,然后利用面积估计公式:
Earea(g1)=m·AAND(g1)+a·AXOR(g1)
和功耗估计公式
分别计算得到极性g1的与/异或电路的面积成本和功耗成本,将极性g1定义为当前极性,并作为整个与/异或电路的最佳极性,极性g1的与/异或电路成本:
Cost(g1)=Earea(g1)·w/Earea_max+Epow(g1)·(1-w)/Epow_max
作为整个与/异或电路的最小成本;
3)使用基于列表技术的混合极性间转换算法从当前极性的混合极性里德穆勒表达式得到下一位极性的混合极性里德穆勒表达式,使用与/异或电路低功耗映射算法对此位极性的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射,利用面积估计公式:
Earea(gi)=m·AAND(gi)+a·AXOR(gi)
和功耗估计公式:
分别计算得到此位极性的与/异或电路的面积成本和功耗成本;
4)定义步骤3)得到的此位极性为当前极性,若当前极性的与/异或电路成本:
Cost(gi)=Earea(g1)·w/Earea_max+Epow(gi)·(1-w)/Epow_max
小于整个与/异或电路的最小成本,则将当前极性作为整个与/异或电路的最佳极性,将当前极性的与/异或电路成本作为整个与/异或电路的最小成本;
5)判断当前极性的位数i是否≤3n,是则返回步骤3),否则极性搜索结束;
最大面积估计值Earea_max和最大功耗估计值Epower_max通过一轮穷尽搜索得到,其具体搜索过程为:
1)对于输入变量个数为n的逻辑电路,产生非循环格雷码极性序列{g1,g2,…,gi,…},该非循环格雷码极性序列的演化规律为1→0→2→2→0→1→1→0→2→2→0→1……,其中i为非循环格雷码极性的位数,1≤i≤3n;
2)使用基于列表技术的混合极性转换算法来实现从最小项表达式得到i=1时的极性g1的混合极性里德穆勒的表达式,使用与/异或电路低功耗映射算法对极性g1的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射,将极性g1定义为当前极性,用面积估计公式:
Earea(g1)=m·AAND(g1)+a·AXOR(g1)
和功耗估计公式:
估算极性g1的与/异或电路的功耗与面积成本,式中m是两输入与门的数量,a是两输入异或门的数量,AAND(gi)和AXOR(gi)分别为两输入与门和两输入异或门的面积代价,Cin为输入电容,Cout为输出电容,Vdd为电源电压,fclk为时钟频率,∑Cin(v)和∑Cout(v)分别为节点v的总负载输入电容和输出电容,Esw(v)为节点v的开关活动性,将当前极性g1的与/异或电路的功耗作为整个与/异或电路的最大功耗,将当前极性g1的与/异或电路的面积估计值作为整个与/异或电路的最大面积估计值;
3)使用基于列表技术的混合极性间转换算法从当前极性的混合极性里德穆勒表达式得到下一位极性的混合极性里德穆勒表达式,使用与/异或电路低功耗映射算法对此位极性的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射,用面积估计公式
Earea(gi)=m·AAND(gi)+a·AXOR(gi)
和功耗估计公式
估算此位极性的与/异或电路的功耗与面积成本,式中m是两输入与门的数量,a是两输入异或门的数量,AAND(gi)和AXOR(gi)分别为两输入与门和两输入异或门的面积代价,Cin为输入电容,Cout为输出电容,Vdd为电源电压,fclk为时钟频率,∑Cin(v)和∑Cout(v)分别为节点v的总负载输入电容和输出电容,Esw(v)为节点v的开关活动性;
4)定义步骤3)得到的此位极性为当前极性,若当前极性的与/异或电路功耗大于整个与/异或电路的最大功耗,则将当前极性的与/异或电路功耗作为整个与/异或电路的最大功耗;若当前极性的与/异或电路面积大于与/异或电路的最大面积,则将当前极性的与/异或电路面积作为整个与/异或电路的最大面积;
5)判断当前极性的位数i是否≤3n,是则返回步骤3),否则搜索结束;
使用与/异或电路低功耗映射算法对任一位极性的混合极性里德穆勒表达式进行两输入与/异或电路的低功耗映射的具体方法为:
1)对于任一有n个基本输入变量和t个多输入与门的与/异或电路,首先将与/异或电路的基本输入变量{x0,x1,…,xn-1}的信号概率{pr(x0),pr(x1),…,pr(xn-1)}作为多输入与门的输入变量信号概率,对与/异或电路中多输入与门进行如下操作:使用多输入与门低功耗映射算法对多输入与门进行低功耗映射得到两输入与门电路,对于该两输入与门电路中某一两输入与门,在已知其输入节点vand_in1和vand_in2的信号概率pr(vand_in1)和pr(vand_in2)的条件下,由公式:
pr(vand_out)=pr(vand_in1)·pr(vand_in2)
计算得到该两输入与门输出节点vand_out的信号概率pr(vand_out),然后根据上述计算过程,将上一级两输入与门输出节点的信号概率作为下一级两输入与门输入节点的信号概率,逐级推得该两输入与门电路内部各个节点和最终输出节点的信号概率,在此基础上,根据公式:
ESW(vand)=2pr(vand)(1-pr(vand))
计算得到两输入与门电路中任一节点vand的开关活动性Esw(vand),若对与/异或电路中所有多输入与门都执行过以上操作,则进入步骤2);
2)将步骤1)中计算得到的两输入与门电路的最终输出节点{v0,v1,…,vt-1}作为多输入异或门的基本输入变量,将两输入与门电路的最终输出节点的信号概率{pr(v0),pr(v1),…,pr(vt-1)}作为多输入异或门的基本输入变量的信号概率,对与/异或电路中多输入异或门进行如下操作:使用多输入异或门低功耗映射算法对多输入异或门进行低功耗映射得到两输入异或门电路,对于该两输入异或门电路中某一两输入异或门,在已知两输入异或门中输入节点vxor_in1和vxor_in2的信号概率pr(vxor_in1)和pr(vxor_in2)的条件下,由公式:
pr(vxor_out)=pr(vxor_in1)+pr(vxor_in2)-2·pr(vxor_in1)·pr(vxor_in2)
计算得到两输入异或门中输出节点vxor_out的信号概率pr(vxor_out),根据上述计算过程,将上一级两输入异或门输出节点的信号概率作为下一级两输入异或门输入节点的信号概率,逐级推得该两输入异或门电路内部各个节点和最终输出节点的信号概率,在此基础上,根据公式:
ESW(vxor)=2pr(vxor)(1-pr(vxor))
计算得到两输入异或门电路中任一节点vxor的开关活动性Esw(vxor),若对与/异或电路中所有多输入异或门都执行过以上操作,则进入步骤3);
3)最后将步骤1)所得到的两输入与门电路的节点的开关活动性和步骤2)所得到的两输入异或门电路的节点的开关活动性进行累加,其结果即为进行低功耗映射后的与/异或电路的开关活动性。
2.如权利要求1所述的一种与/异或电路的最佳混合极性搜索方法,其特征在于使用基于列表技术的混合极性转换算法来实现从最小项表达式得到i=1时的极性g1的混合极性里德穆勒的表达式的步骤如下:
1)对于输入变量个数为n和输出变量个数为z的逻辑电路,先将该逻辑电路表示成布尔函数最小项表达式,将该表达式中每一个最小项都表示成列表行<πn-1…πj…π0,oz-1…ol…o0>,其中,0≤j≤n-1,0≤l≤z-1,若该最小项出现在第l个输出变量中,则ol=1,否则ol=0,若该最小项中的第j个变量以原变量形式出现,则πj=1,否则πj=0,定义第一空集和第二空集,然后把上述表达式中的所有列表行放入第一空集中得到第一集合,将i=1时的极性g1用极性P表达,并表示成三进制数形式的极性位(pn-1…pc…p0),0≤c≤n-1,针对极性P中的所有极性从c=0时的第1位极性位p0开始进行步骤2)中操作;
2)对第一集合中的所有列表行进行以下操作:若pc=2,则直接进入步骤5),若pc=0且πc=0,则产生新列表行<πn-1πn-2…πc+11πc-1…π0,oz-1oz-2…o0>,若pc=1且πc=1,则产生新列表行<πn-1πn-2…πc+10πc-1…π0,oz-1oz-2…o0>,将上述新的列表行放入第二空集得到第二集合,若已对第一集合中的所有列表行进行了以上操作则进入步骤3);
3)找到第一集合和第二集合中πn-1πn-2…π0项相同的两个列表行进行如下操作:将这两个列表行中的oz-1oz-2…o0项进行逐位异或运算,若异或运算结果为0,则将这两个列表行分别从第一集合和第二集合中删去,否则将异或运算结果替换这两个列表行中属于第一集合的列表行的oz-1oz-2…o0项,并将这两个列表行中属于第二集合的列表行删去,直至第一集合和第二集合中无πn-1πn-2…π0项相同的列表行,结束该步骤进入步骤4);
4)将第二集合中的列表行转移至第一集合中,若pc=1,则对第一集合中的列表行的πn-1πn-2…πc…π0项的πc值取反,进入步骤5);
5)判断是否遍历完极性P中所有的极性位,若没有遍历完,则转至下一极性进行步骤2)操作,否则算法结束,将第一集合中列表行表示成混合极性里德穆勒的表达式形式,即得到极性P的混合极性里德穆勒的表达式,也就是i=1时的极性g1的混合极性里德穆勒的表达式。
3.如权利要求1所述的一种与/异或电路的最佳混合极性搜索方法,其特征在于使用基于列表技术的混合极性间转换算法从当前极性的混合极性里德穆勒表达式得到下一位极性的混合极性里德穆勒表达式的步骤如下:
1)对于输入变量个数为n和输出变量个数为z的逻辑电路,对于当前极性PS的混合极性里德穆勒的表达式,先将当前极性PS和下一位极性PD分别表示成三进制数形式(pn-1pn-2…pj…p0)S和(pn-1pn-2…pj…p0)D,将当前极性的混合极性里德穆勒表达式中的每一个与项都表示成列表行<γn-1…γj…γ0,βz-1…βl…β0>,其中0≤j≤n-1,0≤l≤z-1,当pj=0时,若该与项中的第j个变量以原变量形式出现,则γj=1,否则γj=0,当pj=1时,若该与项中的第j个变量以反变量形式出现,则γj=1,否则γj=0,当pj=2时,若该与项中的第j个变量以原变量形式出现,则γj=1,否则γj=0,若该与项出现在第l个输出变量中,则βl=1,否则βl=0,定义第三空集和第四空集,把当前极性PS的混合极性里德穆勒表达式中的所有列表行放入第三空集中形成第三集合,再定义数字Q=qn-1qn-2…qc…q0=PS⊕PD,其中qc=(pc)S⊕(pc)D,(pc)S和(pc)D分别为当前极性PS和下一位极性PD的第c位极性位,针对数字Q中第1位数字位q0进行步骤2)中操作;
2)对第三集合的所有列表行进行以下操作:若qc=0,则直接进入步骤5),若qc=1且γc=1,则产生新列表行<γn-1γn-2…γc+10γc-1…γ0,βz-1…βl…β0>,若qc=2且γc=0,则产生新列表行<γn-1γn-2…γc+11γc-1…γ0,βz-1…βl…β0>,若qc=3且(pc)S=2且γc=1,则产生新列表行<γn-1γn-2…γc+10γc-1…γ0,βz-1…βl…β0>,若qc=3且(pc)S=1且γc=0,则产生新列表行<γn-1γn-2…γc+11γc-1…γ0,βz-1…βl…β0>,将上述所有新列表行放入第四空集中形成第四集合,若已对第三集合中的所有列表行进行了以上操作则进入步骤3);
3)找到第四集合和第三集合中γn-1…γj…γ0项相同的两个列表行进行如下操作:将这两个列表行中的βz-1…βl…β0项进行逐位异或运算,若异或运算结果为0,则将这两个列表行分别从第三集合和第四集合中删去,否则将异或运算结果替换这两个列表行中属于第三集合的列表行的βz-1…βl…β0项,并将这两个列表行中属于第四集合的列表行删去,直至第四集合和第三集合中无γn-1…γj…γ0项相同的列表行,结束该步骤进入步骤4);
4)将第四集合中的列表行转移至第三集合中,若qc=3,则对第三集合中的列表行的γn-1γn-2…γc…γ0项的γc值取反,进入步骤5);
5)判断是否遍历完数字Q中所有的数字位,若没有遍历完,则转至下一数字位进行步骤2)操作,否则算法结束,将第三集合中列表行表示成混合极性里德穆勒表达式形式,即得到下一位极性PD的混合极性里德穆勒表达式。
4.如权利要求1所述的一种与/异或电路的最佳混合极性搜索方法,其特征在于使用多输入与门低功耗映射算法对多输入与门进行低功耗映射得到两输入与门电路的具体步骤为:
1)对于多输入与门的基本输入变量{x0,x1,…,xn-1},其信号概率为(pr(x0),pr(x1),…,pr(xn-1)},首先进行如下操作:将基本输入变量中信号概率小于等于0.5的基本输入变量放入第一变量序列C1,将基本输入变量中信号概率大于0.5的基本输入变量放入第二变量序列C2,然后按基本输入变量的信号概率从小到大的顺序对第一变量序列C1和第一变量序列C2中的基本输入变量进行排序,进入步骤2);
2)若第一变量序列C1中的变量个数大于等于2,则进入步骤3),若第一变量序列C1中的变量个数等于1,则将第一变量序列C1中的变量插入第二变量序列C2的信号概率最小的变量的后面,进入步骤4),若第一变量序列C1中的变量个数等于0,则直接进入步骤4);
3)将第一变量序列C1中信号概率最小的两个变量进行结合,根据公式pr(vand_out)=pr(vand_in1)·pr(vand_in2)计算该结合所得到的变量的信号概率,将这两个最小变量从第一变量序列C1中删除,把该结合所得到的变量插入到第一变量序列C1中信号概率最小的变量的后面,并返回步骤2);
4)若第二变量序列C2中的变量个数大于2,则进入步骤5),否则进入步骤6);
5)首先定义min{a,b}的值等于a和b两者中值较小的一个,然后进行如下操作:若第二变量序列C2中min{信号概率最小的两个变量的信号概率之积,1-信号概率最小的两个变量的信号概率之积}的值小于min{信号概率最大的两个变量的信号概率之积,1-信号概率最大的两个变量的信号概率之积}的值,则进入步骤6),否则取第二变量序列C2中信号概率最大的两个变量进行结合,根据公式:
pr(vand_out)=pr(vand_in1)·pr(vand_in2)
计算该结合所得输出变量的信号概率,并将这两个最大变量从第二变量序列C2中删除,把该结合所得到的变量按信号概率大小插入到第二变量序列C2中,并返回步骤4);
6)若第二变量序列C2中的变量个数小于等于1,则算法结束,否则进入步骤7);
7)取第二变量序列C2中信号概率最小的两个变量进行结合,根据公式:
pr(vand_out)=pr(vand_in1)·pr(vand_in2)
计算该结合所得输出变量的信号概率,将这两个变量从第二变量序列C2中删除,把该结合所得到的变量插入第二变量序列C2的信号概率最小的变量的后面,并返回步骤6)。
5.如权利要求1所述的一种与/异或电路的最佳混合极性搜索方法,其特征在于根据多输入异或门低功耗映射算法对多输入异或门进行低功耗映射得到两输入异或门电路的具体步骤为:
1)首先将多输入异或门的基本输入变量{v0,v1,…,vt-1}放入第三变量序列C3中,然后根据它们信号概率{pr(v0),pr(v1),…,pr(vt-1)}按min{pr(vu),1-pr(vu)}从小到大的顺序对第三变量序列C3中变量进行排序,其中0≤u≤t-1,进入步骤2);
2)若第三变量序列C3中变量的个数小于等于1,则算法结束,否则进入步骤3);
3)取第三变量序列C3中min{pr(vu),1-pr(vu)}最小的两个变量进行结合,将该两个变量从第三变量序列C3中删除,并根据公式:
pr(vxor_out)=pr(vxor_in1)+pr(vxor_in2)-2·pr(vxor_in1)·pr(vxor_in2)
计算该结合所得到的变量的信号概率,把该结合所得到的变量按min{pr(vu),1-pr(vu)}值的大小插入第三变量序列C3中,并返回步骤2)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010606541A CN102054102B (zh) | 2010-12-27 | 2010-12-27 | 一种与/异或电路的最佳混合极性搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010606541A CN102054102B (zh) | 2010-12-27 | 2010-12-27 | 一种与/异或电路的最佳混合极性搜索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102054102A CN102054102A (zh) | 2011-05-11 |
CN102054102B true CN102054102B (zh) | 2012-10-24 |
Family
ID=43958415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010606541A Expired - Fee Related CN102054102B (zh) | 2010-12-27 | 2010-12-27 | 一种与/异或电路的最佳混合极性搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102054102B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102592013B (zh) * | 2011-12-31 | 2014-02-05 | 宁波大学 | 一种固定极性里德穆勒电路延时和面积的优化方法 |
CN103020331B (zh) * | 2012-10-15 | 2015-07-22 | 宁波大学 | 一种混合极性同或/或电路的功耗优化方法 |
CN104539298B (zh) * | 2014-12-23 | 2017-08-04 | 宁波大学 | 一种Reed‑Muller逻辑电路极性快速转换方法 |
CN104778499B (zh) * | 2015-04-20 | 2017-07-07 | 北京航空航天大学 | 一种混合极性Reed‑Muller逻辑电路的最佳极性搜索方法 |
CN104836570B (zh) * | 2015-05-07 | 2017-08-15 | 宁波大学 | 一种基于晶体管级的与/异或门电路 |
CN104881549B (zh) * | 2015-06-11 | 2017-12-05 | 北京航空航天大学 | 一种包含无关项的Reed‑Muller逻辑电路的功耗优化方法 |
CN105187051B (zh) * | 2015-07-14 | 2017-12-05 | 北京航空航天大学 | 一种基于NSGA‑II用于不完全确定Reed‑Muller电路功耗与面积优化方法 |
CN106027032A (zh) * | 2016-05-20 | 2016-10-12 | 北京航空航天大学 | 一种单位延时模型下rm逻辑电路延时优化方法 |
CN107194023B (zh) * | 2017-03-30 | 2019-07-12 | 宁波大学 | 一种fprm电路面积与延时优化方法 |
CN107330201B (zh) * | 2017-07-04 | 2020-09-18 | 北京航空航天大学 | 一种固定极性Reed-Muller逻辑电路极性搜索方法 |
CN109583045B (zh) * | 2018-11-13 | 2023-04-18 | 北京时代民芯科技有限公司 | 一种基于向量转移概率的功耗估计方法及介质 |
CN110941938B (zh) * | 2019-11-14 | 2023-05-02 | 温州大学 | 基于与非/或非-与异或非图的电路面积和功耗优化方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1598750A1 (en) * | 2003-01-27 | 2005-11-23 | Mathematec Kabushiki Kaisha | Calculation processing device, calculation processing device design method, and logic circuit design method |
CN101216865A (zh) * | 2008-01-09 | 2008-07-09 | 宁波大学 | 用于数字集成电路设计的最佳极性搜索方法 |
CN101488745A (zh) * | 2009-03-02 | 2009-07-22 | 宁波大学 | 一种减少数字逻辑电路面积的方法 |
-
2010
- 2010-12-27 CN CN201010606541A patent/CN102054102B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1598750A1 (en) * | 2003-01-27 | 2005-11-23 | Mathematec Kabushiki Kaisha | Calculation processing device, calculation processing device design method, and logic circuit design method |
CN101216865A (zh) * | 2008-01-09 | 2008-07-09 | 宁波大学 | 用于数字集成电路设计的最佳极性搜索方法 |
CN101488745A (zh) * | 2009-03-02 | 2009-07-22 | 宁波大学 | 一种减少数字逻辑电路面积的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102054102A (zh) | 2011-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102054102B (zh) | 一种与/异或电路的最佳混合极性搜索方法 | |
CN102916687B (zh) | 基于cmos工艺的三值时钟发生器 | |
Wang et al. | Novel low power full adder cells in 180nm CMOS technology | |
CN101320975B (zh) | 基于时间域的超低功耗比较器 | |
Vallabhuni et al. | An advanced computing architecture for binary to thermometer decoder using 18nm FinFET | |
CN104052434B (zh) | 一种时钟变换电路 | |
Sinha et al. | Design and analysis of low power 1-bit full adder cell | |
CN102982205A (zh) | 一种用于数字电路设计的固定极性转换方法 | |
Reddy et al. | A comparative study on low-power and high speed Carry Select Adder | |
CN106017730A (zh) | 一种集成在rfid标签中的温度传感器 | |
CN105912811A (zh) | 一种模拟数字混合电路的仿真方法 | |
Hiremath et al. | Design and Implementation of Synchronous 4-Bit Up Counter Using 180 nm CMOS Process Technology | |
Shrivas et al. | Design and performance analysis of 1 bit full adder using GDI technique in nanometer era | |
CN103346780A (zh) | Mos管与单电子晶体管混合结构的可复用逻辑门 | |
CN102624378B (zh) | 一种低功耗多米诺三值文字运算电路 | |
Shih et al. | High-speed low-area-cost VLSI design of polar codes encoder architecture using radix-k processing engines | |
Lavania et al. | An ultra low power encoder for 5 bit flash ADC | |
Sinha et al. | BDD based Logic synthesis and optimization for low power comparator circuit | |
Gupta et al. | Performance Investigation of Binary Counter with Different Clock Gating Networks | |
Sneha et al. | A modified partially parallel polar encoder architecture | |
Sharma et al. | Implementation of BDDs by various techniques in Low power VLSI design | |
Mann et al. | Design of Power Efficient 4: 2 Compressors Using PFAL and Modified PFAL Adiabatic Logic Families | |
CN103885748B (zh) | 一种低功耗随机数后处理方法 | |
Barkalov et al. | Encoding of Microoperations in FPGA-Based Moore FSMs | |
Thakur et al. | CMOS design of area and power efficient multiplexer using tree topology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121024 Termination date: 20181227 |