一种基于全局优化算法的电路自动剪枝方法

文档序号:32064587发布日期:2022-11-05 00:19阅读:93来源:国知局
一种基于全局优化算法的电路自动剪枝方法

1.本发明属于集成电路领域,涉及一种基于全局优化算法的电路自动剪枝方法。


背景技术:

2.随着工艺线宽的缩小,芯片集成度随之提高,集成电路单位面积的性能也不断加强,因此电路的功耗问题越来越严重,逐渐引起人们的重视,人们开始关注如何获得性能更优的设计,这就使功耗成为芯片设计的重要指标。在解决功耗问题时,人们不再局限于利用降低电压来降低功耗的vos(voltage overscaling)功耗下降方案,逐步开始研究更多的功耗降低方向,因此近似计算逐渐成为热门的研究话题。近似计算,顾名思义,就是通过不精确的计算来代替精确的计算,从而降低电路复杂度,同时电路面积和功耗也随之降低。在集成电路的实际应用中,包括了众多具有可容错性的应用场景,这些场景并不需要完全精确或高精度的计算结果。例如在许多图像处理应用中,由于系统固有的量化误差,这个应用场景就会具有一定的容错性,可以容忍输出的数据的误差,这也就使得近似计算成为一种高效的功耗优化方案。
3.目前的近似计算设计方法大部分都是通过设计者自身经验手动设计,通过经验来估计电路的误差,然后对电路进行一定的修改。因此针对不同的电路设计,需要根据电路的特性,设计新的近似方案。由于这种方法极度依赖自身的经验,因此通常需要大量的时间来进行尝试,最终才能获得一个性能-误差有良好平衡的近似方案。另一方面,通过这种方法针对电路规模较大的电路进行近似设计时,由于电路太大,对电路进行修改可能产生较大的误差,所以会出现找不到切入点的情况。
4.因此,自动剪枝成为了一种新的选择,其不针对应用场景,在自动剪枝体系下,所有的组合逻辑电路都可以适用。其主要是针对组合逻辑所共有的特性来剪枝,通过一些误差指标的限定,实现所需应用的近似设计,针对不同的设计只需要进行迭代删除,不需要额外的设计时间。自动剪枝通过评估组合逻辑所共有的特性,从电路中获得足够的信息,然后通过信息计算电路中节点的误差函数值,排序后找到当前最优删除节点,按顺序迭代删除。但是这种自动剪枝方法每次迭代都寻找当前的最优删除节点,最终会陷入局部最优,无法找到全局最优,同时删除的最小单元为综合后电路的复合门,删除的精度不够高。并且每一次迭代均需使用综合工具和仿真工具,耗费大量的时间。


技术实现要素:

5.针对上述自动剪枝的问题,本发明将删除的最小单元改为基础的与或非逻辑,提高删除的精度。同时将分解后的与或非逻辑转为c语言模型,使得整体迭代脱离综合工具和仿真工具,利用c语言代替仿真,节省大量的时间。最后加入全局优化算法,在删除节点的选择上不再寻找每次迭代的最优解,而是从整体考虑,寻找出合适的节点集合进行删除,使得总体的删除节点的效果最优。
6.本发明采用的技术方案如下:
7.本发明提出的一种基于全局优化算法的近似电路自动剪枝方法,包括如下步骤:
8.步骤一、基于目标电路的verilog代码,综合处理电路verilog文件,获得综合后的网表文件。
9.步骤二、借助库的verilog文件,利用python分解步骤一获得的网表文件,将复合门全部转为2输入简单逻辑门,同时记录复合门的分解情况。
10.步骤三、将步骤二中的逻辑门转为图的连线,使逻辑门的输入输出连线转为图的节点,将电路转换为有向无环图(dag)。并设置所有连线的线权值,图节点的权值为所有下一级节点的权值乘以对应连线的权值,因此根据输出的权值反向遍历,获得整幅图的权值。
11.步骤四、根据步骤三获得的有向无环图反向遍历每一个图节点,转换节点唯一相关逻辑门为对应的c语言逻辑表达式。按顺序记录后反序,获得一个新列表。按照新列表的顺序执行逻辑表达式,就可以通过c语言的顺序执行逻辑来模拟原有的并行执行逻辑的组合逻辑电路。以此实现随机激励仿真,并记录节点信息、误差信息。
12.步骤五、通过全局优化算法,对全局优化算法的初始值进行设置,设置个体数以及删除节点数。将局部最优节点集合,总体删除节点集合,旧删除节点集合设为空集,将总体最优方向和总体错误方向设为空。
13.步骤六、使用旧删除节点集合保存总体删除节点集合。
14.步骤七、根据步骤四中c语言仿真获得的节点信息,结合步骤三获得的节点权值信息,计算每个节点的两个删减函数值,然后根据总体错误方向的节点,降低错误方向节点的优先级。按照删除函数值的排序顺序,取得删减节点集合。然后将删减集合映射到c语言仿真结构中,通过c语言仿真,获得此删除节点集合的误差信息。若误差过大,将重新迭代获得删除节点集合。循环迭代,直到获得所有个体的删除节点集合。
15.步骤八、根据步骤七获得的删除节点集合,根据全局优化算法,找到群体最优集合。通过随机交叉,更新所有个体的删除节点集合。
16.步骤九、将更新后的删除节点集合映射到c语言仿真模型中,仿真获得误差和节点信息,若误差异常增大,舍弃当前个体的此次迭代结果,使用旧删除节点集合覆盖总体删除节点集合。
17.步骤十、所有个体判断误差是否超过限制,若均超过则进行步骤十一,否则重复步骤六开始新一轮迭代。
18.步骤十一、根据步骤九确定的删除节点集合对电路进行删减,获得删减后的电路结构。
19.步骤十二、根据步骤二获得的复合门组合信息,根提逻辑门的例化名提取步骤十一的删减电路逻辑。若能搜索到,则填加到综合的输入中,综合后即可得到原有复合门的近似电路,最后组合所有的近似复合门,完成整体电路的近似。
20.具体的,步骤三中的节点权值表示删除该节点对输出结果的影响程度,权值越大,则删除之后产生的输出误差可能越大。
21.具体的,针对步骤四,由于图节点为逻辑门的连线,连线同时起到前级逻辑门输出和后级逻辑门输入的功能。同时根据verilog的语法规定,为了不产生多驱动,连线作为输出时,只能由一个逻辑门驱动,因此可以找到唯一相关的逻辑表达式。
22.具体的,步骤五中的全局优化算法的使用粒子群算法的思想,通过设置个体数和
单次删减节点数,进行优化算法迭代,每一次迭代需要根据个体数量多次获得删除节点,每个个体的删除节点的计算均独立。
23.具体的,步骤七中的每一个节点有两个删除可能,可能置为0或者置为1,因此针对两种删减方式每个节点有两个对应删除函数值。
24.具体的,步骤七中的映射原理为若此节点需置0,则不获取此节点的原有逻辑表达式,改为直接置0。置1的映射方式同理。
25.具体的,步骤七中由于整体的删除节点选择模型存在权值估计,误差函数值估计等估计模型产生的误差,因此可能存在删除节点后,误差过大的情况。因此,步骤七中设计了重新迭代回退获取新的删除节点的方法。
26.具体的,针对步骤八,根据粒子群算法思想,每一个个体将逐渐向群体最优逼近,在此处的体现即为每一个删除集合更新部分全局最优节点,同时更新部分局部最优节点。
27.具体的,针对步骤九,迭代优化算法在随机向群体最优方向靠近时,可能会靠近了错误方向,因此误差可能存在异常增大。步骤九通过舍弃本次删减迭代结果规避此种问题。
28.本发明的有益效果为:本发明针对目前自动剪枝近似电路删除精度不够,整体迭代时间较长,删除节点选择易陷入局部最优这三大问题,都提出了改进的措施。本发明将电路分解为最基础的与或非逻辑单元,使得删除的最小单元改为基础的与或非逻辑,提高了删除的精度。同时本发明利用c语言模型模拟原来的电路逻辑,使得整体迭代过程脱离综合工具和仿真工具,利用c语言代替仿真,节省大量的仿真时间。最后本发明在节点选择过程中加入全局优化算法,在删除节点的选择上不再寻找每次迭代的最优解,而是从整体考虑,寻找出合适的节点集合进行删除,使得删除节点偏向全局最优。
附图说明
29.图1为基于全局优化算法的近似电路自动剪枝的流程图。
30.图2为权值传递示意图。
31.图3为复合门分解原理示意图。
具体实施方式
32.下面结合附图和具体实施例详细描述本发明的技术方案。
33.本发明提供了一种基于全局优化算法的近似电路自动剪枝方法,通过分解原有电路结构,借助全局优化算法获得电路的自动剪枝结果。
34.如图1所示,本发明的流程图分为三个阶段,信息收集阶段,优化迭代阶段,组合剪枝阶段。
35.信息收集阶段主要将电路分解,并转换为dag为后续阶段提供实施的基础,同时获得节点权值信息,节点活动信息以及整体电路的误差信息。本实施例中的具体实现方法为:通过综合处理元电路,获得综合后的网表文件,然后借助库的verilog文件,分解网表文件中的电路,将复合门全部转为2输入简单逻辑门,并记录复合门的分解情况。分解后将逻辑门转为图的连线,使逻辑门的输入输出连线转为图的节点,转换为dag。设置所有连线的线权值为0.5,图节点的权值为所有下一级节点的权值乘以对应连线的权值,如图2,从而根据输出的权值反向遍历,获得整幅图的权值。最后转换节点作为输出时的逻辑门为c语言逻辑
表达式,按照逻辑表达式的顺序进行,就可以通过顺序执行逻辑来模拟并行执行逻辑的组合逻辑电路。仿真时采用随机激励,并记录仿真时所有节点为0和为1的次数,为后续删减过程提供节点信息,获得mse等误差信息。
36.优化迭代阶段主要完成迭代删除的作用,利用全局优化算法,在总体误差限制下,找到全局最优删除节点集合。本实施例中的具体实现方法为:通过全局优化算法,对全局优化算法的初始值进行设置,保存前一次的总体删除节点集合。结合节点信息,节点权值信息,计算每个节点的两个删减函数值,然后根据总体错误方向的节点,降低错误方向节点的优先级。按照删除函数值的排序顺序,取得删减节点集合。然后将删减集合映射到c语言仿真结构中,通过c语言仿真,获得此删除节点集合的误差信息。若误差过大,将重新迭代获得删除节点集合。循环迭代,直到获得所有个体的删除节点集合。然后根据全局优化算法,找到群体最优集合。通过随机交叉,更新所有个体的删除节点集合。将更新后的删除节点集合映射到c语言仿真模型中,仿真获得误差和节点信息,若误差异常增大,舍弃当前个体的此次迭代结果,使用旧删除节点集合覆盖总体删除节点集合。若所有个体误差超过限制,则进行下一阶段,否则开始新一轮迭代。
37.组合剪枝阶段主要实施迭代优化阶段获得的节点删除集合,根据集合对分解后的电路进行剪枝,然后根据复合门信息,利用综合工具,组合剪枝后的电路。本实施例中的具体实现方法为:获取迭代优化阶段获得的节点删除集合,按照函数值将对应的节点置0或置1,然后搜索整个电路,删除输出为定值的逻辑,简化输入为定值的逻辑,直到所有逻辑门的输入输出均无定值。然后根据每一个复合门的分解信息,提取逻辑门的例化名,若能搜索到,则填加到综合的输入中,综合后即可得到原有复合门的近似电路。最后组合所有的近似复合门,完成整体电路的近似。
38.本实施例的工作原理为:
39.通过删除复合门中的部分逻辑,完成复合门的近似,再通过组合近似复合门,完成整体电路的近似。由于删减了复合门的逻辑,因此,复合门的面积,功耗都会有一定的下降,同时也会引入一定的误差。因此我通过全局优化算法进行指导,规划所有复合门的逻辑删减方法,在一定的误差限制下尽可能多的删除原有的逻辑,从而获得全局最优的电路结果。
40.由于电路的所有结构都分解为二输入逻辑门,因此每一个节点的删除产生的收益是接近相同的。因此,本发明以误差和删除点数做为衡量标准,采用以下步骤进行自动剪枝:
41.步骤一、对所需自动化删除的verilog代码进行综合处理,获得综合后的网表文件。
42.步骤二、通过借助库的verilog文件,分解步骤一获得的网表文件中的复合门,将复合门全部转为2输入简单逻辑门(and,or,buf,not),获得仅由2输入简单逻辑门组成的电路逻辑a,同时记录复合门的分解情况,如图3。
43.步骤三、使a中逻辑门转为图的连线,并设置连线的线权值为0.5,使逻辑门的输入输出连线转为图的节点,将a的电路转换为dag。图节点的权值w为所有下一级节点的权值乘以对应连线的权值,因此根据输出的权值反向遍历,获得整幅图的权值。
44.步骤四、根据步骤三获得的有向无环图反向遍历每一个图节点,利用c语言转换节点作为输出时的逻辑门为c语言逻辑表达式,按顺序记录逻辑表达式,获得表达式列表,然
后反序此列表,就可以获得一个新列表logic_list。c语言按照logic_list的顺序进行,就可以通过顺序执行逻辑来模拟并行执行逻辑的组合逻辑电路。仿真时采用随机激励,并记录仿真时所有节点为0和为1的次数,分别记录为t0,t1,为后续删减过程提供节点信息,获得mse等误差信息。
45.步骤五、通过全局优化算法,设置个体数n和单次删减节点数m,设置n个个体的初始集合raw_deli(局部最优节点集合),deli(总体删除节点),old_deli(旧节点集合)(i=1~n)三个集合初始均为空集。同时设置msei,初始值为0,描述deli的误差水平。最后设置global_del为群体最优方向,wrong_del作为错误方向。
46.步骤六、使得old_deli=deli,保存旧的删除节点集合。
47.步骤七、然后根据步骤四c语言仿真获得的节点信息t0,t1,结合步骤三获得的节点权值信息w,利用如下公式计算每个节点的删减函数值。
48.tr0=w
×
t0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
49.tr1=w
×
t1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
50.func0=tr0
×
tr1+tr02+tr0
×
mse
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
51.func1=tr0
×
tr1+tr12+tr1
×
mse
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
52.其中tr0代表将节点置1可能导致的误差,tr1代表将节点置0可能导致的误差,mse代表上一次迭代的mse误差值,func0,func1为对应删减函数值。
53.然后根据wrong_del中的节点,将对应节点的删减函数值扩大2倍,降低错误方向节点的优先级。对删除函数值进行排序,取得前m个节点,作为删减节点集合raw_deli。按照删除函数值的排序顺序,优先级从高到低,将每一个删减集合deli+raw_deli映射到c语言仿真结构中,通过c语言仿真,获得此删除节点集合的δmsei。若δmsei过大,将deli返回old_deli,i个体不接受此次迭代的结果,wrong_del更新raw_deli中的节点,并且i个体重复步骤七,重新获得删除节点集合。此重复最大次数为l(此变量可设置),若l次重复完成后δmsei仍过大,则从前l次中选择δmsei最小的结果作为raw_deli。
54.步骤八、根据步骤七获得的δmsei,假设最低的结果为δmsej,因此个体j的raw_delj设置为global_del,以此集合为群体最优。个体j的delj直接增加global_del中的m个节点,其余个体的deli分别从global_del随机取出m/2个节点,再从raw_deli随机取出m/2个节点。
55.步骤九、将更新后的所有deli映射到c语言仿真模型中,仿真获得msei和节点信息,若msei异常增大,此时i个体舍弃此次迭代,将deli返回old_deli。
56.步骤十、所有个体判断msei是否超过误差限制,若均超过则进行步骤十一,否则重复步骤六开始新一轮迭代。
57.步骤十一、根据步骤九确定的deli删减步骤二获得的a,获得删减后的电路结构raw_del_ai。
58.步骤十二、根据步骤二获得的复合门组合结构来提取步骤十一获得的raw_del_ai的逻辑。提取之后通过综合软件综合,完成逻辑到复合门的转变,记录产生的复合门,循环组合所有复合门,完成组合后,获得del_ai,完成电路的自动剪枝。
59.本实施例用于16个8bit加法的近似处理,在100的mse限制下获得了最高18.47%的面积削减和38.91%的功耗削减。
60.本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其他各种具体变形和组合,这些变形和组合仍然在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1