CN116976249A - 用于增量映射优化的基于可满足性的再替换 - Google Patents
用于增量映射优化的基于可满足性的再替换 Download PDFInfo
- Publication number
- CN116976249A CN116976249A CN202310481172.4A CN202310481172A CN116976249A CN 116976249 A CN116976249 A CN 116976249A CN 202310481172 A CN202310481172 A CN 202310481172A CN 116976249 A CN116976249 A CN 116976249A
- Authority
- CN
- China
- Prior art keywords
- gate
- boolean expression
- substitution
- mapping
- mapping network
- 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.)
- Pending
Links
- 238000013507 mapping Methods 0.000 title claims abstract description 101
- 238000006467 substitution reaction Methods 0.000 title claims abstract description 84
- 238000005457 optimization Methods 0.000 title abstract description 28
- 230000014509 gene expression Effects 0.000 claims abstract description 82
- 238000013461 design Methods 0.000 claims abstract description 38
- 238000000034 method Methods 0.000 claims description 68
- 230000006870 function Effects 0.000 claims description 33
- 230000015654 memory Effects 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 17
- 238000003860 storage Methods 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 11
- 230000009467 reduction Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 230000036961 partial effect Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 12
- 238000003786 synthesis reaction Methods 0.000 description 8
- 238000012795 verification Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000001459 lithography Methods 0.000 description 3
- 238000007670 refining Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013440 design planning Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation 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/33—Design verification, e.g. functional simulation or model checking
-
- 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/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/394—Routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/06—Structured ASICs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/10—Processors
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)
- Architecture (AREA)
- Computer Networks & Wireless Communication (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本公开涉及用于增量映射优化的基于可满足性的再替换。本文的实施例描述了在映射网络中选择门,然后将门从库单元解映射为布尔表达式。再替换可以对门执行,以确定其逻辑是否可以使用例如无关项集合和门的窗口内的候选除数来简化。如果由于执行再替换产生的新的布尔表达式具有等效功能,则门可以使用新的布尔表达式来重新映射,这可以减少与映射网络相对应的电路设计的面积。这些步骤可以对映射网络迭代地执行。
Description
技术领域
本公开中提出的实施例大体上涉及电子设计自动化(EDA)中的单元映射网络上的基于无关项的再替换。
背景技术
基于布尔可满足性(SAT)的优化确定是否存在对给定布尔公式(例如与网表中的逻辑电路系统相关联的布尔表达式)的变量的指派,该指派使公式产生真作为输出。SAT求解器包括专门的算法,用于确定给定的SAT实例是否可以通过产生真作为输出来满足,或者通过产生假作为输出来不满足。
节点替换是一种典型的逻辑合成技术,它可以通过使用基于SAT的推理计算无关项灵活性来增强其可扩展性和质量。现代的基于无关项的再替换和重新映射能够使用插值在局部上下文中优化逻辑电路系统的布尔函数,而无需显式计算其无关项集合。这种技术是网络再合成的有趣方法,因为它们执行局部网络变换来重新表达给定节点(门)的逻辑,这可以减少网表的大小并且节省电路设计中的空间。先前的解决方案在基于查找表(LUT)的技术映射之后采用这种基于SAT的方法进行再合成。在一种先前方法中,基于SAT的方法被重新制定,以在专用集成电路(ASIC)的上下文中对标准单元执行通用重新映射。
发明内容
本文的实施例描述了在映射网络中选择门,然后将门从库单元解映射为布尔表达式。再替换可以对门执行,以确定其逻辑是否可以使用例如无关项集合和门的窗口内的候选除数来简化。如果由于执行再替换产生的新的布尔表达式具有等效功能,则门可以使用新的布尔表达式来重新映射,这可以减少与映射网络相对应的电路设计的面积。这些步骤可以对映射网络迭代地执行。
在一个示例中,在一个示例中,提供了一种方法,包括:在映射网络中选择门;将门解映射为当前布尔表达式;生成针对门的无关项集合,无关项集合包括多个无关项,其中针对目标门的输入序列不影响映射网络中的另一门的输出功能性;由处理设备,使用无关项集合执行再替换以生成门的新的布尔表达式;以及响应于确定新的布尔表达式在功能上等同于当前布尔表达式,基于新的布尔表达式来将门重新映射为映射门。
在另一示例中,提供了一种系统,包括:处理器;以及包含程序的存储器,在由处理器执行时,该程序执行操作。该操作包括:在映射网络中选择门;将门解映射为当前布尔表达式;在与门相关联的窗口内识别除数;使用除数执行再替换以生成门的新的布尔表达式;以及响应于确定新的布尔表达式在功能上等同于当前布尔表达式,基于新的布尔表达式来将门重新映射为映射门。
附图说明
本公开将通过下面给出的详细描述和本公开的实施例的附图来更全面地理解。附图被用于提供对本公开的实施例的知识和理解,并且不将本公开的范围限于这些具体实施例。此外,这些附图不一定按比例绘制。
图1图示了根据本公开的实施例的执行EDA应用的计算系统。
图2是根据本公开的实施例的用于对映射网络执行再替换的方法的流程图。
图3是根据本公开的实施例的用于对映射网络执行再替换的方法的流程图。
图4描绘了根据本公开的一些实施例的用于对映射网络执行再替换的伪码。
图5A至图5C图示了根据本公开的实施例的对映射网络中的门执行再替换。
图6图示了在制品的设计、验证和制作期间使用的示例过程集合。
图7描绘了本公开的实施例可以在其中操作的示例计算机系统的图。
具体实施方式
本文的实施例描述了通过利用通过可扩展的基于SAT的技术计算的无关项的灵活性来对映射网络执行增量优化。本文的实施例描述了一种增量和灵活的方法,用于对集成到ASIC设计流程的多个阶段的标准单元映射网络执行基于无关项的再合成。在数字逻辑中,函数的无关项是输入序列(例如一系列位),针对该输入序列,函数输出不重要。在一个实施例中,开窗(例如限制逻辑优化的范围)和SAT求解(例如确定是否存在给定布尔表达式的变量指派,使公式产生真作为输出)被用于执行再替换(例如尝试用其除数更换门的扇入或移除冗余扇入)以及由因子形式(FF)文字成本计算(例如重新表达节点n的新的布尔表达式的文字成本)驱动的局部函数简化,并且随后是增量重新映射通过。
在一个实施例中,基于SAT的再替换和函数简化在标准单元映射网络的基础上递增地工作,其中FF文字成本计算可以被用于再替换的核心,从而允许对基于标准单元的实施方式进行细粒度成本计算。进一步地,本文的实施例可以被集成到设计流程中,以在定时优化之后执行映射后全局再合成和面积恢复,同时在数据路径合成之后应用层次解组以实现更好的优化上下文。
在一个实施例中,本文的技术在通用布尔网络的基础上操作,其中每个内部节点表示与库单元相关联的逻辑函数。该网络数据结构支持对映射的节点或门(例如已被映射到库中的标准单元的节点或门,该库包含诸如OR、AND、倒置、触发器、缓冲器等低级逻辑函数(或单元的集合)和未映射的节点或门(例如由布尔表达式表示并且尚未被映射到库单元的节点或门)的表示和操作,因为一些节点在执行本文的实施例时变得未映射。即,映射网络(例如包含已被映射到库单元的节点或门的映射网表)可以被选择性地解映射,其中特定的门或节点可以被转换为未映射的节点或门,并且通过再替换和局部简化来优化。这避免了必须解映射整个网络。
本公开的优点包括但不限于使用多次迭代从次优映射网络递增地移动到优化良好的重新映射网络,而不是仅对映射网络中的每个门执行一次再替换。在一个实施例中,本文描述的技术被应用于在网络中使用增量操作的再合成和面积恢复。在一个实施例中,本文的技术可以被集成到EDA应用的多个步骤上,使得它作为给定优化引擎的最终细化工作。所提出的基于增量SAT的优化可以在全局设计上运行,逐层次地细化映射网络(假设映射的网络或网表包含模块层次)。
图1图示了根据本公开的实施例的执行EDA应用115的计算系统100。计算系统100可以是单个计算设备(例如服务器),或者可以包括多个计算设备(例如服务器网络或数据中心)。
计算系统100包括处理器105,该处理器105表示任何数量的处理器,每个处理器可以包括任何数量的处理器核心。系统100还具有存储器110,该存储器110可以包括易失性存储器元件、非易失性存储器元件及其组合。
在该示例中,存储器110存储使用处理器105执行的EDA应用115。如下面更详细地描述的,EDA应用115对映射网络120执行基于无关项的再替换(例如使用无关项集合来确定扇入的更换或移除冗余扇入)。在一个实施例中,映射网络120是映射网表,其中网表中的门(或节点)已被映射到库单元。在一个实施例中,映射网络120不具有任何未映射的门或节点(由布尔表达式表示)。
EDA应用115包括再替换优化器125,它执行再替换以优化映射网络120。作为执行再替换的一部分,映射网络120中的映射门被解映射为布尔表达式。然而,本文的实施例可以解映射映射网络120的所选部分(门),而不是解映射整个映射网络120,这可以节省计算机资源并且节约功率。再替换可以作为迭代过程的一部分来执行。
在执行再替换之后,布尔SAT求解器130可以确定未映射的节点或门的新的优化布尔表达式是否与当前布尔表达式在逻辑上等效(例如相同的功能)。如果是,则这意味着再替换过程在不改变门或节点的功能的情况下优化了门。在例如映射网络120中的剩余节点或门已经被再替换优化器125评估之后,节点或门的新的布尔表达式可以被重新映射回映射的节点或门。
图2是根据本公开的实施例的用于对映射网络执行再替换的方法200的流程图。在框205中,EDA应用(例如图1中的EDA应用115)提供(或生成)映射网络(例如图1中的映射网络120),该映射网络可以包括已被映射到库单元的门或节点的网表。例如,EDA应用先前可能已将表示网表中的门的布尔表达式映射为库单元,以形成映射网络。
在框210中,再替换优化器(例如图1中的再替换优化器)将映射网络中的门解映射为布尔表达式。例如,门(也称为目标门)当前可以是被表示为标准库单元(或多个单元)的映射门(或映射节点)。再替换优化器将门从库单元解映射到布尔表达式,这可以逆转早前由EDA应用在将布尔表达式映射为库单元时所做的过程。然而,稍后在方法200中使用的布尔SAT优化可以依赖于布尔表达式来确定再替换结果是否有效。
在一个实施例中,方法200可以对映射网络中的每个门执行。例如,在完成一个门的方法200之后,EDA应用可以选择不同的门来执行方法200。进一步地,再替换可以对映射网络迭代地执行。这在图3中更详细地讨论。
在框215中,再替换优化器针对门生成无关项集合。它们的无关项集合可以包括目标门的多个无关项,其中目标门输出的输入序列不重要。当一些布尔值从未出现在目标门的输入处时,可能会出现“无关项”,而当目标门的输出由于网络的某些条件而从未影响网络主输出(PO)时,其他“无关项”被产生。例如,当一些布尔值从未出现在目标门的输入处时,出现可控性无关项(CDC),并且当目标门的输出由于网络的某些条件而从未影响网络PO时,可观察性无关项(ODC)被产生。在一个实施例中,再替换优化器以合取范式(CNF)格式来制定SAT实例,以计算门的无关项灵活性。
在框220中,再替换优化器使用无关项集合执行再替换,以生成门的新的布尔表达式。在一个实施例中,再替换包括执行多次尝试以用其除数更换门的扇入或移除冗余扇入。除数是其他候选门,它可以被重新连接至目标门以更换冗余扇入。换句话说,再替换试图将目标门的一些扇入重新连接至另一门(例如候选除数),以使现有门具有零扇出,因此这些门可以被移除。当在下面讨论图4时,用于执行再替换的附加细节被提供。
在框225中,布尔SAT求解器(例如图1中的布尔SAT求解器)确定目标门的新的(优化的)布尔表达式在功能上是否等同于门的当前布尔表达式。布尔SAT求解器可以将在框210中对目标门进行解映射所得到的布尔表达式与在框220中执行再替换所得到的新的布尔表达式进行比较。
如果布尔表达式在功能上是等效的(例如当接收到相同输入时具有相同的输出),则方法200进行到框230,其中EDA应用为门保存新的布尔表达式。在一些实施例中,EDA应用可以不使用新的布尔表达式立即将门重新映射为映射门。如图3中讨论的,EDA应用可以等待直到评估整个映射网络至少一次(如果不是多次迭代的话),然后将已经被指派新的布尔表达式的门重新映射回映射门。
返回到框225,如果新的布尔表达式在功能上不等同于当前布尔表达式,则方法200进行到框235,其中EDA应用使用当前布尔表达式重新映射门。换句话说,新的布尔表达式可以被忽略或丢弃,并且门可以被重新映射到与方法200开始时相同的库单元。
图3是根据本公开的实施例的用于对映射网络执行再替换的方法300的流程图。方法300假设EDA应用已经接收或生成了映射网络。在框305中,EDA应用从映射网络中选择门(例如目标门)。
在框310中,EDA应用为所选门选择窗口。在一个实施例中,窗口是靠近所选门的映射网络(网表)的分区,诸如门的扇入和扇出的一个或两个级别。窗口的大小(例如窗口中的扇入和扇出的级别数量)可以是可自定义的参数。被用于执行上面讨论的再替换的候选除数可以被限制为窗口内的逻辑。换句话说,除数是窗口中的可以被连接至目标门的其他门。
在框315中,再替换优化器对目标门执行再替换。框315可以包括方法200的框210至235,其中再替换优化器对门进行解映射,生成门的无关项集合,针对门生成新的布尔表达式,并且确定新的布尔表达式在功能上是否等同于门的当前布尔表达式。如果再替换为门产生新的(优化的)布尔表达式,则新的布尔表达式可以被保存;否则,它可以被丢弃。
在框320中,EDA应用确定在映射网络中是否有更多的门要考虑。如果应用尚未对整个映射网络执行再替换,则方法300返回到框305以选择另一目标门并且重复框310和315。
然而,如果映射网络中的门中的每个门已被考虑,则方法300进行到框325,其中EDA应用确定阈值迭代数目是否已被达到。例如,用于在映射网络中迭代以执行再替换的迭代数目可以是用户可配置的参数。更多的迭代可能会导致更成功的再替换,但代价是使用更多的计算资源和时间。
在达到阈值迭代数目之后,方法300进行到框330,其中EDA应用重新映射在再替换期间未映射的门。即,再替换导致新的(改进的)布尔表达式的门使用新的布尔表达式来重新映射回库单元。因此,在该示例中,在框315中执行再替换时被指派新的布尔表达式的门直到阈值迭代数目被达到之后才被重新映射。然而,这不是一项要求。
在框335中,EDA应用检查包含使用新的布尔表达式重新映射的门和其布尔表达式没有改变的门(例如再替换不成功)的新映射网络是否使用比原始映射网络少的面积。尽管预计再替换将导致更少的门,从而导致更少的面积,但是存在以下时机,即,至少一个门的再替换成功的新映射网络相对于原始映射网络可能无法节省面积。因此,在框335中,EDA应用在用新映射网络更换原始映射网络之前进行检查以确定新映射网络是否节省了面积。否则,新映射网络被丢弃。
图4描绘了根据本公开的一些实施例的用于对映射网络执行再替换的伪码。在一个实施例中,图4中的伪码对应于图2和3中的方法200和300的框。
如由图4中的伪码描绘的,EDA应用按拓扑顺序执行多个优化通过的迭代环路,试图在接收到的映射网络N中的每个逻辑门处应用再替换(也称为“resub”)和简化。当评估门g(例如目标门)时,窗口W通过收集来自门g的TFI和TFO中的一些级别的节点来计算。用于对门g应用再替换的候选除数基于从门g的TFI和TFO收集的属于窗口W的门来计算。
窗口W及其对门g的候选除数的注释被用于以CNF格式制定SAT实例,以通过斜接来计算无关项灵活性,该斜接检查等效性。即,模拟和斜接技术可以被用于确定门g的无关项集合,以及使用布尔SAT优化来证明再替换操作是否是可行的。
其他再合成方法主要关注映射为k输入LUT的网络,其中它们控制除数(扇入)的数量,以重新表达给定节点的新的布尔函数,确保在k输入LUT中实施是可行的。然而,在基于标准库单元的再替换的上下文中,FF文字成本计算(或AND反相器示图(AIG)节点计数)有助于评价给定再替换操作的益处。因此,本文的实施例可以在基于SAT的优化的核心中使用FF文字成本计算,以针对每次网络变换尝试执行对添加/移除的字面值的细粒度控制。
在通过伪码第5行的除数制定CFN格式后,在第6行,辅助函数try-lit-costed-resub执行多次尝试以用其除数更换门g的扇入或者移除冗余扇入。将门g解映射为其布尔表达式也可以被执行,作为辅助函数try-lit-costed-resub的一部分。
如果再替换操作被证明是有效的(例如在第6行生成的新的布尔表达式在功能上等同于未映射时门g的当前或原始布尔表达式),那么门g的逻辑函数通过重新连接门g的扇入并且使用插值导出新函数来重新表达。此时,通过导出FF并且对再替换结果执行文字成本计算来接受这种再替换操作的益处可以被评价。EDA应用可以考虑重新表达门g的新的布尔函数的文字成本以及由于再替换操作而移除的零扇出门的最大扇出自由锥(MFFC)的文字成本。
在伪码的第9行,由无关项提供的灵活性可以被用于简化门g的逻辑函数,而与更换或删除门g的任何扇入的再替换机会无关。换句话说,函数try-lit-costed-simplify是一个可选函数,它也可以被执行以简化目标门g。例如,FF文字成本计算可以确定重新表达目标门g的新的布尔表达式的成本。取决于门g的无关项条件,具有较少FF文字计数的更简单的布尔函数表示可以通过插值接着是因子分解来直接获得。函数try-lit-costed-simplify执行这种类型的局部函数简化,这也通过与门g的新实施方式相比的当前实施方式的文字计数进行成本计算来指导。
除了降低局部函数的文字成本的明显益处外,在伪码的下一次迭代中探索解空间时,再替换(在第6行执行)和局部简化(在第9行执行)有助于多样化。当给定的resub或局部简化被接受时,那么网络、窗口和CNF用新的实施方式适当地更新,以重新表达门g。
当伪码第2至11行的迭代环路结束时,网络N’是一个混合设计,根据再替换和局部简化操作的结果,包括映射节点和未映射节点。在一个实施例中,该方法保留(保存)未被迭代优化环路修改的映射门。这样,仅未映射的优化节点的子集被收集,并且对这种节点子集的增量技术映射通过可以被执行,如伪码的第12至16行所示。增量技术映射器可以根据用户指定的参数P运行面积驱动和/或定时驱动的映射。最后,在第18至21行,EDA应用比较两个完全映射的网络N和N’的面积,接受或拒绝优化的总体结果。即,如果新的映射网络N’(包括再替换被成功执行的至少一个门)不具有比作为输入接收的原始映射网络N小的面积或占用空间,那么原始映射网络N被维持,并且新的映射网络N’可以被丢弃。
图5A至图5C展示了当执行多次迭代时再替换如何有助于再合成映射网络。图5A的网络是具有一些侧面扇出的较大网络中的小门集合的放大点。随着图3至图4中讨论的再替换的多次迭代逐渐重新连接一些节点的扇入/扇出,那么在迭代优化环路期间可能出现再替换和MFFC删除的新机会。例如,假设图5A的侧面扇出在先前的再替换迭代中被移除,这导致图5B所示的网络。因此,应用再替换的多个机会针对图5A所示的AND-OR-INV(AOI)和OR-AND-INV(OAI)节点启用,最终产生了具有更好映射解决方案的再合成网络,如图5B所示。
图5A至图5C中的示例图示了所提出的方法可以如何使用多次迭代从次优映射网络逐步移动到优化良好的重新映射网络,而不是仅对映射网络中的每个门执行一次再替换。在一个实施例中,该方法被应用于在网络中使用非常增量操作的再合成和面积恢复。
如上面解释的,EDA应用可以执行面积驱动的优化,以增量地再合成映射网络。在一个实施例中,上面的技术可以被集成到EDA应用的多个步骤上,使得它作为给定优化引擎的最终细化工作。所提出的基于增量SAT的优化可以在全局设计上运行,逐层次地细化映射网络(假设映射网络或网表包含模块层次)。而且,允许分层解组(将在下面更详细地讨论)可以通过针对基于无关项的优化提供更好的上下文来实现更多的优化机会。
在一个实施例中,当运行定时优化引擎时,上面讨论的基于无关项的优化可以被用作流程的不同阶段的面积恢复策略。即,图4所示的所提出的再替换和局部函数简化可以通过在给定逻辑锥中的定时驱动变换之后减轻面积开销来帮助逐渐实现更好的映射解决方案。即使图4涉及文字计数和面积成本计算,该算法的应用也可以被定时驱动和面积驱动的其他方法所包围,这有助于在应用面积恢复策略之后递送的定时和面积之间实现总体平衡。另外,上述增量技术映射也可以在定时驱动模式下运行。
此处的实施例可以通过仅改变由于再替换或函数简化而优化的节点子集来递增地工作。因此,本文的实施例确保已经针对区域和定时进行优化以及已经被映射和放置的网络门被保留,从而仅对所识别的节点子集执行重新映射和放置。在这种上下文中,基于SAT的引擎的核心中的文字成本计算允许通过只接受真正有机会递增细化网络的优化行动来选择性地使用以上技术。
返回到分层解组,分层设计的合成可以根据设计流程的不同阶段正确管理分层解组,以最大化结果质量(QoR)改进的机会。大型网表和映射网络可以包括模块层次,而不是具有“平坦”电路设计。在流程的一些步骤期间,期望在这些模块(例如这些层次)之间具有边界,以便有效地操纵和合成专门的设计块,诸如设计软件和数据路径层次。然而,也可能期望在流程的稍后阶段启用层次解组,以便将更多的单元实例暴露于相同的上下文。在执行图2和3中的方法200和300之前(或在执行图4中的伪码之前),在定时优化和数据路径合成之后执行小层次解组可以在小层级和父层级之间提供更好的上下文。层次解组可以包括移除层次或模块之间的边界,以生成平坦网表或网络。
当应用于更好的上下文时,面积恢复和再合成有更多的机会来细化提高QoR的映射网络。这种小的层次解组可以通过仅对层次的单元实例的数量小于给定阈值的情况的子集应用解组来控制。这实现了一种平衡的方法和更好的优化上下文,同时保留了大的边界,这有助于在操纵大型设计时实现QoR收敛和可扩展性。
本文的实施例通过逐渐细化映射网络来递送一致的面积和单元计数益处。在一些实例中,观察到组合单元面积平均为-1.6%并且单元计数平均为-5.9%。然而,所提出的面积恢复方法已展示,平均最差负松弛(WNS)增加了0.4%,递送了总负松弛(TNS)的持续提高,平均减少了-8.3%。所提出的流程的总体运行时间是可承受的,因为它依赖于可扩展的现代技术,导致流程的平均运行时间仅增加0.5%。
总之,本文的实施例描述了一种在映射网络中利用基于无关项的优化的增量方法。所提出的方法使用基于可扩展SAT的技术来计算在执行节点再替换和逻辑函数简化时无关项的灵活性。这些基于SAT的技术可以被集成在一起,以增量和建设性的方式与商业设计流程中的其他引擎协同工作,旨在实现面积恢复。
图6图示了在诸如集成电路等制品的设计、验证和制作期间使用的过程600的示例集合,以变换和验证表示集成电路的设计数据和指令。
这些过程中的每个过程都可以作为多个模块或操作来结构化和启用。术语‘EDA’表示术语‘电子设计自动化’。这些过程开始于利用设计者供应的信息创建产品理念610,该信息被变换以创建使用EDA过程集合612的制品。当设计被最终确定时,设计被流片634,这是当用于集成电路的艺术品(例如几何图案)被发送到制作设施以制造掩模集合时,该掩模集合然后被用于制造集成电路。在流片之后,半导体管芯被制作636,并且封装和组装过程638被执行以产生完成的集成电路640。
电路或电子结构的规范范围从低级晶体管材料布局到高级描述语言。高级表示可以被用于使用诸如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera等硬件描述语言(‘HDL’)设计电路和系统。HDL描述可以被变换为逻辑级寄存器传输级(‘RTL’)描述、门级描述、布局级描述或掩模级描述。作为更详细描述的每个较低表示级别都会在设计描述中添加更多有用的细节,例如包括该描述的模块的更多细节。作为更详细描述的低级表示可以由计算机生成,从设计库导出,或者由另一设计自动化过程创建。用于指定更详细描述的低级表示语言的规范语言的示例是SPICE,它被用于具有许多模拟组件的电路的详细描述。每个表示级别的描述都被启用以由该层的对应系统(例如正式验证系统)使用。设计过程可以使用图6所描绘的序列。所描述的过程由EDA产品(或EDA系统)启用。
在系统设计614期间,要制造的集成电路的功能性被指定。设计可以针对诸如功耗、性能、面积(物理和/或代码行)和成本降低等期望特性来优化。在该阶段可以将设计分区为不同类型的模块或组件。
在逻辑设计和功能验证616期间,电路中的模块或组件用一种或多种描述语言指定,并且检查规范的功能准确性。例如,电路的组件可以被验证,以生成与正在设计的电路或系统的规范的要求相匹配的输出。功能验证可以使用模拟器和其他程序,诸如测试平台生成器、静态HDL检查器和正式验证器。在一些实施例中,被称为‘仿真器’或‘原型系统’的组件的特殊系统被用于加速功能验证。
在测试618的合成和设计期间,HDL代码被变换为网表。在一些实施例中,网表可以是示图结构,其中示图结构的边缘表示电路的组件,并且示图结构的节点表示组件如何被互连。HDL代码和网表都是分层的制品,它可以由EDA产品使用以验证集成电路在制造时是否根据指定的设计执行。该网表可以针对目标半导体制造技术来优化。附加地,完成的集成电路可以被测试,以验证集成电路满足规范的要求。
在网表验证620期间,检查网表的与定时约束的依从性以及与HDL代码的对应性。在设计规划622期间,集成电路的总体平面图针对定时和顶级路由来构造和分析。
在布局或物理实施624期间,发生物理放置(诸如晶体管或电容器等电路组件的定位)和布线(通过多个导体连接电路组件),并且从库中选择单元以启用具体逻辑函数可以被执行。如本文使用的,术语‘单元’可以指定晶体管、其他组件和互连的集合,它们提供布尔逻辑函数(例如AND、OR、NOT、XOR)或存储函数(诸如触发器或锁存器)。如本文使用的,电路‘块’可以指两个或多个单元。单元和电路块都可以被称为模块或组件,并且在物理结构和模拟中都被启用。参数针对所选单元来指定(基于‘标准单元’),诸如大小,并且使其可在数据库中访问,以供EDA产品使用。
在分析和提取626期间,电路功能在布局级别被验证,这允许对布局设计进行细化。在物理验证628期间,布局设计被检查以确保制造约束是正确的,诸如DRC约束、电约束、光刻约束以及与HDL设计规范相匹配的电路系统功能。在分辨率增强630期间,布局的几何形状被变换以改进电路设计的制造方式。
在流片期间,数据被创建以用于光刻掩模的生产(如果适当,则在光刻增强被应用之后)。在掩模数据准备632期间,‘流片’数据被用于产生光刻掩模,该光刻掩模被用于产生完成的集成电路。
计算机系统的存储子系统(诸如图7的计算机系统700)可以被用于存储由本文描述的一些或全部EDA产品使用的程序和数据结构以及用于开发库的单元以及用于使用库的物理和逻辑设计的产品。
图7图示了计算机系统700的示例机器,在该计算机系统700内,用于使机器执行本文讨论的任何一种或多种方法的指令集可以被执行。在替代实施方式中,该机器可以被连接(例如联网)至LAN、内联网、外联网和/或互联网中的其他机器。
该机器可以在客户端-服务器网络环境中以服务器或者客户端机器的身份操作,或者在对等(或者分布式)网络环境中作为对等机器操作,或者在云计算基础设施或环境中作为服务器或客户端机器操作。
该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥接器或者能够执行指定由该机器采取的动作的指令集(连续的或以其他方式)的任何机器。进一步地,虽然单个机器被图示,但是术语“机器”也应该被视为包括单独地或者联合地执行用于执行本文讨论的任何一种或多种方法的指令集(或者多个指令集)的任何机器集合。
示例计算机系统700包括处理设备702、主存储器704(例如只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)等动态随机存取存储器(DRAM))、静态存储器706(例如闪存、静态随机存取存储器(SRAM)等)以及数据存储设备718,它们经由总线730彼此通信。
处理设备702表示诸如微处理器、中央处理单元等一个或多个处理器。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或者实施其他指令集的处理器或者实施指令集的组合的处理器。处理设备702还可以是诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等一个或多个专用处理设备。处理设备702可以被配置为执行用于执行本文描述的操作和步骤的指令726。
计算机系统700还可以包括通过网络720通信的网络接口设备708。计算机系统700还可以包括视频显示单元710(例如液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备712(例如键盘)、光标控制设备714(例如鼠标)、图形处理单元722、信号生成设备716(例如扬声器)、图形处理单元722、视频处理单元728和音频处理单元732。
数据存储设备718可以包括在其上存储有一个或多个指令集726或软件的机器可读存储介质724(也称为非暂态计算机可读介质),该一个或多个指令集726或软件实施本文描述的任何一种或多种方法或者功能。指令726还可以在由计算机系统700对其进行执行期间完全地或者至少部分地驻留在主存储器704内和/或处理设备702内,主存储器704和处理设备702还构成机器可读存储介质。
在一些实施方式中,指令726包括实施与本公开相对应的功能性的指令。虽然机器可读存储介质724在示例实施方式中被示出为单个介质,但是术语“机器可读存储介质”应该被视为包括存储一个或多个指令集的单个介质或者多个介质(例如集中式或分布式数据库和/或关联的缓存和服务器)。术语“机器可读存储介质”还应该被视为包括能够存储或编码用于由机器执行的指令集并且使该机器和处理设备702执行本公开的任何一种或多种方法的任何介质。因此,术语“机器可读存储介质”应该被视为包括但不限于固态存储器、光学介质和磁性介质。
前述详细描述的一些部分已经根据对计算机存储器内的数据位的操作的算法和符号表示提出。这些算法描述和表示是供数据处理领域的技术人员用于最有效地将他们的工作实质传达给本领域的其他技术人员的方式。算法可以是产生期望结果的操作序列。操作是需要物理操纵物理量的操作。这种量可以采用能够被存储、组合、比较和以其他方式操纵的电信号或者磁性信号的形式。这种信号可以被称为位、值、元素、符号、字符、术语、数字等。
然而,应该牢记,所有这些和类似的术语都将与适当的物理量相关联并且仅仅是应用于这些量的方便的标签。除非另有特别阐明,如从本公开显而易见的,要了解的是,在本描述中,某些术语指的是计算机系统或者类似的电子计算设备的动作和过程,该计算机系统或类似的电子计算设备操纵表示为计算机系统的寄存器和存储器内的物理(电子)量的数据,并且将其变换为类似地表示为计算机系统存储器或者寄存器或者其他这种信息存储设备内的物理量的其他数据。
本公开还涉及一种用于执行本文的操作的装置。出于预期目的,该装置可以进行特别构造,或者它可以包括由存储在计算机中的计算机程序选择性地激活或者重新配置的计算机。这种计算机程序可以被存储在计算机可读存储介质中,诸如但不限于包括软盘、光盘、CD-ROM和磁光盘的任何类型的盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或者适合于存储电子指令的任何类型的介质(分别被耦合至计算机系统总线)。
本文提出的算法和显示器在本质上与任何特定计算机或者其他装置不相关。根据本文的教导,各种其他系统可以与程序一起使用,或者它可以证明构造更专用的装置以执行方法比较方便。另外,本公开未参照任何特定的编程语言来描述。要了解,各种编程语言可以被用于实施本文描述的本公开的教导。
本公开可以被提供为可以包括在其上存储有指令的机器可读介质的计算机程序产品或者软件,该指令可以被用于对计算机系统(或者其他电子设备)进行编程以根据本公开执行过程。机器可读介质包括用于以由机器(例如计算机)可读的形式存储信息的任何机制。例如,机器可读(例如计算机可读)介质包括机器(例如计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、闪存设备等。
在前述公开中,本公开的实施方式已经参照其具体示例实施方式描述。将显而易见的是,在不脱离以下权利要求中陈述的本公开的实施方式的更广泛的精神和范围的情况下,各种修改可以对其进行。在本公开涉及单数时态中的一些元素的情况下,多于一个元素可以在附图中描绘,并且相同的元素用相同的数字标记。因此,本公开和附图被认为是说明性的而不是限制性的。
Claims (15)
1.一种方法,包括:
在映射网络中选择门;
将所述门解映射为当前布尔表达式;
生成针对所述门的无关项集合,所述无关项集合包括多个无关项,其中针对目标门的输入序列不影响所述映射网络中的另一门的输出功能性;
由处理设备,使用所述无关项集合来执行再替换,以生成针对所述门的新的布尔表达式;以及
响应于确定所述新的布尔表达式在功能上等同于所述当前布尔表达式,基于所述新的布尔表达式来将所述门重新映射为映射门。
2.根据权利要求1所述的方法,还包括:
针对所述映射网络中的每个门执行再替换,以确定所得到的新的布尔表达式是否在功能上等同于相应的当前布尔表达式。
3.根据权利要求2所述的方法,还包括:
通过多次迭代针对所述映射网络中的每个门执行再替换。
4.根据权利要求3所述的方法,还包括:
通过所述多次迭代,识别所述映射网络中的多个门,所述多个门具有在功能上等同于当前布尔表达式的新的布尔表达式;
响应于完成所述多次迭代,将所述多个门重新映射到映射节点。
5.根据权利要求1所述的方法,还包括,在执行再替换之前:
识别针对所述门的窗口,所述窗口包括所述门的扇入的一个或多个级别和所述门的扇出的一个或多个级别;以及
从所述窗口内识别在执行再替换时要使用的除数。
6.根据权利要求1所述的方法,其中将所述门解映射包括:将所述门从库单元解映射到所述当前布尔表达式。
7.根据权利要求1所述的方法,其中生成所述无关项集合包括:
以合取范式(CNF)格式制定SAT实例。
8.根据权利要求1所述的方法,其中执行再替换包括:
执行因子形式(FF)文字成本计算,其中所述FF文字成本计算包括重新表达所述门的所述新的布尔表达式的文字成本以及响应于执行再替换而移除的零扇出门的最大扇出自由锥(MFFC)的文字成本。
9.根据权利要求1所述的方法,其中在执行再替换之后,由所述映射网络定义的电路的设计是包括映射节点和未映射节点的混合设计。
10.根据权利要求1所述的方法,还包括:
在执行再替换之后,使用因子形式(FF)文字成本计算对所述门执行局部函数简化。
11.一种系统,包括:
处理器;以及
存储器,所述存储器包含程序,在由所述处理器执行时,所述程序执行操作,包括:
在映射网络中选择门;
将所述门解映射为当前布尔表达式;
在与所述门相关联的窗口内识别除数;
使用所述除数执行再替换,以生成所述门的新的布尔表达式;以及
响应于确定所述新的布尔表达式在功能上等同于所述当前布尔表达式,基于所述新的布尔表达式来将所述门重新映射为映射门。
12.根据权利要求11所述的系统,其中所述操作包括:
针对所述映射网络中的每个门执行再替换,以确定所得到的新的布尔表达式是否在功能上等同于相应的当前布尔表达式。
13.根据权利要求12所述的系统,其中所述操作包括:
通过多次迭代针对所述映射网络中的每个门执行再替换;
通过所述多次迭代,识别所述映射网络中的多个门,所述多个门具有在功能上等同于当前布尔表达式的新的布尔表达式;以及
仅在完成所述多次迭代之后,将所述多个门重新映射到映射节点。
14.根据权利要求13所述的系统,其中所述操作包括,在执行再替换之前:
识别针对所述门的窗口,所述窗口包括所述门的扇入的一个或多个级别和所述门的扇出的一个或多个级别;以及
从所述窗口内识别在执行再替换时要使用的除数。
15.一种非暂态计算机可读存储介质,其中具有计算机可读程序代码,所述计算机可读程序代码能够由处理器执行以执行操作,所述操作包括:
(i)在映射网络中选择门;
(ii)将所述门解映射为当前布尔表达式;
(iii)针对所述门执行再替换以生成所述门的新的布尔表达式;以及
(iv)响应于确定所述新的布尔表达式在功能上等同于所述当前布尔表达式,基于所述新的布尔表达式来将所述门重新映射为映射门;以及
(v)通过多次迭代针对所述映射网络中的每个门重复(i)-(iv),直到达到阈值迭代数目为止。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263336591P | 2022-04-29 | 2022-04-29 | |
US63/336,591 | 2022-04-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116976249A true CN116976249A (zh) | 2023-10-31 |
Family
ID=88473801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310481172.4A Pending CN116976249A (zh) | 2022-04-29 | 2023-04-28 | 用于增量映射优化的基于可满足性的再替换 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230351082A1 (zh) |
CN (1) | CN116976249A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117852494A (zh) * | 2024-03-08 | 2024-04-09 | 中科鉴芯(北京)科技有限责任公司 | 针对dff优化的逻辑仿真加速方法和装置 |
-
2023
- 2023-04-27 US US18/140,226 patent/US20230351082A1/en active Pending
- 2023-04-28 CN CN202310481172.4A patent/CN116976249A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117852494A (zh) * | 2024-03-08 | 2024-04-09 | 中科鉴芯(北京)科技有限责任公司 | 针对dff优化的逻辑仿真加速方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20230351082A1 (en) | 2023-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11922106B2 (en) | Memory efficient scalable distributed static timing analysis using structure based self-aligned parallel partitioning | |
US11256845B2 (en) | Machine-learning driven prediction in integrated circuit design | |
US11836425B2 (en) | Engineering change orders with consideration of adversely affected constraints | |
US20220075920A1 (en) | Automated Debug of Falsified Power-Aware Formal Properties using Static Checker Results | |
US20220300688A1 (en) | Fast synthesis of logical circuit design with predictive timing | |
CN116976249A (zh) | 用于增量映射优化的基于可满足性的再替换 | |
US11669665B1 (en) | Application-specific integrated circuit (ASIC) synthesis based on lookup table (LUT) mapping and optimization | |
TW202333039A (zh) | 使用超級葉單元的記憶體個體重新配置 | |
US20230004698A1 (en) | Dividing a chip design flow into sub-steps using machine learning | |
US20220318481A1 (en) | Runtime and memory efficient attribute query handling for distributed engine | |
US20210390244A1 (en) | System and Method for Synchronizing Net Text Across Hierarchical Levels | |
US11120184B2 (en) | Satisfiability sweeping for synthesis | |
US20220198109A1 (en) | Boolean methods for engineering change order (eco) patch identification | |
US20240078366A1 (en) | Circuit design adjustments using redundant nodes | |
US11663384B1 (en) | Timing modeling of multi-stage cells using both behavioral and structural models | |
US11630934B1 (en) | Integrated circuit analysis using a multi-level data hierarchy implemented on a distributed compute and data infrastructure | |
US20220391569A1 (en) | Parallel and scalable computation of strongly connected components in a circuit design | |
US11847396B1 (en) | Integrated circuit design using multi-bit combinational cells | |
US11526642B1 (en) | Clock network power estimation for logical designs | |
US11222154B2 (en) | State table complexity reduction in a hierarchical verification flow | |
US20230252208A1 (en) | Transforming a logical netlist into a hierarchical parasitic netlist | |
US11416661B2 (en) | Automatic derivation of integrated circuit cell mapping rules in an engineering change order flow | |
US20220058328A1 (en) | Synthesis placement bounds based on physical timing analysis | |
US20220327266A1 (en) | Generating a reduced block model view on-the-fly | |
US20230126888A1 (en) | Computation of weakly connected components in a parallel, scalable and deterministic manner |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |