CN116341441A - 对数字逻辑电路进行优化的方法及相关设备 - Google Patents
对数字逻辑电路进行优化的方法及相关设备 Download PDFInfo
- Publication number
- CN116341441A CN116341441A CN202310574788.6A CN202310574788A CN116341441A CN 116341441 A CN116341441 A CN 116341441A CN 202310574788 A CN202310574788 A CN 202310574788A CN 116341441 A CN116341441 A CN 116341441A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- direct
- paths
- redundant
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000005192 partition Methods 0.000 claims abstract description 48
- 230000011218 segmentation Effects 0.000 claims abstract description 25
- 230000008901 benefit Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 13
- 238000000354 decomposition reaction Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 238000007781 pre-processing Methods 0.000 description 8
- 238000005457 optimization Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000009467 reduction Effects 0.000 description 6
- 238000005056 compaction Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect 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
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
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/337—Design optimisation
-
- 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/33—Design verification, e.g. functional simulation or model checking
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种对数字逻辑电路进行优化的方法及相关设备,该方法包括:将所述数字逻辑电路转换为布尔逻辑网络;求解所述布尔逻辑网络的分割集;基于所述分割集对所述数字逻辑电路进行优化;其中,所述求解所述布尔逻辑网络的分割集,包括:求解得到所述布尔逻辑网络的当前分割集;对所述当前分割集进行拓展;删除拓展后的所述当前分割集中的冗余节点;得到所述布尔逻辑网络的分割集。
Description
技术领域
本申请涉及数字逻辑电路技术领域,尤其涉及一种对数字逻辑电路进行优化的方法及相关设备。
背景技术
随着现代数字逻辑电路的规模越来越大,功能越来越复杂,如何高效地对电路进行分析和优化成为了现代EDA工具不可或缺的重要组成部分。其基本的流程是先将目标数字电路抽象成为布尔逻辑网络(Boolean Network),即通过构建有向无环图并在其节点上关联逻辑函数,实现对任意逻辑函数的递归定义,将原问题转化为基于布尔逻辑网络的问题。
在相关技术中,基于布尔逻辑网络的求解问题存在困难和缺陷。
发明内容
有鉴于此,本申请的目的在于提出一种对数字逻辑电路进行优化的方法及相关设备,以解决或部分解决上述问题。
本申请第一方面,提供了一种对数字逻辑电路进行优化的方法,包括:
将所述数字逻辑电路转换为布尔逻辑网络;
求解所述布尔逻辑网络的分割集;
基于所述分割集对所述数字逻辑电路进行优化;
其中,所述求解所述布尔逻辑网络的分割集,包括:
确定所述布尔逻辑网络中的目标节点作为根节点;
对所述根节点进行拓展,得到初始分割集;
删除所述初始分割集中的冗余节点;
得到所述布尔逻辑网络的所述目标节点的分割集。
本申请第二方面,提供了一种计算机设备,包括:
一个或者多个处理器、存储器;以及
一个或多个程序;
其中,所述一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行根据第一方面所述的方法的指令。
本申请第三方面,提供了一种包含计算机程序的非易失性计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行第一方面所述的方法。
本申请提供的对数字逻辑电路进行优化的方法及相关设备,可以极大化覆盖重合并路径的分割集,可以较为高效地解决或部分解决相关技术中的问题。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1展示了一些定义的具体化的示例。
图2A示出了根据本申请实施例的一种示例性方法的流程示意图。
图2B示出了根据本申请实施例的一种求解所述布尔逻辑网络的分割集的示例性方法的流程示意图。
图2C示出了根据本申请实施例的一种示例性拓展方法的流程示意图。
图3示出了根据本公开实施例的计算路径数量的示例性方法的示意图。
图4示出了根据本申请实施例的一种示例性精简方法的流程示意图。
图5示出了本申请实施例所提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了帮助理解,下面对本申请实施例所涉及的一些概念进行说明。
1、逻辑网络:一种有向无环图(Directed Acyclic Graph,简称DAG)。该图由节点集合V与有向边集合E构成。其中:
1)有向边表示信号的传递方向。对于有向边,定义其起始节点为尾节点,定义其指向节点为头节点。
2)输入边:对任意的节点v∈V,所有头节点为v的边都被称为该节点的输入边。
3)输出边:对任意的节点v∈V,所有头节点为v的边都被称为该节点的输出边。本文逻辑网络中,所有的输出边都对应着相同的逻辑信号,该信号也被称为节点v的输出信号。
4)直接前序节点与直接后序节点:对任意的节点v∈V,若u为v的直接前序节点,则存在一条以u为尾节点,v为头节点的边。
若u为v的直接前序节点,则v为u的直接后序节点。
5)输入信号集:对任意的节点v∈V,其输入信号集表示其输入边所承载的信号的集合。
6)每一个逻辑网络的节点对应着一种确定的逻辑函数,该函数描述了输出信号与输入信号集的关系。
7)输入接口节点(PI):一个V的子集,该集合中的节点没有输入边。
8)输出接口节点(PO):一个V的子集,该集合中的节点没有输出边。
9)拓扑排序:对有向无环图一定存在拓扑排序。拓扑排序是对节点集合进行整数关联的过程。对于一个节点v∈V分配整数集合/>中的一个数使得任意两个节点分配到的数字不相同并且分配到的数字顺序与节点之间的拓扑顺序相同。具体上,用vi为整数i所对应的节点,对于任意的i,j∈/>且i≠j,如果在逻辑网络上存在一条从vi到vj的路径,则i<j。
由于用整数i可以唯一确定地表示节点vi,在不影响阅读的情况下,后文中用i来代表vi。
2、传递输入逻辑锥(Transitive Fan-In Cone,简称TFI):一种特别子网络,是一个针对节点v的集合,并且,TFI集合满足:
1)该集合中的任意节点u到v都存在一条路径;
2)任何从PI到v的路径都至少通过一个TFI集合中的某个节点。
3、分割集(cut):一个TFI的子集,移除这个集合后,所有从PI到v的路径都会被阻断。称节点v是cut的根节点,通常用cut(v)作为对一个根节点在v的一系列分割集的统称。
1)任意一个cut都对应着一个TFI。
2)K-分割集(k-cut):大小为k的cut。
3)K-feasible分割集(k-feasible cut):大小不超过k的cut。
4)最简分割集(kernel cut):是一种特殊的cut。当移除该集合任何一个节点时都会导致该集合不再能维持分割集的基本定义,即,暴露了至少一条从PI到v的路径(其中v为此cut的根节点)。
4、路径(path):一个节点组成的序列,在这个节点序列中,任何两个前后相邻的节点之间都存在一条有向边使得两个节点分别为该边的尾节点和头节点。
1)该序列中的第一个节点为该路径的起始节点。
2)该序列中的最后一个节点为该路径的终止节点。
5、重交会路径(reconverge path):两条不同路径共享相同的起始节点和终止节点。
图1展示了某些定义的具体化的示例。
如图1所示,图中展示整个布尔逻辑网络的一个部分。针对节点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。
根据前面所述,在对数字逻辑电路进行分析和优化时,通常需要将数字逻辑电路转换为布尔逻辑网络的结构,然后基于对该布尔逻辑网络的求解来对电路进行分析和优化。
根据布尔逻辑网络的结构可知,布尔逻辑网络的任意节点都代表一个仅与基本输入(Primary Input)相关的逻辑函数。以该节点为根,沿着信号传入的方向可以构建出一个传递输入逻辑锥(Transitive Fan-in cone,简称TFI),其中的边界节点被称为一个分割集(cut),在逻辑上,这个cut对应着一个对根节点逻辑函数的分解。在对数字逻辑电路的分析与优化过程中,寻找分解是一个不可或缺的关键步骤。
例如,在对数字逻辑电路进行功耗分析时,要针对数字逻辑电路的逻辑功能进行数字信号的概率传播,其本质是需要对信号的相关性进行分析。常用的分析方式是先对逻辑函数构建二分决策图(Binary Decision Diagram,简称BDD),之后在BDD上做概率传播。在实践中,对大规模的布尔逻辑网络构建BDD往往难以实现,需要对布尔逻辑网络做分解(Decompose)。
为了最小化分解带来的误差,需要一种在大规模的布尔逻辑网络中寻找可以最大化覆盖信号关联的分解。
类似地,在数字逻辑电路的综合、优化、映射中也需要这种分解技术。例如,针对数字逻辑电路的优化,有一种手段是基于无关项逻辑的优化(Don’t care optimization)。通过引入信号之间的无关性,可以显著简化逻辑,优化电路的性能。
基于布尔逻辑理论的分析,可以得知布尔逻辑网络内的重交会路径(Reconvergepath)的存在意味着无关项逻辑函数的优化机会。所谓重交会路径,是指两条不同路径共享相同的起始节点和终止节点,显然,存在重交会路径也就是存在路径冗余,如果对这种冗余进行优化,则可以精简布尔逻辑网络的结构,进而简化数字逻辑电路。因此,可以通过一种方法,在布尔逻辑网络中寻找一种分解(cut),使得其尽可能地覆盖最多的reconvergepaths,然后基于该cut进行优化,就可以实现布尔逻辑网络的简化。
目前,经典寻找分解的方法是采用一种“自底到顶”的递推算法,其核心为以下递归式:
其中:n代表布尔逻辑网络中的节点,如果n∈PO,则以n为根的分解就是以其驱动节点n1的分解。如果n∈PI,则对应的分解就是n本身。如果n是其他节点,则以该节点为根的分解可以由其前序节点n1,n2,…,nd的分解组合而成。其中组合的方式如下:
在寻找可以最大化覆盖reconverge path的分解时,使用上述经典方法将会无能为力。另外,此方法并没有考虑cut本身是否足够精简,即cut集合内部可能存在不必要的元素。不够精简的cut会导致在分析信号关联时引入额外的系统误差,逻辑映射中引入系统性的资源浪费。
针对相关技术的上述两大缺点:1)无法在生成cut时尽可能地覆盖reconvergepath;2)无法确保生成kernel cut或找出的cut不是最简。
本申请实施例提供了一种对数字逻辑电路进行优化的方法,该方法可以一种基于“自顶到底”的算法来生成一个极大化覆盖重合并路径的cut,可以较为高效地解决或部分解决上述问题。
图2A示出了根据本申请实施例的一种示例性方法200的流程示意图。
在步骤202,可以先将数字逻辑电路转换为布尔逻辑网络(Boolean Network)。
其中,数字逻辑电路可以是芯片设计,是用数字信号完成对数字量进行算术运算和逻辑运算的电路。由于数字信号仅包括“0”和“1”,因此,数字逻辑电路可以等效为一种布尔逻辑网络。
因此,在本步骤中,可以基于这个原理将数字逻辑电路转换为布尔逻辑网络。
在步骤204,可以求解所述布尔逻辑网络的分割集。
基于前面所述,相关技术中在求解布尔逻辑网络的分割集,通常存在两个问题,1)无法在生成cut时尽可能地覆盖reconverge path;2)无法确保生成kernel cut或找出的cut不是最简。
因此,本实施例提供了一种求解布尔逻辑网络的分割集的方法,可以较为高效地解决或部分解决上述问题。
图2B示出了根据本申请实施例的一种求解所述布尔逻辑网络的分割集的示例性方法204的流程示意图。
本实施例所提供的方法的主要步骤为一个迭代的循环,在循环内部有两个核心的模块。其一是拓展(expand),即对当前的分割集进行拓展,拓展的目标是增加当前分割集所覆盖的重交会路径(reconverge path)的数目。其二是精简(kernelize),精简之后,在拓展时引入的冗余节点会被删掉,确保得到是最简分割集(kernel cut)。主循环的停止条件是判断当前的解是否满足k-feasible的约束。若满足约束则进一步迭代拓展当前的解,否则就结束循环并返回当前最优解。
在步骤2042,可以进行预处理。
预处理步骤(pre-processing)的核心操作是拓扑排序,由于输入的布尔逻辑网络是有向无环图,则该图一定存在拓扑排序。
拓扑排序是对节点集合V进行整数关联的过程。对于一个节点v∈V分配整数集合中的一个数使得任意两个节点分配到的数字不相同并且分配到的数字顺序与节点之间的拓扑顺序相同。具体上,用vi为整数i所对应的节点,对于任意的i,j∈且i≠j,如果在逻辑网络上存在一条从vi到vj的路径,则i<j。
例如,图1中各节点的编号则示例性地表示了图1所示的布尔逻辑网络的拓扑排序。可以知道,该预处理步骤可以在线性时间内完成,因此整体上不会过多增加本申请实施例的计算负担和处理时长。
生成分割集通常存在两种场景,一种场景是针对特定节点来生成分割集(通常为基本使用模式),另一种场景是针对布尔逻辑网络的所有节点分别生成分割集。
在基本使用模式下,在预处理步骤中需要从外界输入一个布尔逻辑网络,并从布尔逻辑网络中确定一个目标节点作为根节点,同时需要输入一个参数k。该参数k用于限定分割集中节点的数量,使得在方法200结束时返回的分割集中的节点数量需要小于或等于k,这样的分割集也可以称为k-feasible cut。
另一种使用模式是需要对同一个布尔逻辑网络的所有节点分别生成分割集,在该使用模式下,预处理步骤可以仅执行一次,例如,仅在第一次指定目标节点时执行一次预处理步骤,第二次指定的目标节点时,则可以跳过预处理(pre-processing)步骤,直接对第二次指定的目标节点构造一个单一节点的分割集,然后继续剩余的步骤。
这样,在两种使用模式下,均可以从布尔逻辑网络中确定一个目标节点来作为根节点,以进行后续的拓展步骤。
在步骤2044,对所述根节点进行拓展,得到初始分割集。
拓展步骤的核心目标是拓展所述根节点来得到一个初始分割集,提升所述初始分割集所覆盖的重交会路径(reconverge path)的数目。
令当前根节点为v,pathCnt(u)表示从节点u起始到节点v为止的路径数目。当该路径数目大于1时,u与v之间一定存在reconverge path。如图2C所示,可以令所述根节点v的当前分割集为c(初始状态下,当前分割集仅包括该根节点v), 拓展方法2044的具体步骤如下:
在步骤20442,针对当前分割集中的全部节点s,即s∈c,计算以所述节点s为根节点进行拓展的收益。
可选地,针对所述当前分割集中的全部节点,计算以所述节点为根节点进行拓展的收益,包括针对所述当前分割集中的每个节点,执行以下步骤:
计算所述当前分割集中的每个所述节点的路径数量以及所述节点的直接前序节点的路径数量;
根据所述节点的路径数量以及所述节点的直接前序节点的路径数量,计算以所述节点为根节点进行拓展的收益。
具体地,针对节点s,其收益gain(s)采用以下公式计算:
gain(s)= pathCnt(r)- pathCnt(s)
在上述拓展算法中,需要一个关键的步骤,即获取pathCnt(s)。在实践中,由于k往往设置成的一个较小的常数(如4、8等),需要计算pathCnt的节点只是原布尔逻辑网络中很小的一部分。因此,拓展步骤并不会过多增加计算负担。
在一些实施例中,为了提升计算效率,可以采用一种自适应计算pathCnt的算法,此算法可以避免不必要的计算。
图3示出了根据本公开实施例的计算路径数量的示例性方法300的示意图。
如图3所示,该方法300进一步包括以下步骤。
设当前的根节点为t,pathCnt的基本递推计算式如下:
上式成立的条件为,u≠t。如果u=t,则pathCnt(t)=1。基于上式可知,若要计算pathCnt(u)必须先计算其直接后序节点的pathCnt。
因此,作为一个可选实施例,计算所述节点的路径数量,包括:计算所述节点的直接后序节点的路径数量pathCnt;根据所述节点的直接后序节点的路径数量pathCnt,计算所述节点的路径数量pathCnt(u)。
总结计算节点的直接后序节点的pathCnt的算法如下:
在步骤302,创建一个最大堆,其中,所述最大堆的各节点的键值为各节点的拓扑序。也就是,创建一个最大堆h,此堆中包含了一些需要计算pathCnt的节点(初始化状态下,该堆仅包括根节点),并以节点的拓扑序作为键值。其中,最大堆是一种二叉堆(完全二叉树),其定义通常是:父结点的键值总是大于或等于任何一个子节点的键值。
在步骤304,初始化步骤:将所述根节点的路径数量初始化为1,即:令pathCnt(t)=1,并且,针对所述布尔逻辑网络的所有的节点v∈V,设置pathCnt(v)为无效状态,并且,设置pathCnt(v)为未初始化状态;然后将根节点t压入堆h中。
以下进入主循环,该主循环中,循环执行以下步骤:
针对所述布尔逻辑网络的每个节点:
在步骤306,若该节点的路径数量为有效状态,则返回该节点的路径数量,即:如果pathCnt(v)为有效状态,则返回pathCnt(v)。
在步骤308,若该节点的路径数量为无效状态,则持续执行以下步骤直到该节点的路径数量变成有效状态,即:如果pathCnt(v)为无效状态,则持续执行下面步骤直到pathCnt(v)变成有效状态:
在步骤3082,弹出所述最大堆h的堆顶元素u;
在步骤3084,设置堆顶元素u的路径数量pathCnt(u)为有效状态;
在步骤3086,针对堆顶元素u对应的目标节点的所有的直接前序节点,即,针对目标节点u的所有的直接前序节点pu,执行以下设置状态的步骤:
如果目标节点u的直接前序节点pu的路径数量为无效状态,且目标节点u的直接前序节点pu的路径数量为未初始化状态,将目标节点u的直接前序节点pu的路径数量更新为堆顶元素对应的目标节点u的路径数量,并设置目标节点u的直接前序节点pu的路径数量为已初始化状态;即:如果pathCnt(pu)为无效状态,且pathCnt(pu)为未初始化状态,令pathCnt(pu)= pathCnt(u),并设置pathCnt(pu)为已初始化状态;
如果目标节点u的直接前序节点pu的路径数量为有效状态,将目标节点u的直接前序节点pu的路径数量更新为堆顶元素对应的目标节点u的路径数量加上目标节点u的直接前序节点pu的路径数量;即:如果pathCnt(pu)为有效状态,令pathCnt(pu)= pathCnt(u)+pathCnt(pu);
在设置完目标节点u的直接前序节点pu的路径数量的状态之后,如果目标节点u的直接前序节点pu不在所述最大堆中,则将目标节点u的直接前序节点pu压入所述最大堆h中;即:在设置完直接前序节点pu的状态之后,如果pu不在堆h中,则将pu压入堆h中。
可以看出,通过最大堆的特性,可以保证当一个节点被弹出堆时,其直接后序节点的pathCnt都被正确更新。使用数学归纳法可以验证算法可以保证计算的正确性。设在拓展中所遇到的节点数目为p,则算法的时间复杂度为O(p log p)。值得注意的是,通过采用时间戳标记方法,初始化步骤可以在常数时间内完成。另外,初始化可以集成到pre-processing步骤中以减少每次拓展迭代的冗余初始化。
在步骤2046,删除所述初始分割集中的冗余节点。
在完成拓展之后,可以通过精简步骤去掉拓展后的所述当前分割集中冗余的节点。
根据节点冗余的定义,即冗余的节点被移除出cut之后,该cut的特性依然可以保持。精简的核心步骤就是检查当前cut集合中是否有节点可以被移除。
定义VNO代表冗余节点,ENO代表冗余边,则下面两个性质成立:
1、如果一个节点属于VNO,则其所有的输出边都具有ENO属性。
2、如果一个节点的所有输入边都具有ENO属性,则该节点具有VNO属性。
在一些实施例中,利用上述性质,设计了一个针对当前拓展的精简算法400,如图4所示。
设定算法400的输出为:精简之后的分割集c,更新之后的VNO属性表与ENO属性表。
如图4所示,在步骤402,初始化步骤:
构建一个空的节点队列h;
针对所述拓展节点的每个直接前序节点:若所述直接前序节点不属于拓展后的所述当前分割集且所述直接前序节点不是冗余节点,则将所述直接前序节点添加到所述节点队列中;即:针对种子节点的每个直接前序节点u:如果u/>c并且u不是VNO,则将u添加到队列h中。
在步骤404,循环以下步骤直到节点队列h为空:
在步骤4042,弹出所述节点队列h的队头元素u。
在步骤4044,对所述队头元素u的每个直接后序节点v:令边e=(u,v)。
在步骤40442,若边e属于冗余边(ENO),则继续循环。
在步骤40444,若边e不属于冗余边,将边e设置为冗余边属性。
在步骤40446,若直接后序节点v的输入边全部属于冗余边,将直接后序节点v设置为冗余节点并加入所述节点队列中。
当节点队列h为空后,在步骤406,遍历所述初始分割集c,删除其中属于冗余节点(VNO)的节点。
至此完成精简。
下面给出了一个精简过程的例子。
如图1所示,在一个示例中,根节点为1,当前cut为{4,5,6}。节点1、2、3具有VNO属性,与节点1、2、3相连的边具有ENO属性。拓展时,选择了节点4作为种子节点(拓展节点)。因为节点4作为种子节点,在进行精简时,节点7会被初始化添加到队列中。当节点7弹出时,其输出边都被设置为ENO属性,并将节点4加入队列。此时,节点4的所有输入边都被设置为ENO属性,使得节点4被标志成为了VNO,导致其在精简之后被删除。最终精简之后的cut为{5,6,7}。
本实施例的精简算法是一个动态的过程,当且仅当一个节点成为VNO之后才会触发后续节点的计算。因此每一次精简过程只需要进行少量运算即可。数学分析可知,拓展算法最坏情况下只会对整个逻辑网络的节点和边做一次标记。设在整体迭代过程中所遇到的节点数目为p,则算法的时间复杂度为O(p)。
类似地,如果需要对不同的根节点计算分割集,可以采用时间戳标记法来在常数时间内完成对VNO和ENO的重置。
在步骤2048,得到所述布尔逻辑网络的所述目标节点的分割集。即,经过拓展和精简之后的分割集c。
在步骤206,基于所述分割集对所述数字逻辑电路进行优化。
作为一个可选实施例,基于所述分割集对所述数字逻辑电路进行优化,可以进一步包括:利用所述分割集与模板网络进行匹配,得到所述分割集对应的匹配;然后,利用所述匹配对所述布尔逻辑网络进行逻辑重写,得到一个更新的布尔逻辑网络,该更新的布尔逻辑网络对应于一个更新的数字逻辑电路,相对于原来的数字逻辑电路,该更新的数字逻辑电路可以得到优化。
可以理解,本申请实施例所得到的的分割集覆盖了尽可能多的重交会路径,在逻辑重写后,会利用模板网络替换该分割集在所述布尔逻辑网络中对应的子逻辑网络,由于模板网络本身属于标准单元(其中不包括冗余的重交会路径),因此在逻辑重写后就消除了这些重交会路径,电路就得到了优化。
需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本申请的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的方法200、300或400。
图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可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器504可以包括随机访问存储器(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或400,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的方法200、300或400。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的方法200、300或400,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法200、300或400相对应的,本申请还提供了一种计算机程序产品,其包括计算机程序。在一些实施例中,所述计算机程序由一个或多个处理器可执行以使得所述处理器执行所述的方法200、300或400。对应于方法200、300或400各实施例中各步骤对应的执行主体,执行相应步骤的处理器可以是属于相应执行主体的。
上述实施例的计算机程序产品用于使处理器执行如上任一实施例所述的方法200、300或400,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (8)
1.一种对数字逻辑电路进行优化的方法,包括:
将所述数字逻辑电路转换为布尔逻辑网络;
求解所述布尔逻辑网络的分割集;
基于所述分割集对所述数字逻辑电路进行优化;
其中,所述求解所述布尔逻辑网络的分割集,包括:
确定所述布尔逻辑网络中的目标节点作为根节点;
对所述根节点进行拓展,得到初始分割集;
删除所述初始分割集中的冗余节点;
得到所述布尔逻辑网络的所述目标节点的分割集。
2.如权利要求1所述的方法,其中,对所述根节点进行拓展,包括:
确定所述根节点的当前分割集;
针对所述当前分割集中的全部节点,计算以所述节点为根节点进行拓展的收益;
选择收益最大的节点作为拓展节点;
将所述拓展节点从所述当前分割集中删除并在所述当前分割集中添加所述拓展节点的全部直接前序节点,得到拓展后的所述当前分割集。
3.如权利要求2所述的方法,其中,针对所述当前分割集中的全部节点,计算以所述节点为根节点进行拓展的收益,包括针对所述当前分割集中的每个节点,执行以下步骤:
计算所述节点的路径数量以及所述节点的直接前序节点的路径数量;
根据所述节点的路径数量以及所述节点的直接前序节点的路径数量,计算以所述节点为根节点进行拓展的收益。
4.如权利要求3所述的方法,其中,计算所述节点的路径数量,包括:
计算所述节点的直接后序节点的路径数量;
根据所述节点的直接后序节点的路径数量,计算所述节点的路径数量。
5.如权利要求4所述的方法,其中,计算所述节点的直接后序节点的路径数量,包括:
创建一个最大堆,所述最大堆的各节点的键值为各节点的拓扑序;
将所述根节点的路径数量初始化为1,将所述布尔逻辑网络的所有节点的路径数量设置为无效状态和未初始化状态,并将所述根节点压入所述最大堆;
循环执行以下步骤:
针对所述布尔逻辑网络的每个节点:
若该节点的路径数量为有效状态,则返回该节点的路径数量;
若该节点的路径数量为无效状态,则持续执行以下步骤直到该节点的路径数量变成有效状态:
弹出所述最大堆的堆顶元素;
设置所述堆顶元素的路径数量为有效状态;
针对所述堆顶元素对应的目标节点的所有的直接前序节点,执行以下步骤:
如果所述目标节点的直接前序节点的路径数量为无效状态,且所述目标节点的直接前序节点的路径数量为未初始化状态,将所述目标节点的直接前序节点的路径数量更新为所述堆顶元素对应的节点的路径数量,并设置所述目标节点的直接前序节点的路径数量为已初始化状态;
如果所述目标节点的直接前序节点的路径数量为有效状态,将所述目标节点的直接前序节点的路径数量更新为所述堆顶元素对应的节点的路径数量加上所述目标节点的直接前序节点的路径数量;
在设置完所述目标节点的直接前序节点的路径数量的状态之后,如果所述目标节点的直接前序节点不在所述最大堆中,则将所述目标节点的直接前序节点压入所述最大堆中。
6.如权利要求2所述的方法,其中,删除所述初始分割集中的冗余节点,包括:
构建一个空的节点队列;
针对所述拓展节点的每个直接前序节点:若所述直接前序节点不属于所述初始分割集且所述直接前序节点不是冗余节点,则将所述直接前序节点添加到所述节点队列中;
循环以下步骤直到所述节点队列为空:
弹出所述节点队列的队头元素u;
对所述队头元素u的每个直接后序节点v:令边e=(u,v);
若边e属于冗余边,则继续循环;
若边e不属于冗余边,将边e设置为冗余边属性;
若直接后序节点v的输入边全部属于冗余边,将直接后序节点v设置为冗余节点并加入所述节点队列中;
当所述节点队列为空后,遍历所述初始分割集,删除其中属于冗余节点的节点。
7. 一种计算机设备,包括:
一个或者多个处理器、存储器;以及
一个或多个程序;
其中,所述一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行根据权利要求1-6中任一项所述的方法的指令。
8.一种包含计算机程序的非易失性计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310574788.6A CN116341441B (zh) | 2023-05-22 | 2023-05-22 | 对数字逻辑电路进行优化的方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310574788.6A CN116341441B (zh) | 2023-05-22 | 2023-05-22 | 对数字逻辑电路进行优化的方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116341441A true CN116341441A (zh) | 2023-06-27 |
CN116341441B CN116341441B (zh) | 2023-08-08 |
Family
ID=86884324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310574788.6A Active CN116341441B (zh) | 2023-05-22 | 2023-05-22 | 对数字逻辑电路进行优化的方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116341441B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116822422A (zh) * | 2023-08-31 | 2023-09-29 | 芯行纪科技有限公司 | 数字逻辑电路的分析优化方法及相关设备 |
CN116911224A (zh) * | 2023-09-07 | 2023-10-20 | 芯行纪科技有限公司 | 用于优化数字逻辑电路的方法、计算机设备及存储介质 |
CN117494622A (zh) * | 2023-12-29 | 2024-02-02 | 深圳鸿芯微纳技术有限公司 | 一种异或多数逻辑的逻辑函数分解方法、装置和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442884A (zh) * | 2018-05-02 | 2019-11-12 | 中国科学院微电子研究所 | 一种亚阈值数字时序电路的优化方法及装置 |
CN114611446A (zh) * | 2022-03-08 | 2022-06-10 | 中南大学 | 一种基于图论的搜索算法的电路优化方法 |
CN114925640A (zh) * | 2022-04-20 | 2022-08-19 | 宁波大学 | 一种多级mprm逻辑电路功耗优化方法 |
CN115017850A (zh) * | 2022-06-20 | 2022-09-06 | 东南大学 | 一种数字集成电路优化方法 |
CN115496022A (zh) * | 2022-09-16 | 2022-12-20 | 中国人民解放军海军工程大学 | 一种系统级数字电路升级优化方法及装置 |
-
2023
- 2023-05-22 CN CN202310574788.6A patent/CN116341441B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442884A (zh) * | 2018-05-02 | 2019-11-12 | 中国科学院微电子研究所 | 一种亚阈值数字时序电路的优化方法及装置 |
CN114611446A (zh) * | 2022-03-08 | 2022-06-10 | 中南大学 | 一种基于图论的搜索算法的电路优化方法 |
CN114925640A (zh) * | 2022-04-20 | 2022-08-19 | 宁波大学 | 一种多级mprm逻辑电路功耗优化方法 |
CN115017850A (zh) * | 2022-06-20 | 2022-09-06 | 东南大学 | 一种数字集成电路优化方法 |
CN115496022A (zh) * | 2022-09-16 | 2022-12-20 | 中国人民解放军海军工程大学 | 一种系统级数字电路升级优化方法及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116822422A (zh) * | 2023-08-31 | 2023-09-29 | 芯行纪科技有限公司 | 数字逻辑电路的分析优化方法及相关设备 |
CN116822422B (zh) * | 2023-08-31 | 2023-11-07 | 芯行纪科技有限公司 | 数字逻辑电路的分析优化方法及相关设备 |
CN116911224A (zh) * | 2023-09-07 | 2023-10-20 | 芯行纪科技有限公司 | 用于优化数字逻辑电路的方法、计算机设备及存储介质 |
CN116911224B (zh) * | 2023-09-07 | 2023-12-05 | 芯行纪科技有限公司 | 用于优化数字逻辑电路的方法、计算机设备及存储介质 |
CN117494622A (zh) * | 2023-12-29 | 2024-02-02 | 深圳鸿芯微纳技术有限公司 | 一种异或多数逻辑的逻辑函数分解方法、装置和电子设备 |
CN117494622B (zh) * | 2023-12-29 | 2024-03-01 | 深圳鸿芯微纳技术有限公司 | 一种异或多数逻辑的逻辑函数分解方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116341441B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116341441B (zh) | 对数字逻辑电路进行优化的方法及相关设备 | |
Peraro | FiniteFlow: multivariate functional reconstruction using finite fields and dataflow graphs | |
CN113033811B (zh) | 两量子比特逻辑门的处理方法及装置 | |
US11106437B2 (en) | Lookup table optimization for programming languages that target synchronous digital circuits | |
AU2014203218B2 (en) | Memory configuration for inter-processor communication in an MPSoC | |
CN116822422B (zh) | 数字逻辑电路的分析优化方法及相关设备 | |
Zuluaga et al. | Streaming sorting networks | |
CN113283613B (zh) | 深度学习模型的生成方法、优化方法、装置、设备及介质 | |
CN116341429B (zh) | 对逻辑网络进行逻辑重写方法及相关设备 | |
CN113906450A (zh) | 量子电路模拟 | |
Matai et al. | Enabling fpgas for the masses | |
CN112182199A (zh) | 一种依赖包推荐方法、装置、电子设备和可读存储介质 | |
CN114330173B (zh) | 边界节点连接关系获取方法、装置、设备和存储介质 | |
KR101748069B1 (ko) | 동적 그래프 기반의 그래프 요약을 수행하는 장치 및 방법 | |
CN115469931A (zh) | 一种循环程序的指令优化方法、装置、系统、设备及介质 | |
CN114330719A (zh) | 从事件的时序图中发现关联规则的方法及电子设备 | |
Biswas et al. | Approximation in (poly-) logarithmic space | |
Li et al. | A stochastic composite augmented Lagrangian method for reinforcement learning | |
He et al. | Stochastic circuit synthesis via satisfiability | |
CN115130676B (zh) | 基于生命周期的路径搜索判别、优化方法和装置 | |
Chen et al. | Nearest neighbor synthesis of CNOT circuits on general quantum architectures | |
CN116911224B (zh) | 用于优化数字逻辑电路的方法、计算机设备及存储介质 | |
CN115904394B (zh) | 一种面向众核架构的神经网络增量编译方法和装置 | |
CN111552477B (zh) | 数据处理方法和装置 | |
CN116738900B (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 |