基于与门反相器图的网表级电路面积优化方法及存储介质与流程

文档序号:24875019发布日期:2021-04-30 12:49阅读:141来源:国知局
基于与门反相器图的网表级电路面积优化方法及存储介质与流程

本发明属于电路设计技术领域,具体涉及一种基于与门反相器图的网表级电路面积优化方法及存储介质。



背景技术:

随着集成电路规模的迅速增长,由于一些软硬件因素,当集成电路的规模很大时,往往在设计以及后续的综合、仿真、验证过程时造成生成电路中元器件数量的增加,这样会导致电路规模的进一步增大,造成时间,金钱的浪费。

在这种市场情况的推动下,在设计集成电路时,对于如何减少集成电路的设计迭代时间,提高设计效率以缩短设计流程,以及后续的验证等等过程,都需要考虑这些因素。在设计的过程中,由于大量的操作都需要在网表级的电路上进行,因此对网表级电路的优化显得尤其重要,在减少过多冗余电路的情况下,可以大大减小在对网表级电路操作时的代价,如后续的电路分割或者验证等。

对于初始的网表级电路模型,往往需要进行继续处理才可以用来进行下一步操作,比如进行分割等行为,需要在此基础上进行下一步的转化,对应于这些目的,虽然在现实中已经存在了相应的面积等优化方法,但这些都是对应于特定的目的进行优化,不具有普适性。



技术实现要素:

为了解决现有技术中存在的上述问题,本发明提供了一种基于与门反相器图的网表级电路面积优化方法及存储介质。本发明要解决的技术问题通过以下技术方案实现:

一种基于与门反相器图的网表级电路面积优化方法及存储介质,包括:

步骤1、获取第一网表级电路文件;

步骤2、根据所述第一网表级电路文件按照预设顺序得到若干第一节点和各个所述第一节点之间的连接关系,其中,所述第一节点为输入节点、中间节点或者输出节点;

步骤3、基于所述预设顺序将所述第一节点对应创建为与门/反相器图的第二节点,且当所述第二节点存在局部子结构时,利用散列查找方法在散列表中查找所述局部子结构的同构结构,以得到所述第二节点的创建结果,其中,所述第二节点为初始节点、与节点、反相器节点或者终端节点;

步骤4、基于所述预设顺序,按照所述步骤3的方法处理下一个所述第一节点,直至处理完成所有所述第一节点,得到最终的与门/反相器图。

在本发明的一个实施例中,基于所述预设顺序将所述第一节点对应创建为与门/反相器图的第二节点,包括:

基于所述预设顺序,在所述第一节点为所述输入节点时,创建的所述第二节点为所述初始节点,在所述第一节点为所述中间节点时,创建的所述第二节点为所述与节点,在所述第一节点为所述输出节点时,创建的所述第二节点为所述终端节点,且当两个连接的所述第一节点之间具有反相输入时,在具有反相输入的两个所述第一节点之间创建所述反相器节点。

在本发明的一个实施例中,利用散列查找方法在散列表中查找所述局部子结构的同构结构,以得到所述第二节点的创建结果,包括:

根据所述局部子结构得到输出逻辑值的地址索引;

利用散列查找方法在散列表中查找所述地址索引是否存在所述输出逻辑值,若不存在所述输出逻辑值时,说明所述第二节点不存在同构结构,则创建所述第二节点,若存在所述输出逻辑值时,说明所述第二节点存在同构结构,则不创建该第二节点。

在本发明的一个实施例中,根据所述局部子结构得到所述输出逻辑值的地址索引,包括:

根据所述局部子结构得到输出逻辑值;

根据散列函数得到所述输出逻辑值的地址索引。

在本发明的一个实施例中,若不存在所述输出逻辑值时,在所述散列表中创建所述局部子结构的输出逻辑值与所述地址索引的对应关系。

