CN116822422B - 数字逻辑电路的分析优化方法及相关设备 - Google Patents
数字逻辑电路的分析优化方法及相关设备 Download PDFInfo
- Publication number
- CN116822422B CN116822422B CN202311110735.5A CN202311110735A CN116822422B CN 116822422 B CN116822422 B CN 116822422B CN 202311110735 A CN202311110735 A CN 202311110735A CN 116822422 B CN116822422 B CN 116822422B
- Authority
- CN
- China
- Prior art keywords
- robdd
- node
- processed
- root node
- nodes
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000005457 optimization Methods 0.000 title claims abstract description 34
- 238000004458 analytical method Methods 0.000 title abstract description 31
- 238000010586 diagram Methods 0.000 claims abstract description 36
- 238000005192 partition Methods 0.000 claims abstract description 20
- 230000011218 segmentation Effects 0.000 claims abstract description 19
- 230000009467 reduction Effects 0.000 claims abstract description 4
- 238000012545 processing Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 238000000638 solvent extraction Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 27
- 238000000354 decomposition reaction Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000010276 construction Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000003776 cleavage reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000007017 scission Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/337—Design optimisation
Abstract
本申请提供一种数字逻辑电路的分析优化方法及相关设备。该方法,包括:获取待分析优化的数据逻辑电路;将所述数据逻辑电路转换为布尔逻辑网络;从所述布尔逻辑网络中确定目标节点;以所述目标节点为根节点,生成所述根节点对应的目标归约有序二分决策图ROBDD;根据所述目标ROBDD,对所述数字逻辑电路进行分析优化;其中,以所述目标节点为根节点,生成所述根节点对应的目标ROBDD,包括:基于所述根节点,扩展所述根节点对应的分割集,初始分割集包括所述根节点;根据扩展的所述分割集,对待处理ROBDD进行增量更新,以得到所述目标ROBDD,初始ROBDD为根据所述初始分割集构建的ROBDD。
Description
技术领域
本申请涉及数字逻辑电路技术领域,尤其涉及一种数字逻辑电路的分析优化方法及相关设备。
背景技术
随着现代数字逻辑电路的规模越来越大,用户对电路性能的要求越来越高。
在相关技术中,可以通过将数字逻辑电路转化为布尔逻辑网络,然后基于布尔逻辑网络进行电路的分析和优化。在对布尔逻辑网络进行分析时,可以通过构建归约有序二分决策图(Reduced Ordered Binary Decision Diagram,ROBDD)来表示该布尔逻辑网络,然后基于ROBDD的特性进行电路的分析和优化。
但是,本申请的发明人发现,相关技术中构建ROBDD的过程存在效率低下的问题。
发明内容
有鉴于此,本申请的目的在于提出一种数字逻辑电路的分析优化方法及相关设备,以解决或部分解决上述问题。
本申请第一方面,提供了一种数字逻辑电路的分析优化方法,包括:
获取待分析优化的数据逻辑电路;
将所述数据逻辑电路转换为布尔逻辑网络;
从所述布尔逻辑网络中确定目标节点;
以所述目标节点为根节点,生成所述根节点对应的目标归约有序二分决策图ROBDD;
根据所述目标ROBDD,对所述数字逻辑电路进行分析优化;
其中,以所述目标节点为根节点,生成所述根节点对应的目标ROBDD,包括:
基于所述根节点,扩展所述根节点对应的分割集,初始分割集包括所述根节点;
根据扩展的所述分割集,对待处理ROBDD进行增量更新,以得到所述目标ROBDD,初始ROBDD为根据所述初始分割集构建的ROBDD。
本申请第二方面,提供了一种计算机设备,包括:
一个或者多个处理器、存储器;以及
一个或多个程序;
其中,所述一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行根据第一方面所述的方法的指令。
本申请第三方面,提供了一种包含计算机程序的非易失性计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行第一方面所述的方法。
本申请提供的数字逻辑电路的分析优化方法及相关设备,通过增量更新ROBDD,提升了构建ROBDD的效率,进而提升了对数字逻辑电路进行分析与优化的效率。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A示出了一种示例性的数字逻辑电路的分析与优化过程的示意图。
图1B示出了一个示例性的布尔逻辑网络。
图2示出了本申请实施例所提供的示例性方法的示意图。
图3A示出了本申请实施例所提供的示例性方法的示意图。
图3B示出了根据本申请实施例的一种示例性初始cut的示意图。
图3C示出了根据本申请实施例的一种示例性初始ROBDD的示意图。
图4A示出了根据本申请实施例增量更新ROBDD的一种示例性方法的示意图。
图4B示出了根据本申请实施例的一种示例性待处理ROBDD的示意图。
图4C示出了根据本申请实施例的一种示例性更新后ROBDD的示意图。
图4D示出了根据本申请实施例增量更新ROBDD的另一种示例性方法的示意图。
图4E示出了根据本申请实施例的一种示例性第一ROBDD的示意图。
图4F示出了根据本申请实施例的另一种示例性待处理ROBDD的示意图。
图4G~图4J分别示出了根据本申请实施例的待处理ROBDD的示例性余因子的示意图。
图4K示出了根据本申请实施例的调整节点位置后的示例性余因子的示意图。
图4L示出了根据本申请实施例的一种示例性更新后ROBDD的示意图。
图5示出了本申请实施例所提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
随着现代数字逻辑电路的规模越来越大,功能越来越复杂,如何高效地对数字逻辑电路进行分析和优化成为了现代电子设计自动化(EDA)工具不可或缺的重要组成部分。
一个基本的优化流程可以是先将目标数字逻辑电路抽象成为布尔逻辑网络(Boolean Network),即通过构建有向无环图并在其节点上关联逻辑函数,实现对任意逻辑函数的递归定义,将原问题转化为基于布尔逻辑网络的问题。
由于布尔逻辑网络的结构特点,该网络中的任意节点都代表一个仅与基本输入(Primary Input,PI)相关的布尔逻辑函数。
令代表每个PI节点的逻辑变量,对于任一节点/>,其布尔逻辑函数可形式化地表示为/>。对数字逻辑电路进行逻辑分析与优化的本质是对/>的操作。
归约有序二分决策图(Reduced Ordered Binary Decision Diagram,ROBDD)是一种对布尔逻辑函数的表达,任何一个布尔逻辑函数,在变量顺序确定的情形下有且只有唯一的ROBDD与之对应。
实践中,ROBDD通常可以用来:化简布尔逻辑函数;分析布尔逻辑函数的性质;判断两个布尔逻辑函数是否等价。
然而在实际上,的个数可能有数十万个,直接对/>完整构建ROBDD在工程上几乎无法实现。常用的手段是对该布尔逻辑函数进行逻辑分解,将对复杂的大规模布尔逻辑函数的分析转化为多个小的布尔逻辑函数的分析。
以节点为根,沿着信号传入的方向可以构建出一个传递输入逻辑锥(TransitiveFan-in cone,TFI),其中的边界节点被称为一个分割集(cut)。在逻辑上,这个cut对应着一个对根节点/>的布尔逻辑函数的分解。
形式上,分解可以表示为,其中/>。集合{/>代表一个cut。
图1A示出了一种示例性的数字逻辑电路的分析与优化过程100的示意图。
如图1A所示,现有的数字逻辑电路的分析与优化过程的基本流程一般包括:1.寻找分解(即,生成分割集cut);2.分析/优化分解出来的函数(即,基于分割集来构建ROBDD并求解);3.递归处理每一个/>。
例如,在对数字逻辑电路进行功耗分析时,需要针对数字逻辑电路的逻辑功能进行数字信号的概率传播,常用的分析手段是构建ROBDD并对信号的相关性进行分析。
又例如,在对数字逻辑电路进行电路优化时,需要分析函数的逻辑功能并基于此在单元库中寻找更优的可行实现单元并对其进行逻辑映射(或逻辑重写)。
综上可知,对分解出的布尔逻辑函数进行二分决策图ROBDD的构建是对数字逻辑电路进行分析与优化的核心步骤。并且,针对每一次递归处理,该步骤都耗费了该次递归的绝大多数计算时间。因此,提升二分决策图ROBDD的构建效率可以显著减少运行时间、提升处理效率。
一种示例性的方法可以是,采用预先生成的cut,然后基于这些预先生成的cut来构建ROBDD。在基于ROBDD进行逻辑分析与优化的过程中,可能会导致效能和效率问题:
1)在生成cut时,一般可以用常数限定cut的大小。但是,采用这种方式,在某些电路结构下,可能会错过精准分析或者进一步优化的机会。
2)基于同一个根节点生成的多个cut分别构建ROBDD时,存在冗余计算。
在相关技术中,一种寻找分解的方法是采用“自底到顶”的递推算法,其核心为以下递归式:
其中:代表布尔逻辑网络中的节点,如果/>,则以/>为根的分解就是以其驱动节点/>的分解。如果/>,则对应的分解就是/>本身。如果/>是其他节点,则以该节点为根的分解可以由其前序节点/>,/>, … ,/>的分解组合而成。其中组合的方式如下:
其中,符号主要是限定分解集合的大小(即为cut的大小)。
上述方法割裂了生成cut的步骤和构建ROBDD的步骤,无法在生成cut时考虑其代表的布尔逻辑函数。并且,在最坏情况下,分析需要的多项式时间为/>。可以看出,该时间随着k(用于限定cut的大小的常数)的增大,呈指数级增加,因此,实践中只有通过限制/>的大小来间接控制分析逻辑函数/>的运行时间。然而,相当大的一部分布尔逻辑函数可以在可控的多项式时间内构造ROBDD。例如,行波进位的加法器的布尔逻辑函数可以在线性时间和线性空间中用ROBDD表示。对这种布尔逻辑函数进行cut大小限制会显著降低分析精度和减少优化机会,并且引入不必要的递归调用。
另外,在逻辑优化中,通常需要以每个节点为根生成多个cut并对每个cut在标准单元库中找出对应的实现单元,最终从挑选出的多个实现单元中找出最优的选择。在进行cut与标准单元库的映射时,需要对每个cut构建ROBDD,并通过ROBDD的等价判别性质来从标准单元库中挑出等价的实现单元。然而,由于这些cut具有共同的根节点,构建每个cut的ROBDD时存在冗余计算。
有鉴于此,本申请实施例提出了一种新的高效的算法来解决或部分解决以上的两大主要问题。
为了帮助理解,下面对本申请实施例所涉及的一些概念进行说明。
1)逻辑网络:一种有向无环图(Directed Acyclic Graph,DAG)。该图由节点集合与有向边集合/>构成。其中:
a)有向边表示信号的传递方向。对于有向边,定义其起始节点为尾节点,定义其指向节点为头节点。
b)输入边:对任意的节点,所有头节点为/>的边都被称为该节点/>的输入边。
c)输出边:对任意的节点,所有尾节点为/>的边都被称为该节点/>的输出边。本申请实施例的布尔逻辑网络中,所有的输出边都对应着相同的逻辑信号,该信号也被称为节点/>的输出信号。
d)直接前序节点与直接后序节点:对任意的节点,若/>为/>的直接前序节点,则存在一条以/>为尾节点,/>为头节点的边。若/>为/>的直接前序节点,则/>为/>的直接后序节点。
e)输入信号集:对任意的节点,其输入信号集表示其输入边所承载的信号的集合。
布尔逻辑网络的每一个节点对应着一种确定的布尔逻辑函数,该函数描述了输出信号与输入信号集的关系。
f)输入接口节点():一个/>的子集,该集合中的节点没有输入边。
g)输出接口节点():一个/>的子集,该集合中的节点没有输出边。
h)拓扑排序:对有向无环图一定存在拓扑排序。拓扑排序是对节点集合进行整数关联的过程。对于一个节点/>分配整数集合/>中的一个数使得任意两个节点分配到的数字不相同并且分配到的数字顺序与节点之间的拓扑顺序相同。具体地,用/>表示整数所对应的节点,对于任意的/>且/>,如果在逻辑网络上存在一条从/>到/>的路径,则/>。
由于用整数可以唯一确定地表示节点/>,在不引起歧义的前提下,后文中用/>来代表/>。
i)传递输入逻辑锥(transitive fan-in cone,TFI):一种特别子网络,指一个针对节点的集合,该集合满足:该集合中的任意节点/>到/>都存在一条路径;任何从/>到/>的路径都至少经过一个TFI集合中的某个节点。
j)分割集(cut):一个TFI的子集,移除这个集合后,所有从到/>的路径都会被阻断。可以称节点/>是cut的根节点,通常用/>作为对一个根节点在/>的一系列分割集的统称。
任意一个cut都对应着一个TFI。
k-分割集(k-cut):大小为的cut。
可行的k-分割集(k-feasible cut):大小不超过的cut。
k)最简分割集合(kernel cut):是一种特殊的cut。当移除该集合任何一个节点时都会导致该集合不再能维持分割集的基本定义,即暴露了至少一条从到/>的路径(其中/>为此cut的根节点)。
l)路径(path):一个节点组成的序列,在这个节点序列中,任何两个前后相邻的节点之间都存在一条有向边使得两个节点分别为该边的尾节点和头节点。
该序列中的第一个节点为该路径的起始节点。
该序列中的最后一个节点为该路径的终止节点。
m)重合并路径(reconverge path):两条不同路径共享相同的起始节点和终止节点。
图1B示出了一个示例性的布尔逻辑网络,图1B的节点编号代表该节点的拓扑顺序。图1B中展示了数字逻辑电路对应的整个布尔逻辑网络中的一个部分。
如图1B所示,针对节点1,分割集合{7, 8},{12, 11, 10, 9},{1},{2, 3, 4}表示了一些kernel cut的例子。可以验证,任意删除这些cut的任一元素都会导致其丧失cut的属性。而{3, 5, 6, 7}则属于一种非最简分割集合(non kernel cut),在移除节点3之后,该集合仍然可以保持cut的属性。路径{7,4,2}与{7,5,2}可以称为一组reconverge path。
针对现有方法的两大缺点:1)割裂cut的生成与ROBDD的构建,导致分析结果误差、优化结果次优且效率低下;2)针对同一个根节点的多个cut,若针对每个cut都构建ROBDD,将会导致多次构建同一个根节点的cut的ROBDD时的冗余计算。
本申请实施例提供了一种数字逻辑电路的分析优化方法及相关设备,通过增量更新ROBDD,提升了构建ROBDD的效率,进而提升了对数字逻辑电路进行分析与优化的效率。在一些实施例中,本申请实施例提出了一种基于“自顶到底”的算法来同时生成cut并高效地、动态地更新ROBDD的方法。
图2示出了本申请实施例所提供的示例性方法200的示意图。
在步骤202,获取待分析优化的数据逻辑电路。
本步骤中,待分析优化的数据逻辑电路可以是基于芯片设计而生成的。例如,通过逻辑综合转换成网表文件,然后通过布局布线之后得到待分析优化的数据逻辑电路。
可以理解,结合前面所述,本申请实施例的分析优化可以是分析或者优化,或者分析与优化,具体操作可以根据用户需求进行设定,在此不做限制。
在步骤204,将所述数据逻辑电路转换为布尔逻辑网络。
如前所述,数据逻辑电路可以等效转化为一个布尔逻辑网络(Boolean Network),从而可以通过对布尔逻辑网络进行分析与优化来完成对应数据逻辑电路的分析与优化。
在步骤206,从所述布尔逻辑网络中确定目标节点。
如前所述,以对数字逻辑电路进行逻辑优化为例,可以是以每个节点为根节点来生成多个cut并对每个cut在标准单元库中找出对应的实现单元,最终从挑选出的多个实现单元中找出最优的选择来替换该节点对应的原来的实现单元,从而实现逻辑优化。
在进行cut与标准单元库的映射时,需要对每个cut构建ROBDD,并通过ROBDD的等价判别性质来从标准单元库中挑出等价的实现单元。
因此,在本步骤中,可以先确定一个目标节点,从而可以基于该目标节点进行后续的分析与优化的操作。
在步骤208,以所述目标节点为根节点,生成所述根节点对应的目标归约有序二分决策图ROBDD。
在步骤210,根据所述目标ROBDD,对所述数字逻辑电路进行分析优化。
如前所述,在得到所述目标ROBDD之后,就可以基于所述目标ROBDD,通过等价判别来从标准单元库中挑出等价的实现单元,从而可以基于该挑选出的等价实现单元来对所述数字逻辑电路进行分析优化。
本申请实施例为了提升构建ROBDD的效率,在步骤208,采用了一种新的增量更新ROBDD的方法来得到目标ROBDD。
作为一个可选实施例,步骤208可以进一步包括:
基于所述根节点,扩展所述根节点对应的分割集,初始分割集包括所述根节点;
根据扩展的所述分割集,对待处理ROBDD进行增量更新,以得到所述目标ROBDD,初始ROBDD为根据所述初始分割集构建的ROBDD。
这样,通过增量更新ROBDD,从而提升了构建ROBDD的效率。
以下通过更加具体的描述来对增量更新ROBDD的方法进行说明。
图3A示出了根据本申请实施例的增量更新ROBDD的示例性方法300的示意图。
如图3A所示,本申请实施例提供了一种新的更新ROBDD的方法。其基本流程框架如图3A所示,该方法300的主要步骤包括:预处理、扩展cut和增量更新ROBDD。
在步骤302,可以对输入进行预处理。可选地,输入可以包括布尔逻辑网络(该网络可以是目标电路对应的完整的布尔逻辑网络,也可以是该完整的布尔逻辑网络的一部分)、从布尔逻辑网络中选定的根节点以及所述方法的停止条件。
具体地,可以从输入的布尔逻辑网络中选定一个节点来作为根节点。选定根节点的方式可以是任意的,例如,可以是用户指定的,或者,采用默认规则从布尔逻辑网络中选定一个节点来作为根节点,还可以是从布尔逻辑网络中随机选择一个节点来作为根节点,等等。
预处理步骤的核心操作可以是生成初始cut和初始ROBDD。初始cut是TFI仅包含根节点自身的平凡cut(non kernel cut)。初始ROBDD则表达了根节点对应的布尔逻辑函数。在输入包括选定的根节点的情况下,可以针对该根节点构建初始cut和初始ROBDD。
结合图2所示,该步骤302可以用于实现前述的步骤202~206。
图3B示出了根据本申请实施例的一种示例性初始cut的示意图,图3C示出了根据本申请实施例的一种示例性初始ROBDD的示意图。
如图3B所示,根节点为r,该节点代表了与逻辑,初始cut为,对应的初始ROBDD如图3C所示,其中实线代表正边,虚线代表负边。
在完成预处理步骤之后,如图3A所示,可以进入步骤304,对cut进行拓展。可选地,步骤304可以进一步包括基于所述根节点,扩展所述根节点对应的分割集,初始分割集包括所述根节点。
拓展cut的核心步骤可以是从cut集合中选择一个节点,然后将其替换为该节点的直接前序节点。
例如,令表示一个cut,/>表示拓展的方向,/>为/>的直接前序节点集合,则拓展后的新cut为/>。
在一些实施例中,选择拓展方向节点也可以是拓展步骤的关键。在不同应用目标(例如,分析目标、优化目标)中,针对拓展方向,可能存在不同的偏好,本申请对此不做限制(选择不同的拓展方向并不能绕过本申请的保护范围)。为了最大化提升增量更新ROBDD的效率,可以选择ROBDD的根节点所代表的节点作为拓展方向节点。在这种选择下的ROBDD增量更新可以做到常数时间。
高效地在拓展cut后增量更新ROBDD是本申请实施例的核心工作。因此,在扩展cut之后,如图3A所示,可以进入步骤306,增量更新ROBDD。可选地,步骤306可以进一步包括:根据扩展的所述分割集,对待处理ROBDD进行增量更新,以得到所述目标ROBDD,初始ROBDD为根据所述初始分割集构建的ROBDD。
下面分情况讨论高效更新ROBDD的方法。
如前所述,根据应用目标的不同,拓展方向可能是不同的。
因此,在更新ROBDD之后,可以先确定所述分割集的扩展方向节点,然后根据所述扩展方向节点,对所述待处理ROBDD进行增量更新。
作为一个可选实施例,根据所述扩展方向节点,对所述待处理ROBDD进行增量更新,可以进一步包括:
响应于确定所述扩展方向节点为所述待处理ROBDD的根节点,基于所述扩展方向节点对所述待处理ROBDD进行增量更新;
响应于确定所述扩展方向节点不是所述待处理ROBDD的根节点,将所述扩展方向节点调整为所述待处理ROBDD的根节点,并基于位置调整后的扩展方向节点对所述待处理ROBDD进行增量更新。
由此可见,当所述扩展方向节点为所述待处理ROBDD的根节点,可以基于所述扩展方向节点对所述待处理ROBDD进行增量更新,而当所述扩展方向节点不是所述待处理ROBDD的根节点时,需要先将所述扩展方向节点调整为所述待处理ROBDD的根节点之后,在基于位置调整后的扩展方向节点对所述待处理ROBDD进行增量更新。
进一步地,对于扩展后的分割集(cut),根据新加入的所述扩展方向节点的直接前序节点与当前的所述待处理ROBDD中除所述扩展方向节点以外的其他节点是否具有相关性,需要进行区别处理。
鉴于此,在一些实施例中,基于所述根节点,扩展所述根节点对应的分割集,包括:确定所述扩展方向节点的直接前序节点的第一集合,将所述扩展方向节点从所述分割集中删除,并将所述第一集合与删除所述扩展方向节点的所述分割集进行合并,得到扩展后的分割集;
基于所述扩展方向节点对所述待处理ROBDD进行增量更新,包括:
响应于确定所述第一集合与删除所述扩展方向节点的所述分割集中的所有节点均无相关性,基于所述第一集合对所述待处理ROBDD进行增量更新;
响应于确定所述第一集合与删除所述扩展方向节点的所述分割集中的至少一个节点具有相关性,将所述第一集合分为第二集合和第三集合,所述第二集合包括去掉所述至少一个节点的所述第一集合,所述第三集合包括所述至少一个节点;分别基于所述第二集合和所述第三集合对所述待处理ROBDD进行增量更新。
接下来对上述情况进行详细地区分讨论。
如前所述,第一种情况是,所述拓展方向节点为所述待处理ROBDD(/>)的根节点。这里面又分为两种子情况,第一种子情况是拓展方向节点/>的直接前序节点的第一集合与删除所述扩展方向节点/>的当前分割集中的所有节点都没有相关性(这种子情况在实践中通常大概率出现),第二种子情况是第一集合/>与删除所述扩展方向节点/>的当前分割集中的至少部分节点具有相关性(这种子情况在实践中通常小概率出现)。这里,没有相关性可以是指第一集合/>中的每个节点不属于所述待处理ROBDD(/>)中的任一节点。相应地,有相关性可以是指,第一集合/>中的至少部分节点与所述待处理ROBDD(/>)中的至少部分节点是重合的。
因此,在一些实施例中,针对第一种子情况,即:新加入分割集的节点,即第一集合与当前的待处理ROBDD(/>)的根节点下所有的节点(亦即,/>中除根节点外的其他所有节点)没有相关性,则基于所述第一集合对所述待处理ROBDD进行增量更新,如图4A所示,可以进一步包括以下步骤:
在步骤402,基于所述第一集合,以所述扩展方向节点为根节点构建第一ROBDD。
本步骤中,可以针对所述扩展方向节点的平凡cut构造第一ROBDD,其变量为。构造完成的第一ROBDD,设为/>。
如图3B所示,假设该扩展方向节点的直接前序节点为/>,构造得到的第一ROBDD(/>)如图3C所示。
在步骤404,移除所述待处理ROBDD()的根节点以及所述第一ROBDD(/>)的叶子节点。
在步骤406,将所述第一ROBDD()中指向常数1的叶子节点的边全部指向所述待处理ROBDD(/>)的正向子图的根节点。
在步骤408,将所述第一ROBDD()中指向常数0的叶子节点的边全部指向所述待处理ROBDD(/>)的负向子图的根节点。
在步骤410,得到更新后的ROBDD(),其中,所述第一ROBDD(/>)的根节点即为所述更新后的ROBDD(/>)的根节点。
图4B示出了根据本申请实施例的示例性待处理ROBDD()的示意图。图4C示出了根据本申请实施例的示例性更新后ROBDD(/>)的示意图。
如图4C所示,在经过前述处理步骤之后,图4B所示的待处理ROBDD()被更新为更新后ROBDD(/>),且该更新为增量更新,即,在待处理ROBDD(/>)的基础上删除了扩展方向节点/>,并新增了扩展方向节点/>的直接前序节点/>。
显而易见,由于新增节点与/>内节点不相关,并且/>与/>也是ROBDD,/>不存在进一步化简的可能,其依然是一个ROBDD。
由于第一ROBDD()是一个平凡cut的逻辑表达,/>内节点与边的数目为常数。因此连接可以在常数时间完成,换言之,ROBDD的更新可以在常数时间完成。并且,由于第一种子情况在实践中通常大概率出现,使得ROBDD在大多数情况下都可以在常数时间完成更新,从而大幅提高了构建ROBDD的效率。
在一些实施例中,针对前面所述的第二种子情况,即:新加入分割集的节点,即第一集合与当前的待处理ROBDD(/>)的根节点下至少部分节点(亦即,/>中除根节点外的其他所有节点中的至少部分节点)有相关性,则分别基于所述第二集合和所述第三集合对所述待处理ROBDD进行增量更新,如图4D所示,可以进一步包括以下步骤:
在步骤412,基于所述第一集合,以所述扩展方向节点为根节点构建第一ROBDD,其中,所述至少一个节点在所述第一集合中的顺序排在所述第二集合之后。这里需要说明的是,由于ROBDD是归约有序二分决策图,因此,构建ROBDD所使用的变量需要具有确定的顺序,在本步骤中,在确定变量顺序时,需要将第二集合对应的节点变量放在第三集合的节点变量的前面,该顺序一旦确定,后续在构建ROBDD时都需要遵循该变量顺序。
如前所述,当第一集合与当前的待处理ROBDD(/>)的根节点下至少部分节点有相关性时,可以把第一集合/>分为第二集合和第三集合。
具体地,可以找出包含相关节点的第三集合。第二集合则为}。
然后,可以针对所述扩展方向节点的平凡cut构造第一ROBDD,其变量及顺序为},其中,变量顺序的设置可以是任意的(只需满足将第二集合对应的节点变量放在第三集合的节点变量的前面即可),但是,一旦变量顺序确定,后续在构建ROBDD时都需要遵循该变量顺序。构造完成的第一ROBDD,设为/>。
在步骤414,将所述第一ROBDD()分割为与所述第二集合对应的第二ROBDD(/>)和与所述第三集合的所述至少一个节点对应的至少一个第三ROBDD(/>)。其中,第二ROBDD(/>)的变量为/>。至少一个第三ROBDD(/>)的变量对应为。
在步骤416,针对所述第三集合()中所有节点的取值组合,在所述待处理ROBDD()的正向子图或负向子图下计算余因子(cofactor),并将所述第三ROBDD(/>)中指向叶子节点的边根据所述取值组合重新指向到所述待处理ROBDD(/>)的对应的余因子上。
具体地,对中的每一个/>,执行以下步骤:
a)对内所有/>的元素(即节点)的取值组合(其中,每个元素的取值可以是0或1,该取值组合可以是指每两个元素分别取0或1的排列组合),在/>的正向子图或者负向子图下计算cofactor。
其中,每个cofactor是一个布尔逻辑函数,并且基于ROBDD可以高效地计算。可以认为这些cofactor是的一个子图。例如,/>代表一个/>在节点变量取值为/>且/>的一个cofactor。
根据香农展开(Shannon's expansion)原理,针对任何n元布尔逻辑函数f(x1 x2… xi … xn):
f(x1 x2 … xi … xn)=xi∙f(x1 x2 … xi=1 … xn)+ ∙f(x1 x2 … xi=0 …xn);
其中,正余因子(Positive cofactor)为fx=f(x1 x2 … xi=1 … xn),负余因子(Negative cofactor)为fx=f(x1 x2 … xi=0 … xn)。
因此,在的正向子图下计算的cofactor可以是正余因子,在/>的负向子图下计算的cofactor可以是负余因子。
b)将中指向叶子节点的边根据/>的取值组合重新指向到对应的cofactor上。具体地,可以是将/>中指向常数1的叶子节点的边,重新指向到正余因子上,将/>中指向常数0的叶子节点的边,重新指向到负余因子上。
在步骤418,针对所述第二ROBDD()中的直接指向所述第二ROBDD的第一叶子节点(例如,常数1的叶子节点)的边,若所述待处理ROBDD的正向子图不包含所述第三集合(/>)中的节点,则将所述直接指向所述第二ROBDD的第一叶子节点的边连接到所述待处理ROBDD(/>)的正向子图的根节点;若所述待处理ROBDD的正向子图包含所述第三集合(/>)中的至少一个节点,调整所述待处理ROBDD(/>)的正向子图的节点的顺序,使属于所述第三集合的节点位于所述待处理ROBDD的顶端且顺序满足所述第三集合的节点顺序,并将所述直接指向所述第二ROBDD的第一叶子节点的边连接到调整节点顺序后的所述待处理ROBDD的正向子图的根节点。
具体地,针对中直接指向常数1的叶子节点的边,按照如下情况进行连接:
a)当的正向子图不含/>内元素时,将/>中直接指向常数1的叶子节点的边连接到的正向子图的根节点。
b)当的正向子图包含/>内元素时,调整/>的正向子图的节点变量的顺序,使其内属于/>的元素位于ROBDD顶端(靠近根节点)并且满足/>内元素的顺序(如前所述,已经设定好的)。
在一些实施例中,调整所述待处理ROBDD的正向子图的节点的顺序,包括:
在所述待处理ROBDD的正向子图所包含所述第三集合中的节点确定第一目标节点;
基于所述待处理ROBDD的正向子图求取正余因子和负余因子;
创建一个第二目标节点以替代所述第一目标节点;
从所述第二目标节点创建一条正边来指向所述正余因子的根节点,并从所述第二目标节点创建一条负边来指向所述负余因子的根节点。
当所述待处理ROBDD的正向子图所包含所述第三集合中的节点多于一个时,可以递归使用上述方法调整节点顺序。
例如,变量为ROBDD/>内的非根节点变量。若需要将/>调整为根节点变量,/>调整为次根节点变量,则首先利用上述方法将/>调整至根节点位置,其次递归地将/>调整至/>的正向cofactor与负向cofactor的根节点位置。具体是先调整x还是y,可以根据变量顺序来确定调整顺序,例如,x在/>内的排序在y的前面,则先调整x再调整y。
上述步骤中核心的操作是求cofactor。该操作可以在线性时间内完成,集合的元素数目可以认为是一个常数。一般数字逻辑电路该常数不超过8,特别对于逻辑优化常用的经典逻辑网络AIG(And Inverter Graph)来说/>集合的元素数目不超过2。因此当拓展节点与现有节点存在重复时,其运行时间为常数次cofactor。
在步骤420,针对所述第二ROBDD中的直接指向所述第二ROBDD的第二叶子节点(例如,常数0的叶子节点)的边,若所述待处理ROBDD的负向子图不包含所述第三集合中的节点,则将所述直接指向所述第二ROBDD的第二叶子节点的边连接到所述待处理ROBDD的负向子图的根节点;若所述待处理ROBDD的负向子图包含所述第三集合中的节点,调整所述待处理ROBDD的负向子图的节点的顺序,使属于所述第三集合的节点位于所述待处理ROBDD的顶端且顺序满足所述第三集合的节点顺序,并将所述直接指向所述第二ROBDD的第二叶子节点的边连接到调整节点顺序后的所述待处理ROBDD的负向子图的根节点。
具体地,针对中直接指向常数0的叶子节点的边,按照如下情况进行连接:
a)当的负向子图不含/>内元素时,将/>中直接指向常数0的叶子节点的边连接到的负向子图的根节点。
b)当的负向子图包含/>内元素时,调整/>的负向子图的节点变量的顺序,使其内属于/>的元素位于ROBDD顶端(靠近根节点)并且满足/>内元素的次序。
在一些实施例中,调整所述待处理ROBDD的负向子图的节点的顺序,包括:
在所述待处理ROBDD的负向子图所包含所述第三集合中的节点确定第三目标节点;
基于所述待处理ROBDD的负向子图求取正余因子和负余因子;
创建一个第四目标节点以替代所述第三目标节点;
从所述第四目标节点创建一条正边来指向所述正余因子的根节点,并从所述第四目标节点创建一条负边来指向所述负余因子的根节点。
类似地,当所述待处理ROBDD的负向子图所包含所述第三集合中的节点多于一个时,可以递归使用上述方法调整节点顺序。
例如,变量为ROBDD/>内的非根节点变量。若需要将/>调整为根节点变量,/>调整为次根节点变量,则首先利用上述方法将/>调整至根节点位置,其次递归地将/>调整至/>的正向cofactor与负向cofactor的根节点位置。具体是先调整x还是y,可以根据变量顺序来确定调整顺序,例如,x在/>内的排序在y的前面,则先调整x再调整y。
上述步骤中核心的操作是求cofactor。该操作可以在线性时间内完成,集合的元素数目可以认为是一个常数。一般数字逻辑电路该常数不超过8,特别对于逻辑优化常用的经典逻辑网络AIG(And Inverter Graph)来说/>集合的元素数目不超过2。因此当拓展节点与现有节点存在重复时,其运行时间为常数次cofactor。
在步骤422,对经过前述处理的所述待处理ROBDD进行化简,得到更新后的ROBDD,其中,所述第二ROBDD的根节点即为所述更新后的ROBDD的根节点。
如前所述,在前述步骤416-420的处理之后,当前的所述待处理ROBDD()中存在一些重复的节点,因此,需要对其进行化简来得到更新后的ROBDD(/>)。
在一些实施例中,对经过前述处理的所述待处理ROBDD进行化简,得到更新后的ROBDD,包括:
针对属于所述至少一个第三ROBDD的所有节点(即,所有的属于的节点),按照其在所述经过前述处理的所述待处理ROBDD中从叶子节点到根节点的节点顺序,按照以下方法化简:
若第一节点的正边和负边均指向同一个节点(例如,第二节点/>),则将所述第一节点/>删除,并将所有指向所述第一节点/>的边都指向所述第二节点/>;
若第一节点和第二节点/>的正边均指向第三节点/>且负边均指向第四节点/>,则将所述第一节点/>删除,并将所有指向所述第一节点/>的边都指向所述第二节点/>。
经过上述化简后,得到更新后的ROBDD(),其根节点即为/>的根节点。
下面结合图示说明当新引入的节点与已有节点存在相关性下的ROBDD更新流程。
假设图4E示出的是第一ROBDD(),在引入的新节点/>中,节点/>与待处理ROBDD(/>)的根节点下的其他节点是重复的(有相关性),则可以将所述第一ROBDD(/>)分割为与所述第二集合对应的第二ROBDD(/>)和与所述第三集合对应的第三ROBDD(/>)。
图4F示出了一个示例性的当前的待处理ROBDD(),并且,根据扩展方向节点/>与新节点/>的取值组合(即,/>、/>、/>分别取0或1时的排列组合),对当前的待处理ROBDD()求余因子,得到:
当=1且/>=1,求得余因子如图4G所示;
当=0,求得余因子如图4H所示;
当=0且/>=0,求得余因子如图4I所示。
然后,由于图4H所示的余因子中包括节点,可以进一步调整图4H所示的余因子中的节点/>的顺序,使得节点/>成为根节点。
在调整节点的顺序时,首先分别求得图4H所示的子图的以下余因子:
当=0且/>=0,求得余因子如图4I所示;
当=0且/>=1,求得余因子如图4J所示。
基于上述余因子,将节点调整为根节点,如图4K所示。
按照前述的方法进行连接,最终得到的更新后的ROBDD如图4L所示。
下面介绍前面所述的第二种情况,即拓展方向节点不是所述待处理ROBDD(/>)的根节点。
如前所述,在一些实施例中,响应于确定所述扩展方向节点不是所述待处理ROBDD(/>)的根节点,将所述扩展方向节点/>调整为所述待处理ROBDD(/>)的根节点,并基于位置调整后的扩展方向节点对所述待处理ROBDD进行增量更新。
换言之,在第二种情况下,由于需要拓展的节点不是现有ROBDD根节点,可以采用变量顺序调整的手段先将扩展方向节点调整至待处理ROBDD(/>)的根节点位置,然后采用前述第一种情况的处理方式来对调整ci之后的待处理ROBDD(/>)进行处理,从而得到增量更新的目标ROBDD。
调整ROBDD内变量的顺序可以用ROBDD求cofactor的来实现。因此,在一些实施例中,将所述扩展方向节点调整为所述待处理ROBDD的根节点(/>),包括:
基于所述待处理ROBDD求取正余因子和负余因子;
创建一个第五目标节点以替代所述扩展方向节点;
从所述第五目标节点创建一条正边来指向所述正余因子的根节点,并从所述第五目标节点创建一条负边来指向所述负余因子的根节点。
具体地,设为ROBDD/>内的非根节点变量,利用香农展开原来可以使得/>成为/>的root节点。具体步骤为:
1、分别基于求取positive cofactor/>和 negative cofactor/>。
2、创建一个新的ROBDD节点代表。
3、从上述新代表的ROBDD节点创建一条正向边,使得其指向/>的根节点。
4、从上述新代表的ROBDD节点创建一条负向边,使得其指向/>的根节点。
当存在多个变量需要调整顺序时,可以递归使用上述方法调整顺序。例如,变量为ROBDD/>内的非根节点变量。若需要将/>调整为根节点变量,/>调整为次根节点变量,则首先利用上述方法将/>调整至根节点位置,其次递归地将/>调整至/>的正向cofactor与负向cofactor的根节点位置。
上述步骤中核心的操作是求cofactor。该操作可以在线性时间内完成,集合的元素数目可以认为是一个常数。一般数字逻辑电路该常数不超过8,特别对于逻辑优化常用的经典逻辑网络AIG(And Inverter Graph)来说/>集合的元素数目不超过2。因此当拓展节点与现有节点存在重复时,其运行时间为常数次cofactor。
至此,完整描述了在拓展cut时增量更新ROBDD的方法。
根据前面所述可以看出,本申请实施例通过在扩展cut之后做ROBDD的增量更新,将cut的生成与ROBDD的构建结合起来,避免了分析结果误差、优化结果次优且效率低下的问题。并且,由于ROBDD是根据cut的扩展方向节点来进行增量更新,因此每次扩展cut只需要增量更新一个ROBDD,避免了多次构建同一个根节点的cut的ROBDD时的冗余计算。
经过上述处理之后,完成一次cut的扩展以及一次ROBDD的更新,此时可以确定是否满足停止条件,若不满足,则继续按照上述方法进行下一次扩展和ROBDD的增量更新,直到满足停止条件后,如图3A所示,进入步骤308,返回当前cut和当前ROBDD,以进行数字逻辑电路的分析与优化。
在实际中,由于布尔逻辑网络的规模极大,在理论上无法对整个网络建立ROBDD。
有鉴于此,在一些实施例中,可以引入更为直接的停止条件,例如监控每次增量更新后的ROBDD的节点数目。
采用这样的停止条件比控制cut的大小会更为优越:
对于实际中大量的逻辑结构,用ROBDD方法可以在线性时间空间内表达。对于这种逻辑结构的分析优化应该放松cut大小的限制以达到更高的分析精度,更优的优化结果和更快的运行时间。
在遇到复杂的逻辑结构,使得ROBDD的节点数目大规模增长时,利用此停止条件使得运行时间不会指数增长。
需要理解的是,上述停止条件的设置仅是为了实现更优的效果,其他停止条件不可绕过本申请保护范围。
需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本申请的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的方法200或300。
图5示出了本申请实施例所提供的一种计算机设备500的结构示意图。该计算机设备500可以包括:处理器502、存储器504、网络接口506、外围接口508和总线510。其中处理器502、存储器504、网络接口506和外围接口508通过总线510实现彼此之间在设备内部的通信连接。
处理器502可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(Application Specific Integrated Circuit,ASIC)或者一个或多个集成电路。处理器502可以用于执行与本申请描述的技术相关的功能。在一些实施例中,处理器502还可以包括集成为单一逻辑组件的多个处理器。如图5所示,处理器502可以包括多个处理器502a、502b和502c。
存储器504可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。例如,如图5所示,存储的数据可以包括程序指令(例如,用于实现本申请的技术方案的程序指令)以及待处理的数据。处理器502也可以访问存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器504可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口506可以配置为经由网络向计算机设备500提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口506可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口508可以配置为将计算机设备500与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线510可以被配置为在计算机设备500的各个组件(例如处理器502、存储器504、网络接口506和外围接口508)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述设备仅示出了处理器502、存储器504、网络接口506、外围接口508和总线510,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的计算机设备用于实现前述任一实施例中相应的方法200或300,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的方法200或300。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的方法200或300,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法200或300相对应的,本申请还提供了一种计算机程序产品,其包括计算机程序。在一些实施例中,所述计算机程序由一个或多个处理器可执行以使得所述处理器执行所述的方法200或300。对应于方法200或300各实施例中各步骤对应的执行主体,执行相应步骤的处理器可以是属于相应执行主体的。
上述实施例的计算机程序产品用于使处理器执行如上任一实施例所述的方法200或300,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数字逻辑电路的分析优化方法,包括:
获取待分析优化的数据逻辑电路;
将所述数据逻辑电路转换为布尔逻辑网络;
从所述布尔逻辑网络中确定目标节点;
以所述目标节点为根节点,生成所述根节点对应的目标归约有序二分决策图ROBDD;
根据所述目标ROBDD,对所述数字逻辑电路进行分析优化;
其中,以所述目标节点为根节点,生成所述根节点对应的目标ROBDD,包括:
基于所述根节点,扩展所述根节点对应的分割集,初始分割集包括所述根节点;
根据扩展的所述分割集,对待处理ROBDD进行增量更新,以得到所述目标ROBDD,初始ROBDD为根据所述初始分割集构建的ROBDD;
其中,基于所述根节点,扩展所述根节点对应的分割集,包括:确定扩展方向节点的直接前序节点的第一集合;
根据扩展的所述分割集,对待处理ROBDD进行增量更新,包括基于所述扩展方向节点对所述待处理ROBDD进行增量更新;
所述基于所述扩展方向节点对所述待处理ROBDD进行增量更新,具体包括:
响应于确定所述第一集合与删除所述扩展方向节点的所述分割集中的所有节点均无相关性,基于所述第一集合对所述待处理ROBDD进行增量更新;
响应于确定所述第一集合与删除所述扩展方向节点的所述分割集中的至少一个节点具有相关性,将所述第一集合分为第二集合和第三集合,所述第二集合包括去掉所述至少一个节点的所述第一集合,所述第三集合包括所述至少一个节点;分别基于所述第二集合和所述第三集合对所述待处理ROBDD进行增量更新。
2.如权利要求1所述的方法,其中,根据扩展的所述分割集,对待处理ROBDD进行增量更新,包括:
确定所述分割集的扩展方向节点;
根据所述扩展方向节点,对所述待处理ROBDD进行增量更新。
3.如权利要求2所述的方法,其中,根据所述扩展方向节点,对所述待处理ROBDD进行增量更新,包括:
响应于确定所述扩展方向节点为所述待处理ROBDD的根节点,基于所述扩展方向节点对所述待处理ROBDD进行增量更新;
响应于确定所述扩展方向节点不是所述待处理ROBDD的根节点,将所述扩展方向节点调整为所述待处理ROBDD的根节点,并基于位置调整后的扩展方向节点对所述待处理ROBDD进行增量更新。
4.如权利要求1所述的方法,其中,基于所述第一集合对所述待处理ROBDD进行增量更新,包括:
基于所述第一集合,以所述扩展方向节点为根节点构建第一ROBDD;
移除所述待处理ROBDD的根节点以及所述第一ROBDD的叶子节点;
将所述第一ROBDD中指向常数1的叶子节点的边全部指向所述待处理ROBDD的正向子图的根节点;
将所述第一ROBDD中指向常数0的叶子节点的边全部指向所述待处理ROBDD的负向子图的根节点;
得到更新后的ROBDD,其中,所述第一ROBDD的根节点即为所述更新后的ROBDD的根节点。
5.如权利要求1所述的方法,其中,分别基于所述第二集合和所述第三集合对所述待处理ROBDD进行增量更新,包括:
基于所述第一集合,以所述扩展方向节点为根节点构建第一ROBDD,其中,所述至少一个节点在所述第一集合中的顺序排在所述第二集合之后;
将所述第一ROBDD分割为与所述第二集合对应的第二ROBDD和与所述第三集合的所述至少一个节点对应的至少一个第三ROBDD;
针对所述第三集合中所有节点的取值组合,在所述待处理ROBDD的正向子图或负向子图下计算余因子,并将所述第三ROBDD中指向叶子节点的边根据所述取值组合重新指向到所述待处理ROBDD的对应的余因子上;
针对所述第二ROBDD中的直接指向所述第二ROBDD的第一叶子节点的边,若所述待处理ROBDD的正向子图不包含所述第三集合中的节点,则将所述直接指向所述第二ROBDD的第一叶子节点的边连接到所述待处理ROBDD的正向子图的根节点;若所述待处理ROBDD的正向子图包含所述第三集合中的节点,调整所述待处理ROBDD的正向子图的节点的顺序,使属于所述第三集合的节点位于所述待处理ROBDD的顶端且顺序满足所述第三集合的节点顺序,并将所述直接指向所述第二ROBDD的第一叶子节点的边连接到调整节点顺序后的所述待处理ROBDD的正向子图的根节点;
针对所述第二ROBDD中的直接指向所述第二ROBDD的第二叶子节点的边,若所述待处理ROBDD的负向子图不包含所述第三集合中的节点,则将所述直接指向所述第二ROBDD的第二叶子节点的边连接到所述待处理ROBDD的负向子图的根节点;若所述待处理ROBDD的负向子图包含所述第三集合中的节点,调整所述待处理ROBDD的负向子图的节点的顺序,使属于所述第三集合的节点位于所述待处理ROBDD的顶端且顺序满足所述第三集合的节点顺序,并将所述直接指向所述第二ROBDD的第二叶子节点的边连接到调整节点顺序后的所述待处理ROBDD的负向子图的根节点;
对经过前述处理的所述待处理ROBDD进行化简,得到更新后的ROBDD,其中,所述第二ROBDD的根节点即为所述更新后的ROBDD的根节点。
6.如权利要求5所述的方法,其中,对经过前述处理的所述待处理ROBDD进行化简,得到更新后的ROBDD,包括:
针对属于所述至少一个第三ROBDD的所有节点,按照其在所述经过前述处理的所述待处理ROBDD中从叶子节点到根节点的节点顺序,按照以下方法化简:
若第一节点的正边和负边均指向第二节点,则将所述第一节点删除,并将所有指向所述第一节点的边都指向所述第二节点;
若第一节点和第二节点的正边均指向第三节点且负边均指向第四节点,则将所述第一节点删除,并将所有指向所述第一节点的边都指向所述第二节点。
7.如权利要求5所述的方法,其中,调整所述待处理ROBDD的正向子图的节点的顺序,包括:
在所述待处理ROBDD的正向子图所包含所述第三集合中的节点确定第一目标节点;
基于所述待处理ROBDD的正向子图求取正余因子和负余因子;
创建一个第二目标节点以替代所述第一目标节点;
从所述第二目标节点创建一条正边来指向所述正余因子的根节点,并从所述第二目标节点创建一条负边来指向所述负余因子的根节点;或者
调整所述待处理ROBDD的负向子图的节点的顺序,包括:
在所述待处理ROBDD的负向子图所包含所述第三集合中的节点确定第三目标节点;
基于所述待处理ROBDD的负向子图求取正余因子和负余因子;
创建一个第四目标节点以替代所述第三目标节点;
从所述第四目标节点创建一条正边来指向所述正余因子的根节点,并从所述第四目标节点创建一条负边来指向所述负余因子的根节点。
8.如权利要求3所述的方法,其中,将所述扩展方向节点调整为所述待处理ROBDD的根节点,包括:
基于所述待处理ROBDD求取正余因子和负余因子;
创建一个第五目标节点以替代所述扩展方向节点;
从所述第五目标节点创建一条正边来指向所述正余因子,并从所述第五目标节点创建一条负边来指向所述负余因子。
9. 一种计算机设备,包括:
一个或者多个处理器、存储器;以及
一个或多个程序;
其中,所述一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行根据权利要求1-8中任一项所述的方法的指令。
10.一种包含计算机程序的非易失性计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311110735.5A CN116822422B (zh) | 2023-08-31 | 2023-08-31 | 数字逻辑电路的分析优化方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311110735.5A CN116822422B (zh) | 2023-08-31 | 2023-08-31 | 数字逻辑电路的分析优化方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116822422A CN116822422A (zh) | 2023-09-29 |
CN116822422B true CN116822422B (zh) | 2023-11-07 |
Family
ID=88127860
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311110735.5A Active CN116822422B (zh) | 2023-08-31 | 2023-08-31 | 数字逻辑电路的分析优化方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116822422B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117272881B (zh) * | 2023-11-21 | 2024-03-12 | 暨南大学 | 一种基于标记句式决策图的电路简化方法及系统 |
CN117494622B (zh) * | 2023-12-29 | 2024-03-01 | 深圳鸿芯微纳技术有限公司 | 一种异或多数逻辑的逻辑函数分解方法、装置和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110059421A (zh) * | 2019-04-23 | 2019-07-26 | 上海安路信息科技有限公司 | 一种逻辑电路的优化方法及优化装置 |
CN114004182A (zh) * | 2021-10-27 | 2022-02-01 | 国微集团(深圳)有限公司 | 二元决策图的构造方法、等价性验证方法、存储介质 |
CN116341429A (zh) * | 2023-05-22 | 2023-06-27 | 芯行纪科技有限公司 | 对逻辑网络进行逻辑重写方法及相关设备 |
CN116341441A (zh) * | 2023-05-22 | 2023-06-27 | 芯行纪科技有限公司 | 对数字逻辑电路进行优化的方法及相关设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11288589B1 (en) * | 2021-01-14 | 2022-03-29 | Classiq Technologies LTD. | Quantum circuit modeling |
-
2023
- 2023-08-31 CN CN202311110735.5A patent/CN116822422B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110059421A (zh) * | 2019-04-23 | 2019-07-26 | 上海安路信息科技有限公司 | 一种逻辑电路的优化方法及优化装置 |
CN114004182A (zh) * | 2021-10-27 | 2022-02-01 | 国微集团(深圳)有限公司 | 二元决策图的构造方法、等价性验证方法、存储介质 |
CN116341429A (zh) * | 2023-05-22 | 2023-06-27 | 芯行纪科技有限公司 | 对逻辑网络进行逻辑重写方法及相关设备 |
CN116341441A (zh) * | 2023-05-22 | 2023-06-27 | 芯行纪科技有限公司 | 对数字逻辑电路进行优化的方法及相关设备 |
Non-Patent Citations (3)
Title |
---|
Computerized Algorithms for Determining the Reliability of physical Systems;Mohamed-Larbi Rebaiaia 等;《11th International Conference on Modeling, Optimization & SimulationAt: Montreal》;1-10 * |
一种基于并行GEP的复杂电路优化算法;李康顺 等;《四川大学学报(工程科学版)》;第42卷(第1期);156-161, 178 * |
基于AIG的双逻辑面积优化技术;赵思思;《中国优秀硕士学位论文全文数据库 信息科技辑》(第2期);I135-963 * |
Also Published As
Publication number | Publication date |
---|---|
CN116822422A (zh) | 2023-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116822422B (zh) | 数字逻辑电路的分析优化方法及相关设备 | |
US10540350B2 (en) | Source code search engine | |
US11416228B2 (en) | System and method of optimizing instructions for quantum computers | |
CN104462668B (zh) | 计算机实施的用于设计用二叉树来建模的工业产品的方法 | |
US11321625B2 (en) | Quantum circuit optimization using machine learning | |
CN116341441B (zh) | 对数字逻辑电路进行优化的方法及相关设备 | |
JP7168772B2 (ja) | ニューラルネットワーク捜索方法、装置、プロセッサ、電子機器、記憶媒体及びコンピュータプログラム | |
US20200225921A1 (en) | Lookup table optimization for programming languages that target synchronous digital circuits | |
CN109656798B (zh) | 基于顶点重排序的超级计算机大数据处理能力测试方法 | |
CN113283613B (zh) | 深度学习模型的生成方法、优化方法、装置、设备及介质 | |
CN115335823A (zh) | 用于最短路径图搜索的向量化的队列 | |
CN116341429B (zh) | 对逻辑网络进行逻辑重写方法及相关设备 | |
CN111027703A (zh) | 一种量子线路查询的方法、装置、存储介质及电子装置 | |
CN113906450A (zh) | 量子电路模拟 | |
EP3178014A1 (en) | Recursive hierarchical process for combinatorial optimization and statistical sampling | |
CN112182199A (zh) | 一种依赖包推荐方法、装置、电子设备和可读存储介质 | |
WO2020142251A1 (en) | Prediction for time series data using a space partitioning data structure | |
US8661061B2 (en) | Data structure, data structure generation method, information processing apparatus, information processing system, and computer-readable storage medium having stored therein information processing program | |
CN110851178B (zh) | 一种基于分布式图可达计算的过程间程序静态分析方法 | |
KR101771352B1 (ko) | 동적 환경에서의 그래프 요약 방법 및 장치 | |
Migov | Parallel methods for network reliability calculation and cumulative updating of network reliability bounds | |
Biswas et al. | Approximation in (poly-) logarithmic space | |
Wang et al. | Monte carlo tree search for task mapping onto heterogeneous platforms | |
CN116911224B (zh) | 用于优化数字逻辑电路的方法、计算机设备及存储介质 | |
CN115130676B (zh) | 基于生命周期的路径搜索判别、优化方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |