《一种基于贪婪算法的同或/或电路的分解方法.pdf》由会员分享,可在线阅读,更多相关《一种基于贪婪算法的同或/或电路的分解方法.pdf(10页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102915392 A (43)申请公布日 2013.02.06 C N 1 0 2 9 1 5 3 9 2 A *CN102915392A* (21)申请号 201210389864.8 (22)申请日 2012.10.15 G06F 17/50(2006.01) (71)申请人宁波大学 地址 315211 浙江省宁波市江北区风华路 818号 (72)发明人张会红 汪鹏君 (74)专利代理机构宁波奥圣专利代理事务所 (普通合伙) 33226 代理人程晓明 (54) 发明名称 一种基于贪婪算法的同或/或电路的分解方 法 (57) 摘要 本发明公开了一种基于贪婪算法的同。
2、或/或 电路的分解方法,首先引入同或/或电路表达式, 将多输入同或/或门的分解问题转换为最小二叉 树搜索问题,然后采用贪婪算法分解同或/或电 路中的多输入或门,再在多输入或门分解的基础 上采用贪婪算法分解同或/或电路中的多输入同 或门;优点是采用统一的方法依次进行或门和同 或门的低功耗分解,其功耗分解稳定性较强,且低 功耗分解效果好。 (51)Int.Cl. 权利要求书2页 说明书6页 附图1页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 6 页 附图 1 页 1/2页 2 1.一种基于贪婪算法的同或/或电路的分解方法,其特征在于首先引入同或/或电路。
3、 表达式,将多输入同或/或门的分解问题转换为最小二叉树搜索问题,然后采用贪婪算法 分解同或/或电路中的多输入或门,再在多输入或门分解的基础上采用贪婪算法分解同或 /或电路中的多输入同或门,具体包括以下步骤: 读入同或/或电路表达式n为函数f(x 1 ,x 2 , ,x i ,x n )的变量数,(x 1 ,x 2 ,x i ,x n )为函数f(x 1 ,x 2 ,x i ,x n )的n个输入变量,i为 正整数,且1in,S k 项代表同或/或电路中的某个或门,且 d k 为或项系数,且d k 0,1,当d k =0时,表示S k 项在同或/或电路表达式中出现,当d k =1 时,表示S k。
4、 项不在同或/或电路表达式中出现,表示同或操作,k为S k 项序号,k用二 进制形式表示为k 1 k 2 k j k n ,j为正整数,且1jn,当k j 0时,当k j 1时, S k 项代表的或门的输入变量x i 的数量为m, 定义S k 项代表的或门的开关活动性为SA_OR_S k ,将S k 项代表的或门的输入变量x i 定义为最小二叉树搜索问题中的树,树的数量为m,将S k 项代表的或门分解得到的二输入或 门的开关活动性定义为两棵树间的距离,每个输入变量x i 的输入概率P(x i )作为其对应树 的概率,记在该树的树根,S k 项代表的或门的输出概率记为P(S k ); 采用贪婪算。
5、法分解同或/或电路中的多输入或门,得到S k 项代表的或门的开关活动 性SA_OR_S k 和S k 项代表的或门的输出概率P(S k ); 将所有或门的开关活动性累加,得到同或/或电路中所有或门的总开关活动性,同 或/或电路中或门的数量为q,,其中SA_OR表示同或/或电路中所有或门的 总开关活动性,将所有或门的输出概率P(S k )记入一个长度为q的 数组中,将该数组作为同或/或电路中同或门输入变量的输入概率; 采用贪婪算法分解同或/或电路中的多输入同或门,得到同或/或电路中所有同或 门的总开关活动性SA_XNOR; 将同或/或电路中所有或门的总开关活动性SA_OR和同或/或电路中所有同 。
6、或门的总开关活动性SA_XNOR相加,得到同或/或电路的总开关活动性SA_total, 2.根据权利要求1所述的一种基于贪婪算法的同或/或电路的分解方法,其特征在于 采用贪婪算法分解同或/或电路中的多输入或门的具体步骤为: -1初始化函数,使SA_OR_S k =0,定义第M棵树和第N棵树之间的距离为A MN , 1Mm,1Nm,计算m棵树中两两之间的距离A MN ,并将所有的距离A MN 存为mm的 矩阵形式,该矩阵记为A,A MN 位于矩阵A中第M行和第N列,其中,如果同或/或电路为动态 逻辑电路,则A MN 根据公式AMN=2P OR_MN 计算;如果同或/或电路为静态逻辑电路,则A M。
7、N 根据 公式AMN=2P OR_MN (1-2P OR_MN )计算,P OR_MN =P M +P N -P M P N ,P M 表示第M棵树的概率,P N 表示第N棵 树的概率,P OR_MN 表示第M棵树和第N棵树构成的二叉树的概率; 权 利 要 求 书CN 102915392 A 2/2页 3 -2检索矩阵A中所有的正数,找出距离最近的两棵树,分别记为第a棵树和第b棵 树,1am,1bm,以第a棵树和第b棵树为子树构成一棵新树,该新树为二叉树, 计算该新树的概率P(f a,b )并记入该新树的树根,P(f a,b )=P a +P b -P a P b ,其中P a 为第a棵树的 。
8、概率,P b 为第b棵树的概率,第a棵树和第b棵树之间的距离为A ab ,位于矩阵A中第a行和 第b列,将数值A ab 累加到SA_OR_S k ; -3以该新树取代第a棵树,分别计算该新树与其他所有树之间的距离并用这些距离 取代第a棵树在矩阵A中相关位置的距离,并将矩阵A中与第b棵树相关的距离全部用非 正数取代; -4重复步骤-2和-3,直到只剩下最后一棵树,该树即为搜索到的最小二叉树, 此时矩阵A中均为非正数,输出最后一棵树树根的概率P(S k )以及SA_OR_S k 的值。 3.根据权利要求2所述的一种基于贪婪算法的同或/或电路的分解方法,其特征 在于采用贪婪算法分解同或/或电路中的多。
9、输入同或门的原理与采用贪婪算法分解同 或/或电路中的多输入或门的原理相同,区别仅在于同或门的输出概率的计算公式为 P XNOR =1+2P 1 P 2 -P 1 -P 2 ,P 1 和P 2 分别表示二输入同或门的两个输入概率,P XNOR 表示二输入同或 门的输出概率。 权 利 要 求 书CN 102915392 A 1/6页 4 一种基于贪婪算法的同或 / 或电路的分解方法 技术领域 0001 本发明涉及一种逻辑门电路的低功耗分解技术,尤其是涉及一种基于贪婪算法的 同或/或电路的分解方法。 背景技术 0002 随着集成电路的发展,功耗已成为集成电路设计中的关键性限制因素。以低功耗 为目标的。
10、里德穆勒(RM)电路极性优化已引起了广泛关注。其中,多输入门分解是影响RM 电路功耗的关键性环节之一,不同的分解方法将使电路具有不同的功耗。因此,研究RM电 路的低功耗分解具有现实意义。 0003 目前,对于同或/或电路,其多输入或门由于输出信号的概率随着输入信号的 概率而增大,一般采用霍夫曼算法进行分解;而同或/或电路中的多输入同或门目前主 要采用随机顺序分解方法或者分类分解方法(分类分解方法见P.Wang,J.Lu,J.Xu,et al.Power optimization algorithm based on XNOR/OR logicJ2009,26(1):138-144. 汪鹏君,陆。
11、金刚,徐建.基于XNOR/OR逻辑的功耗优化算法.电子科学学刊(英文 版).2009,26(1):138-144)。随机顺序分解方法按照随机顺序将待分解的多输入同或门分 解为一系列二输入同或门,没有进行优化组合,其低功耗分解效果较差;而分类分解方法中 将待分解的多输入同或门分为三种情况:待分解的多输入同或门的所有输入信号的概率均 大于0.5、待分解的多输入同或门的所有输入信号的概率均小于0.5和待分解的多输入同 或门同时包含概率大于0.5、等于0.5和小于0.5的输入信号,通过将输入信号分为三类,不 同的类别采取不同的分解算法,其相对于随机顺序分解方法低功耗效果较好。但是由于分 类分解方法中对。
12、于一个或多个输入信号的概率为0.5的多输入同或门往往留待最后考虑, 因此无法保证低功耗分解的最优性。 发明内容 0004 本发明所要解决的技术问题是提供一种可以通用于同或门和或门的低功耗分解, 低功耗分解效果好的基于贪婪算法的同或/或电路的分解方法, 0005 本发明解决上述技术问题所采用的技术方案为:一种基于贪婪算法的同或/或电 路的分解方法,首先导入或读入同或/或电路表达式,将多输入同或/或门的分解问题转换 为最小二叉树搜索问题,然后采用贪婪算法分解同或/或电路中的多输入或门,再在多输 入或门分解的基础上采用贪婪算法分解同或/或电路中的多输入同或门,具体包括以下步 骤: 0006 读入同或。
13、/或电路表达式n为函数 f(x 1 ,x 2 ,x i ,x n )的变量数,(x 1 ,x 2 ,x i ,x n )为函数f(x 1 ,x 2 ,x i ,x n )的 n个输入变量,i为正整数,且1in,S k 项代表同或/或电路中的某个或门,且 d k 为或项系数,且d k 0,1,当d k =0时,表示S k 项在同或/或 说 明 书CN 102915392 A 2/6页 5 电路表达式中出现,当d k =1时,表示S k 项不在同或/或电路表达式中出现,表示同或操 作,k为S k 项序号,k用二进制形式表示为k 1 k 2 k j k n ,j为正整数,且1jn,当k j 0时,当。
14、k j 1时,S k 项代表的或门的输入变量x i 的数量为m, 0007 定义S k 项代表的或门的开关活动性为SA_OR_S k ,将S k 项代表的或门的输入变量 x i 定义为最小二叉树搜索问题中的树,树的数量为m,将S k 项代表的或门分解得到的二输入 或门的开关活动性定义为两棵树间的距离,每个输入变量x i 的输入概率P(x i )作为其对应 树的概率,记在该树的树根,S k 项代表的或门的输出概率记为P(S k ); 0008 采用贪婪算法分解同或/或电路中的多输入或门,得到S k 项代表的或门的开关 活动性SA_OR_S k 和S k 项代表的或门的输出概率P(S k ); 0。
15、009 将所有或门的开关活动性累加,得到同或/或电路中所有或门的总开关活动 性,同或/或电路中或门的数量为q,,其中SA_OR表示同或/或电路中所有或 门的总开关活动性,将所有或门的输出概率P(S k )记入一个长度为 q的数组中,将该数组作为同或/或电路中同或门输入变量的输入概率; 0010 采用贪婪算法分解同或/或电路中的多输入同或门,得到同或/或电路中所有 同或门的总开关活动性SA_XNOR; 0011 将同或/或电路中所有或门的总开关活动性SA_OR和同或/或电路中所有 同或门的总开关活动性SA_XNOR相加,得到同或/或电路的总开关活动性SA_total, 0012 采用贪婪算法分解。
16、同或/或电路中的多输入或门的具体步骤为: 0013 -1初始化函数,使SA_OR_S K =0,定义第M棵树和第N棵树之间的距离为A MN , 1Mm,1Nm,计算m棵树中两两之间的距离A MN ,并将所有的距离A MN 存为mm的 矩阵形式,该矩阵记为A,A MN 位于矩阵A中第M行和第N列,其中,如果同或/或电路为动态 逻辑电路,则A MN 根据公式A MN =2P OR_MN 计算;如果同或/或电路为静态逻辑电路,则A MN 根据 公式AMN=2P OR_MN (1-2P OR_MN )计算,P OR_MN =P M +P N -P M P N ,P M 表示第M棵树的概率,P N 表示。
17、第N棵 树的概率,P OR_MN 表示第M棵树和第N棵树构成的二叉树的概率; 0014 -2检索矩阵A中所有的正数,找出距离最近的两棵树,分别记为第a棵树和第 b棵树,1am,1bm,以第a棵树和第b棵树为子树构成一棵新树,该新树为二叉 树,计算该新树的概率P(f a,b )并记入该新树的树根,P(f a,b )=P a +P b -P a P b ,其中P a 为第a棵树 的概率,P b 为第b棵树的概率,第a棵树和第b棵树之间的距离为A ab ,位于矩阵A中第a行 和第b列,将数值A ab 累加到SA_OR_S k ; 0015 -3以该新树取代第a棵树,分别计算该新树与其他所有树之间的距。
18、离并用这些 距离取代第a棵树在矩阵A中相关位置的距离,并将矩阵A中与第b棵树相关的距离全部 用非正数取代; 0016 -4重复步骤-2和-3,直到只剩下最后一棵树,该树即为搜索到的最小二叉 树,此时矩阵A中均为非正数,输出最后一棵树树根的概率P(S k )以及SA_OR_S k 的值。 0017 采用贪婪算法分解同或/或电路中的多输入同或门的原理与采用贪婪算法分解 说 明 书CN 102915392 A 3/6页 6 同或/或电路中的多输入或门的原理相同,区别仅在于同或门的输出概率的计算公式为 P XNOR =1+2P 1 P 2 -P 1 -P 2 ,P 1 和P 2 分别表示二输入同或门的。
19、两个输入概率,P XNOR 表示二输入同或 门的输出概率。 0018 与现有技术相比,本发明的优点在于引入同或/或电路表达式,将多输入同或/ 或门的分解问题转换为最小二叉树搜索问题,然后采用贪婪算法分解同或/或电路中的多 输入或门,再在多输入或门分解的基础上采用贪婪算法分解同或/或电路中的多输入同或 门,实现同或/或电路的低功耗分解,本方法中采用统一的方法依次进行或门和同或门的 低功耗分解,其功耗分解稳定性较强,且低功耗分解效果好。 附图说明 0019 图1为采用分类分解方法以及本发明的分解方法分别分解inc电路的开关活动性 分布对照图; 0020 图2为采用分类分解方法以及本发明的分解方法分。
20、别分解9sym电路的开关活动 性分布对照图。 具体实施方式 0021 以下结合附图实施例对本发明作进一步详细描述。 0022 实施例:一种基于贪婪算法的同或/或电路的分解方法,首先引入同或/或电路表 达式,将多输入同或/或门的分解问题转换为最小二叉树搜索问题,然后采用贪婪算法分 解同或/或电路中的多输入或门,再在多输入或门分解的基础上采用贪婪算法分解同或/ 或电路中的多输入同或门,具体包括以下步骤: 0023 读入同或/或电路表达式n为函数 f(x 1 ,x 2 ,x i ,x n )的变量数,(x 1 ,x 2 ,x i ,x n )为函数f(x 1 ,x 2 ,x i ,x n )的 n个。
21、输入变量,i为正整数,且1in,S k 项代表同或/或电路中的某个或门,且 d k 为或项系数,且d k 0,1,当d k =0时,表示S k 项在同或/或 电路表达式中出现,当d k =1时,表示S k 项不在同或/或电路表达式中出现,表示同或操 作,k为S k 项序号,k用二进制形式表示为k 1 k 2 k j k n ,j为正整数,且1jn,当k j 0时,当k j 1时,S k 项代表的或门的输入变量x i 的数量为m, 0024 定义Sk项代表的或门的开关活动性为SA_OR_S k ,将S k 项代表的或门的输入变量 x i 定义为最小二叉树搜索问题中的树,树的数量为m,将S k 项。
22、代表的或门分解得到的二输入 或门的开关活动性定义为两棵树间的距离,每个输入变量x i 的输入概率P(x i )作为其对应 树的概率,记在该树的树根,S k 项代表的或门的输出概率记为P(S k ); 0025 采用贪婪算法分解同或/或电路中的多输入或门,得到S k 项代表的或门的开关 活动性SA_OR_S k 和S k 项代表的或门的输出概率P(S k );采用贪婪算法分解同或/或电路中 的多输入或门的具体步骤为: 0026 -1初始化函数,使SA_OR_S k =0,定义第M棵树和第N棵树之间的距离为A MN , 1Mm,1Nm,计算m棵树中两两之间的距离A MN ,并将所有的距离A MN 。
23、存为mm的 说 明 书CN 102915392 A 4/6页 7 矩阵形式,该矩阵记为A,A MN 位于矩阵A中第M行和第N列,其中,如果同或/或电路为动态 逻辑电路,则A MN 根据公式A MN =2P OR_MN 计算;如果同或/或电路为静态逻辑电路,则A MN 根据 公式A MN =2P OR_MN (1-2P OR_MN )计算,P OR_MN =P M +P N -P M P N ,P M 表示第M棵树的概率,P N 表示第N棵树 的概率,P OR_MN 表示第M棵树和第N棵树构成的二叉树的概率; 0027 -2检索矩阵A中所有的正数,找出距离最近的两棵树,分别记为第a棵树和第 b棵。
24、树,1am,1bm,以第a棵树和第b棵树为子树构成一棵新树,该新树为二叉 树,计算该新树的概率P(f a,b )并记入该新树的树根,P(f a,b )=P a +P b -P a P b ,其中P a 为第a棵树 的概率,P b 为第b棵树的概率,第a棵树和第b棵树之间的距离为A ab ,位于矩阵A中第a行 和第b列,将数值A ab 累加到SA_OR_S k ; 0028 -3以该新树取代第a棵树,分别计算该新树与其他所有树之间的距离并用这些 距离取代第a棵树在矩阵A中相关位置的距离,并将矩阵A中与第b棵树相关的距离全部 用非正数取代; 0029 -4重复步骤-2和-3,直到只剩下最后一棵树,。
25、该树即为搜索到的最小二叉 树,此时矩阵A中均为非正数,输出最后一棵树树根的概率P(S k )以及SA_OR_S k 的值; 0030 将所有或门的开关活动性累加,得到同或/或电路中所有或门的总开关活动 性,同或/或电路中或门的数量为q,,其中SA_OR表示同或/或电路中所有或 门的总开关活动性,将所有或门的输出概率P(S k )记入一个长度为 q的数组中,将该数组作为同或/或电路中同或门输入变量的输入概率; 0031 采用贪婪算法分解同或/或电路中的多输入同或门,得到同或/或电路中所有 同或门的总开关活动性SA_XNOR;采用贪婪算法分解同或/或电路中的多输入同或门的原 理与采用贪婪算法分解同。
26、或/或电路中的多输入或门的原理相同,区别仅在于同或门的输 出概率的计算公式为P XNOR =1+2P 1 P 2 -P 1 -P 2 ,P 1 和P 2 分别表示二输入同或门的两个输入概率, P XNOR 表示二输入同或门的输出概率。 0032 将同或/或电路中所有或门的总开关活动性SA_OR和同或/或电路中所有 同或门的总开关活动性SA_XNOR相加,得到同或/或电路的总开关活动性SA_total, 0033 本实施例的内容用C语言编程加以实现,在1.60GHz、1.00G内存PC机的windows XP环境下采用vc6.0编译并调试,并采用多个MCNC基准电路测试。为了比较和分析本发 明的。
27、有效性和效率,取12个不同规模的MCNC基准电路进行测试,分别采用本发明的方法和 现有两种方法(随机顺序分解方法和分类分解方法)对各电路0极性的XNOR/OR表达式进行 低功耗分解。动态逻辑和和静态逻辑下分解后测试电路开关活动性如表1和表2所示。具 体步骤为:首先随机产生19个(这里测试电路输入信号最多为19个)01间的小数作为所 有测试电路各输入的输入概率:0.14,0.82,0.31,0.03,0.30,0.72,0.59,0.95,0.42,0.93, 0.63,0.32,0.68,0.22,0.42,0.57,0.69,0.75,0.19;然后采用传统布尔(Boolean)逻辑和 RM。
28、逻辑间的极性转换算法,由各测试电路的传统Boolean逻辑形式得到0极性下XNOR/OR 电路形式;最后分别采用随机顺序分解方法、分类分解方法以及本发明的分解方法对多输 说 明 书CN 102915392 A 5/6页 8 入XNOR/OR电路进行低功耗分解。三种分解方法的结果在表1和表2分别记为SA_1、SA_2 和SA_3,其中SA_1对应采用随机顺序分解方法的测试结果,SA_2对应采用分类分解方法的 测试结果,SA_3对应采用本发明的方法的测试结果。 0034 表1动态逻辑下多输入门分解算法结果比较 0035 0036 表2静态逻辑下多输入门分解算法比较 0037 0038 表1和表2相。
29、关项目含义如下:第1列为测试电路的名称,第2列为输入信号的数 量;第3列为0极性下各电路分解后的二输入XNOR门和OR门的数量;第46列分别是上述 三种分解方法所得电路的开关活动性值;第7列为分类分解方法在开关活动性上相对于随 机顺序分解方法的节省率,第8列为本发明的分解方法在开关活动性上相对于随机顺序分 说 明 书CN 102915392 A 6/6页 9 解方法的节省率,节省率 0039 分析表1和表2数据,我们可以得出以下结论: 0040 1)采用分类分解方法以及本发明的分解方法分解电路所得功耗比按照随机顺序 进行电路分解所得功耗明显减低。静态逻辑下尤为显著,功耗节省率在平均50%以上;。
30、 0041 2)在随机生成的19个输入信号概率下,表1中SA_2和SA_3列数据几乎相等。即, 动态逻辑下分类分解方法和本发明的分解方法对电路的分解效果大致相当。事实上,由于 分类分解方法中0.5作为一个随机小数出现的概率非常小,因此,采用分类分解方法以及 本发明的分解方法分解后每个电路的开关活动性差小于0.07。表明在动态逻辑这种信号概 率与开关活动性关系相对简单的情况下,两种算法效果相当。 0042 3)静态逻辑下,本发明的分解方法效果明显好于分类分解方法。表2中除电路 rd84,sao2和table3外,采用分类分解方法的开关活动性(SA_2)均高于采用本发明的分解 方法的对应值(SA_。
31、3)。列SA_2和SA_3相比SA_1的平均节省率分别为55.10%和55.57%。 0043 为进一步比较分类分解方法和本发明的分解方法对静态逻辑电路的分解效果,结 合表2取两个较小规模的电路:inc和9sym,分别采用分类分解方法和本发明的分解方法对 其所有极性下表达式进行分解,其开关活动性对照图如图1和图2所示。两图中标记SA_2 和SA_3含义与表1和表2相同。图1和图2表明,相比于分类分解方法,本文所提出的基 于贪婪算法的同或/或电路的分解方法能够进一步降低部分电路的开关活动性。 说 明 书CN 102915392 A 1/1页 10 图1 图2 说 明 书 附 图CN 102915392 A 10 。