在本发明的一个实施例中,所述输出逻辑值包括第一输出逻辑值和第二输出逻辑值,其中所述第二输出逻辑值是交换位置后的第一输出逻辑值。

在本发明的一个实施例中,所述第一输出逻辑值和所述第二输出逻辑值包括所述第二节点的输入关系和反相器属性。

在本发明的一个实施例中,所述局部子结构为当前待创建的第二节点和处于该第二节点之前且相连的第二节点所构成的结构。

在本发明的一个实施例中,在所述步骤4之后,还包括:

将所述最终的与门/反相器图恢复至第二网表级电路文件。

本发明同时提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。

本发明的有益效果:

本发明提出了一种新的普适性的网表级电路面积优化方法,本发明的网表级电路面积优化方法将网表级的设计电路转化为与/反相器图的形式进行处理,同时通过散列查找的方式查找电路是否存在同构结构,以去除冗余的电路结构,从而达到减少电路结构冗余,达到电路结构面积减小的目的,最终使得内存减少。

以下将结合附图及实施例对本发明做进一步详细说明。

附图说明

图1是本发明实施例提供的一种基于与/反相器图的网表级电路面积优化方法的流程示意图;

图2是本发明实施例提供的另一种基于与/反相器图的网表级电路面积优化方法的流程示意图;

图3是本发明实施例提供的一种与/反相器图的一般结构图和利用节点与弧表示的结构图的示意图;

图4是本发明实施例提供的一种未进行优化的与/反相器图的示意图;

图5是本发明实施例提供的一种优化之后的与/反相器图的示意图;

图6是本发明实施例提供的计算机设备模块示意图。

具体实施方式

下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。

实施例一

目前针对网表级电路优化改善这一相关技术,大部分是将网表级电路进行预处理之后对应下一步的具体的操作过程,采用相应的算法对这一操作过程的代价进行优化,比如在进行网表级电路分割时,往往是在对网表级电路转化为超图形式或者其他的形式之后采用优化分割算法的时间、准确性等方面的方法进行优化,这些方式虽然可以达到优化的结果,但都是在对电路进行某种目的的操作进行优化,无法在电路本身层级之上进行优化;其次,对于一些电路规模很小的设计,人们可能会通过布尔代数如卡诺图,或者其他的简化方式,对其进行数学计算,达到减少电路结构冗余,减少电路面积的目的,这种方法针对一些很小的逻辑设计可能会比较方便,但是针对某些较大的设计,这种方法很明显是不可取的,而且在实际过程中也存在计算出错等问题。

请参见图1和图2,图1是本发明实施例提供的一种基于与门反相器图的网表级电路面积优化方法的流程示意图,图2是本发明实施例提供的另一种基于与门反相器图的网表级电路面积优化方法的流程示意图。基于上述原因,本实施例提供了一种基于与门反相器图的网表级电路面积优化方法,该网表级电路面积优化方法包括步骤1至步骤4,其中:

步骤1、获取第一网表级电路文件。

具体地,第一网表级电路文件为需要进行优化的网表级电路文件。

步骤2、根据第一网表级电路文件按照预设顺序得到若干第一节点和各个第一节点之间的连接关系,第一节点为输入节点、中间节点或者输出节点。

具体地,对输入的第一网表级电路文件,将其存储到相应的第一数据结构中,该第一数据结构中的元素顺序依次按照电路输入到输出的连接关系确定,该第一数据结构中包括了有电路的输入、输出、节点及连接关系等信息,预设顺序即为电路的输入到输出的顺序。

在本实施例中,将第一网表级电路文件的各单元作为第一节点存储在第一数据结构中,因此可以将第一网表级电路文件的若干第一节点和各个第一节点之间的连接关系按照预设顺序存储在第一数据结构中,第一节点可以为输入节点、中间节点或者输出节点,其中,输入节点为整个电路的输入单元,输入节点没有输入弧,中间节点为既有输入弧、又有输出弧的单元,输出节点为整个电路的输出单元,弧为两个节点之间的连接线。另外,对每个第一节点进行标注,以对第一节点进行区分,例如将第一节点分别标注为1、2、3、4等,则1、2、3和4则分别代表4个不同的第一节点。

步骤3、基于预设顺序将第一节点对应创建为与门/反相器图的第二节点,且当第二节点存在局部子结构时,利用散列查找方法在散列表中查找局部子结构的同构结构,以得到第二节点的创建结果,其中,第二节点为初始节点、与节点、反相器节点或者终端节点,例如,请参见图3,图3中处于箭头左边的图为与门/反相器图的一般结构,图3中处于箭头左边的图为利用节点和弧表示的图。

具体地,根据第一数据结构按照预设顺序所存储的第一节点创建与门/反相器图的第二节点,在创建第二节点时,还要判断该第二节点是否存在局部子结构,若存在局部子结构,则需要利用散列查找方法在散列表中查找该局部子结构是否存在同构结构,以根据是否存在同构结构确定该第二节点时否创建,其中,同构结构为与当前处理的节点的输入关系相等且连接弧的反相器属性相同。

其中,局部子结构为当前待创建的第二节点和处于该第二节点之前且相连的第二节点所构成的结构,例如,请参见图4,节点1的局部子结构为节点a、节点b、节点1及其连接关系构成的结构。

进一步地,基于预设顺序将第一节点对应创建为与门/反相器图的第二节点,包括:

基于预设顺序,在第一节点为输入节点时,创建的第二节点为初始节点,在第一节点为中间节点时,创建的第二节点为与节点,在第一节点为输出节点时,创建的第二节点为终端节点,且当两个连接的第一节点之间具有反相输入时,在具有反相输入的两个所述第一节点之间创建所述反相器节点。

在本实施例中,按照预设顺序调取第一数据结构中所存储的第一节点,例如图4所示,调取的顺序依次为节点a、节点b、节点1、节点2、节点3、节点4、节点5、节点6,其中,图2表示的是表达式c=xor(a,b)以及d=xnor(a,b),表示的电路结构简化为节点和弧的形式(节点为圆圈,弧为连接边),输入为a、b、c、d,输出为c,d,该图4代表的表达式的含义为如果a、b两个值相同则c的值为0,如果a、b两个值不相同,则c的结果为1。

当调取的第一节点为输入节点时,即该第一节点没有输入关系,那么该第一节点就作为与/反相器图中的初始节点,如图4中的节点a和节点b即为初始节点,例如利用creat_input函数创建与/反相器的初始节点,该creat_input函数用于创建输入的节点,即初始节点,该初始节点属于没有输入弧以及主输入的节点,由于初始节点没有输入弧,因此初始节点没有局部子结构;当调取的第一节点为中间节点时,即该第一节点不为电路的输出节点且与该第一节点有相连的节点,那么该第一节点就作为与/反相器图中的与节点,如图4中的节点1、节点2、节点3、节点4即为与节点,这四个节点的输入都是由节点a、节点b直接输入,且这四个节点均不是电路最终的输出节点,例如利用creat_and函数创建与/反相器的与节点,该creat_and函数用于创建与节点,该与节点属于有输入弧且不为电路的输出节点;当调取的第一节点为输出节点时,即该第一节点为电路的输出节点时,那么该第一节点就作为与/反相器图中的终端节点,如图4中的节点5、节点6即为终端节点,这两个节点是电路最终的输出节点,终端节点可以来用逻辑值"0"或"1"来表示;另外,因为对于与节点和终端节点而言,在其之前均存在与其相连的节点,因此可能存在反相输入,因此在创建与节点或者终端节点时,还要确定该节点与和其相连的之前的节点之间是否存在反相的输入,若存在,则需要在这两个节点之间创建一反相器节点,例如图4在创建节点2时,因为在节点a与节点2之间存在反相的输入,因此需要在节点a与节点2之间创建一反相器节点,该反相器节点即为节点a与节点2的黑色圆圈,当存在反相的输入时,那么就要调用creat_inverter函数创建反相器节点,creat_inverter用于创建反相器节点。

进一步地,利用散列查找方法在散列表中查找局部子结构的同构结构,以得到所述第二节点的创建结果,包括:

根据所述局部子结构得到输出逻辑值的地址索引;

利用散列查找方法在散列表中查找地址索引是否存在输出逻辑值,若不存在输出逻辑值时,说明第二节点不存在同构结构,则创建第二节点,若存在输出逻辑值时,说明第二节点存在同构结构,则不创建该第二节点。

在本实施例中,输出逻辑值包括第一输出逻辑值和第二输出逻辑值,其中第二输出逻辑值是交换位置后的第一输出逻辑值,第一输出逻辑值和第二输出逻辑值包括第二节点的输入关系和反相器属性,即对于当前待创建的节点,首先确定该节点的局部子结构,然后对该局部子结构进行分析,进行逻辑计算得到当前待创建的节点的相等关系和连接弧的反相器属性,得到输入逻辑与之后再通过连接弧上是否存在反相器反相得到该局部子结构的输出逻辑值,例如当前待创建的节点为节点1,则该节点1的输入由节点a、节点b输入,则对于节点1而言,其对应的局部子结构为节点a、节点b、节点1及其连接关系构成的结构,因为节点1与节点a之间、节点1与节点b之间均没有反向器节点,则节点1的局部子结构对应的输出逻辑值可以表示为1=a·b,表示输出节点1的值为节点a与节点b的结果,而在散列查找时,为了保证结果的准确性,需要交换节点a和节点b的位置,即同时考虑1=b·a是否存在,这样交换位置并不会影响结果,因此在1=a·b为第一输出逻辑值时,1=b·a即为第二输出逻辑值,又例如当前待创建的节点为节点5,则该节点5的输入由节点1、节点2输入,则对于节点5而言,其对应的局部子结构为节点1、节点2、节点5及其连接关系构成的结构,因为节点5与节点1之间、节点5与节点2之间均有反向器节点,则节点5的局部子结构对应的输出逻辑值可以表示为5=1'·2',表示输出节点5的值为节点1与节点2的结果且节点5与节点1之间、节点5与节点2之间均有反相输入,而在散列查找时,为了保证结果的准确性,需要交换节点1和节点2的位置,即同时考虑5=2'·1'是否存在。

之后,将所得到的输出逻辑值存储于第二数据结构中,然后便可以得到该输出逻辑值的地址索引,之后便可以利用散列查找方法在散列表中查找该地址索引是否存在输出逻辑值,即当输出逻辑值的地址索引确定后,如果该地址索引对应的存储位置已经存储了内容,即已经存储了输出逻辑值,则说明第二数据结构中已经存在了与该局部子结构对应的同构结构,此时则不需要创建该第二节点,直接调用第二数据结构中存储的同构结构即可,例如图4中的节点5和节点6,因为首先创建的为节点5,因为节点5对应的局部子结构的输出逻辑值已经存于第二数据结构中,因此当创建节点6时,已经存在了同构结构,因此不用创建节点6,调用节点5的结构即可,例如图5即为通过图4优化的结果。如果该地址索引对应的存储位置还没有存储内容,则说明该局部子结构没有同构结构,则该节点便需要创建。

在本实施例中,散列表表征了输出逻辑值与地址索引的对应关系,即该散列表记录了第二数据结构中所有存储有当前处理的第一网表级电路文件对应的输出逻辑值的存储位置的索引与输出逻辑值的对应关系,因此当前待处理的局部子结构对应的输出逻辑值的索引在散列表查找不到时,说明该索引对应的存储位置还没存储输出逻辑值,此时则需要在散列表中创建当前处理的局部子结构的输出逻辑值与地址索引的对应关系。

其中,根据局部子结构得到输出逻辑值的地址索引,包括:根据局部子结构得到输出逻辑值;根据散列函数得到输出逻辑值的地址索引。

也就是说,首先根据待处理的局部子结构得到该局部子结构对应的输出逻辑值,并把该输出逻辑值保存在对应的第二数据结构中,同时利用散列函数计算第二数据结构中存储该输出逻辑值的地址的结果,并将散列函数计算的结果将作为该输出逻辑值的地址索引,以便于在散列表中进行散列查找。

步骤4、基于预设顺序,按照步骤3的方法处理下一个第一节点,直至处理完成所有第一节点,得到最终的与门/反相器图。

也就是说,按照预设顺序,按照步骤3的处理方式一个一个处理第一数据结构中的第一节点,直至将所有第一节点处理完成,则便得到优化后的与门/反相器图,即最终的与门/反相器图,例如图5即为图4经过优化后的最终的与门/反相器图,由图4和图5可以看出,与之前的与门/反相器图相比,图4中的虚线圈中的内容都在创建的过程中被去掉,同时,节点6也被去掉了,d的输出弧直接连接到了节点5上,d的输出节点直接调用了节点5的局部子结构,这使得减少了对应电路结构的冗余,减少了电路面积,达到了降低内存使用的目的。

步骤5、将最终的与门/反相器图恢复至第二网表级电路文件。

也就是说,根据优化后的与门/反相器图,将优化后的与门/反相器图恢复至网表级电路文件,该网表级电路文件即为第二网表级电路文件。

本发明的有益效果在于将网表级的设计电路转化为与/反相器图的形式进行处理,通过与/反相器图的结构对网表电路进行优化,通过散列查找的方式查找电路否存在同构结构,从而使得电路的结构、面积得到优化,这样使得在重新写回网表级电路,这样可以大大减小电路的冗余,减少后续操作所需要的内存等代价,同时对优化后的网表级电路再进行分割时会大大减小内存的使用,提高分割效率。

实施例二

本发明同时提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例一的步骤。

一般的,该计算机可读存储介质可置于计算机设备中,请参见图6,该计算机设备可以包括处理器、通信接口、计算机可读存储介质和通信总线等单元或模块,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信,

计算机可读存储介质,用于存放计算机程序;

处理器,用于执行计算机可读存储介质上所存放的程序时,实现如下步骤:

步骤1、获取第一网表级电路文件;

步骤2、根据第一网表级电路文件按照预设顺序得到若干第一节点和各个第一节点之间的连接关系,其中,第一节点为输入节点、中间节点或者输出节点;

步骤3、基于预设顺序将第一节点对应创建为与门/反相器图的第二节点,且当第二节点存在局部子结构时,利用散列查找方法在散列表中查找局部子结构的同构结构,以得到第二节点的创建结果,其中,第二节点为初始节点、与节点、反相器节点或者终端节点;

步骤4、基于预设顺序,按照步骤3的方法处理下一个第一节点,直至处理完成所有第一节点,得到最终的与门/反相器图。

上述计算机设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。

通信接口用于上述电子设备与其他设备之间的通信。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

该计算机设备可以为:台式计算机、便携式计算机、智能移动终端、服务器等。在此不作限定,任何可以实现本发明的电子设备,均属于本发明的保护范围。

对于计算机设备/存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例一的部分说明即可。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。此外,本领域的技术人员可以将本说明书中描述的不同实施例或示例进行接合和组合。

尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。

本领域技术人员应明白,本申请的实施例可提供为方法、设备、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式,这里将它们都统称为“模块”或“系统”。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。计算机程序存储/分布在合适的介质中,与其它硬件一起提供或作为硬件的一部分,也可以采用其他分布形式,如通过internet或其它有线或无线电信系统。

本申请是参照本申请实施例的方法、设备和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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