CN101814101A - 通过轨迹包含来减小时序网表的方法和系统 - Google Patents
通过轨迹包含来减小时序网表的方法和系统 Download PDFInfo
- Publication number
- CN101814101A CN101814101A CN201010126154A CN201010126154A CN101814101A CN 101814101 A CN101814101 A CN 101814101A CN 201010126154 A CN201010126154 A CN 201010126154A CN 201010126154 A CN201010126154 A CN 201010126154A CN 101814101 A CN101814101 A CN 101814101A
- Authority
- CN
- China
- Prior art keywords
- track
- input
- time
- cutting
- net table
- 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
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/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
- G06F30/3323—Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
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)
- Design And Manufacture Of Integrated Circuits (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
提供了通过针对电路设计网表的轨迹包含来减小时序网表的方法和系统,这通过首先标识该网表的切割并枚举不匹配轨迹的集合。对反映用于特定输入i的时序余因子和用于输入“J”的集合的时间上非相关性的约束的、该切割的余因子版本执行时间受限的展开。在对输入“J”的集合的时间上非相关性的约束下,通过相对于该网表的该切割来执行等价检查来确定是否存在轨迹包含。响应于检测到轨迹包含,通过将输入“i”合并到常数来简化该网表。
Description
技术领域
本发明涉及状态机的数字电路设计,并且更具体地,涉及用于有效改善数字电路设计的系统、方法和计算机产品。
背景技术
可以使用状态等式和状态变量以描述系统的行为和状态来建模具有存储器元件的电子电路。与定义状态之间的转换的逻辑耦合的系统的状态变量的完整集合典型地包括关于系统的历史的足够信息,以使得能够计算系统的未来行为。简化模型以精简状态变量的数量,或者简化定义状态转换的逻辑,这减轻了例如分析模型以验证它符合给定规范的计算代价。
状态变量模型的综合(synthesis)和验证通常需要大量的计算资源。因此,对于逻辑设计中的各种任务,减小设计尺寸的能力处于中心重要的地位,这是由于相对于设计尺寸,验证算法通常需要指数级的资源。减小设计尺寸的能力可能在使用验证算法来暴露设计缺陷是否可行的方面有所区别。
所需要的是在保留相对于验证结果的该设计的行为的同时减小设计尺寸的自动方法。
发明内容
在此公开的实施例通过提供通过保留相对于验证结果的该设计的行为的轨迹包含(trace-containment)检测的方法来减小设计尺寸的系统、方法和计算机产品,来解决上述的需要。
提供各种实施例,用于通过电路设计网表的轨迹包含来减小时序网表,这通过标识该网表的切割、枚举不匹配(mismatch)轨迹的集合、然后从这些不匹配轨迹得到输入“J”的集合用于等价检查以检测轨迹包含。各种实施例执行该切割的余因子版本的时间受限的展开,其中该切割的余因子版本反映用于i的时序余因子和用于输入“J”的集合的时间上非相关性的约束,然后确定是否存在轨迹包含。响应于检测到轨迹包含,可以识别对输入“J”的集合的约束关系。当识别对输入“J”的约束关系时,这些实施例可以试图证明该切割的时序等价(sequential equivalence)。
附图说明
被合并在说明书中并组成说明书的一部分的附图图示了本发明的各种实施例。与通常描述一起,附图起到解释本发明的原理的作用。在附图中:
图1A描绘了通过基于轨迹包含的减小来减小网表(netlist)尺寸的整体架构的方法的流程图100;
图1B描绘了高层(high level)轨迹包含检查的方法的流程图150;
图2A描绘了根据本发明的各种实施例的使用网表切割(cut)来获取在基于轨迹包含的减小中使用的切割的方法的流程图200;
图2B描绘了搜索切割而针对的电路中的示例寄存器;
图2C描绘了用于获取在基于轨迹包含的减小中使用的切割的伪代码;
图3描绘了根据本发明的各种实施例的用于确定在输入之间的时间关系的方法的流程图300;
图4A-D描述了用于实现被搜索来消除的输入和其他输入之间的所确定的时间关系的逻辑;以及
图5描绘了适于实现和实践各种示例实施例的计算机系统500。
具体实施方式
在此公开的各种实施例经由轨迹包含检测来提供时序设计(sequentialdesign)的自动减小。这包括许多相互关联的方面,例如包括通过反复假定期望的减小、假定在该设计的输入之间的时间关系以使能(enable)轨迹包含检测、然后尝试证明相应的轨迹包含以使能该减小来减小网表尺寸的整体架构。第二相关方面包括计算该网表的切割,针对其来获得可以用于使能有效的轨迹包含检测的不匹配轨迹。在第三相关方面中,在输入之间确定可以用于使能有效的轨迹包含检测的时间关系。最后,第四相关方面涉及用于实现我们希望消除的输入和其他输入之间的确定的时间关系以使能轨迹等价检测的机制。尽管在一些情况下,各种方面中的一些可以被实现为单独的解决方案,但是提供根据所公开的实施例的整体验证架构仍然是有用的。
用于电路设计的网表包括具有代表门的顶点(vertices)和代表这些门之间的相互连接的边的有向(directed)图。这些门具有相关功能,例如常数、初级输入(primary input)、诸如AND门之类的组合逻辑和时序元件(在下文中被称为寄存器)。寄存器具有两种类型的相关功能:它们的下一状态功能和它们的初始值功能。两者在图形中用其他门来代表。在语义上,对于给定的寄存器,在时间“0”(“初始化”或“复位”时间)处在其初始值门处出现的值将被用作该寄存器自身的值。在时间“i”处在其下一状态功能门处出现的值将在时间“i+1”处被用于寄存器自身。不具有寄存器的网表被称为“组合(combinational)”。可以将网表中的某些门标记为目标。目标与被搜索来验证的属性相关联。验证处理的目的是搜索将“1”驱动到目标节点(以及如果发现一,则生成随时间的对门的配值(valuation)的“轨迹”,例示该情况)的方式,或者证明目标的这种取值(assertion)是不可能的方式。术语“余因子(cofactor)”表示用常数来替代设计中的输入。正的余因子表示用常数1代替输入。负的余因子表示用常数0代替输入。可以通过“合并”操作来简化网表,该“合并”操作用对要合并到其上的门的参考,来代替来自一个门的扇出参考(fanout references)。“切割”表示将网表图形分割为两个部分的分割。
图1A描绘了用于通过基于轨迹包含的减小来减小网表尺寸的整体架构的方法的流程图100。本发明的该第一个方面涉及反复假定期望的减小,假定该设计的输入之间的时间关系以使能有效的轨迹包含检测,然后尝试证明相应的轨迹包含以使能该减小。通过下面的伪代码来描绘该处理的上层循环。方法在101处开始,并前进到103以取第一输入i。在块105中,对于每个输入i,将时序余因子逻辑添加到输入i。方法前进到107来确定i被余因子为0的网表轨迹是否包含i被余因子为1的网表。如上所述,术语余因子表示用常数——用于正余因子的常数1或者用于负余因子的常数0——来替代设计中的输入。如果在107中确定i被余因子为0的网表轨迹包含i被余因子为1的网表,则该方法沿着“是(YES)”分支前进到109以将i合并到0。然后,方法从109前进到117来确定是否取另一输入i。然而,返回到块107中,如果确定i被余因子为0的网表轨迹不包含i被余因子为1的网表,则该方法沿着“否(NO)”分支前进到111。
在块111中,该方法检查i被余因子为1的网表轨迹是否包含i被余因子为0的网表。如果这被发现是真的,则该方法沿着“是(YES)”分支前进到113以将i合并到1。然而,如果在块111中确定i被余因子为1的网表轨迹不包含i被余因子为0的网表,则该方法沿着“否(NO)”分支前进到115,在115中确定不能消除输入i并且从i中去除(remove)时序余因子。然后,方法前进到117来确定是否存在将被考虑的另一输入i。如果存在,则该方法沿着“是(YES)”分支从117返回到103以取另一输入i。如果在117中确定不存在另外的i输入,则该方法沿着“否(NO)”分支从117前进并且结束。
至少一些实施例可以将时序余因子逻辑用作在给相同代理人的发明名称为“Method,System and Application for Sequential Cofactor-Base Analysis ofNetlists”、代理案号AUS920080393..IBM-0144(‘393申请)的共同未决美国专利申请中公开的每种方法和系统。该共同未决的专利申请中的各种实施例允许系统使能在一个特别的时间帧内评估输入对设计的影响。该共同未决的专利申请的方法通过评估任意时间点处在相应的输入上驱动0vs.1的影响,使得能够研究(exploration)对输入i的配值的任意序列。驱动0vs.1的时间点可以被称为“余因子时间”。然后,我们可以研究负余因子轨迹是否包含正余因子。如果包含,则我们可以将i合并到0。如果不包含,则我们检查正余因子轨迹是否包含负余因子。如果这被发现是真的,则我们可以将0合并到1。如果没有一个条件被满足,则我们可能不将输入合并到任一常数0或1,并且相反,继续尝试消除下一输入。
图1B描绘了用于高层轨迹包含检查的方法的流程图150。图1B的方法在151处开始以评估轨迹包含,并且前进到153以针对网表的所标识的切割来枚举不匹配轨迹的集合。例如,这可以用本发明的第二方面以下面结合图2A描述的方式来完成。图2A的方法计算网表的切割,针对其来获得可以用于使能有效的轨迹包含检测的不匹配轨迹。返回到图1B的块153,一旦枚举了不匹配轨迹,该方法就前进到155。在块155中,使用不匹配轨迹来获得输入“J”的集合,该输入“J”的集合被操纵来进行等价检查以检测轨迹包含。然后,方法前进到157,以得到“J”和余因子时间之间的时间关系。这可以使用下面结合图3讨论的本发明的第三方面的各种实施例来完成。当完成“J”和余因子时间之间的时间关系时,该方法从157前进到159。
块159的活动涉及将时间上非相关性的约束添加到“J”以反映时间关系,本发明的第四方面。然后,该方法前进到161以对反映用于i的时序余因子和用于“J”的时间上非相关性的约束的、该切割的余因子版本(cofactoredversion)的进行时间受限的展开(time-bounded unfolding)。当在161中完成对余因子的切割版本的时间受限的展开之后,该方法前进到163以确定是否可以检测到轨迹包含。如果由于例如不匹配轨迹而造成在163中不能验证轨迹包含,则该方法沿着“否(NO)”路径从163前进到165以评价是否获得额外的不匹配轨迹并重复该处理。如果在165中确定要尝试其他不匹配轨迹,则该方法沿着“是(YES)”路径从165返回到153。否则,该方法沿着“否”路径从165前进到173并结束。
返回到块163中,如果在块161的组合展开结果上检测到轨迹包含,则该方法沿着“是(YES)”路径从163前进到167以识别对“J”的约束关系。当完成块167识别对“J”的约束关系时,该方法前进到块169以使用在块167中得到的约束关系来尝试证明得到的切割的时序等价。在块169中,如果不能证明该切割的时序等价(sequential equivalence),则该方法沿着“否(NO)”路径从169前进到165以评价是否使用其他的不匹配轨迹来重复该处理。然而,如果在169中该切割被证明是等价的,则该方法沿着“是(YES)”路径从169前进到171以接受该切割。然后,该方法前进到173并结束。
例如,如下面结合图2A所讨论的,在本发明的第二方面的实施例中描述获得用于所标识的切割的不匹配轨迹的处理。一旦获得切割,我们就可以标识输入“J”的集合,其可以被操纵来尝试使能等价检查来检测轨迹包含。例如,如下面结合图3所讨论的,在本发明的第三方面的实施例中详细描述这个处理。例如,如下面参考图4所描述的,当完成这个处理时,我们可以按照本发明的第四方面的实施例来将时间上非相关性的约束注入到“J”。然后,组合的轨迹包含检测算法可以被用在网表的临时展开版本上。展开指的是通过及时(in time)展开时序问题、即通过将时间步i的网表的拷贝在时间步“i+1”中送入这些寄存器的下一状态功能,来对于每个时间步(time step)引入新的输入,并且在时间0处使用初始值来代替这些寄存器,来将该时序问题转换为组合网表。
在分配给当前代理人的发明名称为“Method and System forTrace-Containment Detection of Combinational Netlist via Constraint-BasedUncorrelated Equivalence Checking”、代理案号AUS920080415..IBM-0145(‘415申请)的共同未决的美国专利申请中公开了示例组合的轨迹包含检测算法。该共同未决的美国专利申请公开了用于检测组合设计的轨迹包含的方法。当前发明的各种实施例描述了时序设计的基于轨迹包含的减小的构架。然而,在当前发明的至少一些实施例中,我们可以使用共同未决‘415申请的方面来有效地确定可能在时序域中有用的、在正被减小的时序网表的受限行为(bounded behavior)上的关系。
轨迹包含检测算法的副产物是在非相关的输入“J”上的关系,其表示可以如何使网表的一个拷贝与另一个相同地表现(behave)。一旦我们获得了“J”上的该关系用于展开的网表,我们就相应地约束在临时非相关的约束中使用的相应输入,并尝试证明得到的切割的时序等价。该证明可以通过任意验证算法、例如基于BDD或SAT的可达性分析、归纳法、插值等来得到。在发明名称为“Exploiting Suspected Redundancy for Enhanced DesignVerification”的与本公开相同的发明人的美国专利7,260,799中公开了时序等价检查的方法,其全部内容通过引用合并于此。
图2A描绘了使用网表切割来获得在基于轨迹包含的减小中使用的切割的方法的流程图200。轨迹包含检测可以是计算代价高昂的。该方法检测网表的切割,针对其来获得可以用于使能有效的基于轨迹包含的减小的不匹配轨迹。当标识这种切割时必须考虑的普遍哲理是,如果该切割太小,则不太可能存在轨迹包含关系——而如果该切割太大,则检测轨迹包含可能在计算上不可行。
为了说明该问题,考虑图2B,其描述了搜索切割而针对的电路中的寄存器。假设,我们尝试的减小是合并具有0的网表的输入I0,如图的顶部处所描绘的。为了证实该合并保留了验证结果,我们可能希望将它的行为与当将I0驱动为1时的网表的行为相比较,如图的底部处所描绘的。假设该网表具有不同于I0的输入的向量,这些不同于I0的输入与I0一起通过寄存器组R0、R1、R2被采样到在图中标记为“一比特热位(one-hot)”的一比特热位检测器。阴影描绘了可能在两个网表中评价不同的网表子集,并且该网表子集包括采样I0的R0、R1、R2的位、一比特热位检测器以及一比特热位检测器的扇出中的门的集合。
本公开的这个方面通过标识在正被合并以使能该减小的门的扇出中的网表的切割来操作。这可以通过枚举可能在正被分析用于轨迹包含的两个网表之间不匹配的门的子集来完成。这通过分析轨迹的集合并且枚举在任何轨迹中在两个网表之间行为不同的门来完成。这个集合将形成网表的切割,因为不可能的是,该网表的内部门在行为上不同而其扇入(fanin)中的任何门在行为上相同。在至少一个实施例中,使用仿真和受限彻底搜索(boundedexhaustive search)的混合来获得轨迹,例如在初始化之后的一定数量的时间帧中,在网表的展开拷贝上使用SAT解算机(solver)来研究可由该设计产生的所有行为。后者可以用于直接尝试标识在两个网表中的某些门之间的不匹配,并且特别地,针对还没有被证明(witnessed as)为在两个网表之间不匹配的门,以及具有在它们中间的扇入中被证明为不匹配的门的门。可以用图2C的伪代码来总结该全部处理。
参考图2C,进程Search_For_Mismatch()使用验证算法、例如如上所述的仿真和基于SAT的受限搜索的任意集合,以试图找到在mismatch_frontier的门上的不匹配。如果找到轨迹,则可以使用进程Extend_Trace()来将行为和时间帧添加到该轨迹来更好地使该轨迹能甚至在mismatch_frontier以外的门上标识不匹配。Find_New_Frontier()进程分析得到的轨迹以找到被标识为“轨迹”中的不匹配的所有门,并且创建new_mismatch_frontier作为直接在该区域的扇出处的门,用于通过循环而下一次重复。
当该进程成功终止时,它标识了网表的切割,该网表的切割将被证明为不匹配的vs.没有被证明为不匹配的门进行分割。然而,通常期望的是选择被证明为轨迹包含检测的基础的门的切割。因此,在一些实施例中,期望的是将在被标识为不匹配的不匹配边缘的扇入中的门选为我们的切割。更普遍地,我们可以将被包含在该最大尺寸的不匹配切割中的任意切割选为要使用的切割。可以使用用于最小切割分析的算法,例如在1956年来自CanadianJournal of Mathematics的作者为L.ft Ford和D.P.Fulkerson的题为“MaximalFlow Through a Network”的论文中所描述的,用于标识更小的切割以尝试进一步提炼(abstract against)。在一些实施例中,可能使用资源限制、例如对不匹配轨迹的最大长度的限制、或者对Search_For_Mismatch的时间或存储器限制或者对mismatch_frontier的大小的限制,来终止具有更小的切割的该进程。
通常,切割越大,在标识轨迹包含时可能牵涉的资源更多。然而,如上所述,切割太小可能不呈现轨迹包含,尽管有可能更深的切割将呈现。例如,如果我们在R0或R1或R2处选择切割,则可能出现在图2B的两个网表上不可能有轨迹包含的情况。然而,如果我们从一比特热位输入或其扇出选择任何切割,则路经包含将是可检测的,因为对其他输入的配值可能导致等价轨迹。为了最优,我们可能希望获得尽可能靠近一比特热位的切割。结合图2A-C讨论的处理可以使能标识这种切割。
引入多个机制来增强该处理的伸缩性,从而减小计算复杂度。一个机制利用用于在网表的切割vs.整个网表上执行轨迹包含分析的能力。在图2A中描绘了根据本发明的第二方面的实施例的用于获得和测试这种切割的流程图。对于时序余因子逻辑被添加到的每个输入i,可以确定和测试(这一个或多个)切割,例如按照图1的块103和105。
返回图2A,该图的方法在201处开始,并且前进到203来计算针对其来检测轨迹包含的网表的切割。然后,该方法前进到块205来执行轨迹包含减小。这可以以结合图1的块107-115的上述方式来完成。然后,该方法前进到207来确定是否可以消除输入。如果不能消除输入,则该方法经由“否”分支从207前进到209,在209处确定该切割是否等于该网表。然而,如果在207中确定能够消除输入,则该方法沿着“是(YES)”分支从207前进到211以消除该输入。当在211中消除了输入时,该方法前进到217并结束。
返回到块209,如果确定该切割等价于该网表,则因为不能消除该输入,该方法沿着“是(YES)”路径前进到213,然后前进到217,在217处该方法结束。然而,如果在209中确定该切割不等价于该网表,该方法沿着“否(NO)”路径前进到215。在块215中,确定是否增长该切割。在一些情况下,可能没有可能增长该切割。而在其他情况下,这可能是有可能的但是不可行的(或者不实际的)。例如,使该切割更大可能需要处理比预定最大限度更多的资源。在这种情况下,虽然将有可能增长该切割,但是这可能是特别昂贵的。如果在215中决定增长该切割,则该方法沿着“是(YES)”路径从215返回到203来确定新的切割。然而,如果(例如,由于基于诸如所估计的处理要求之类的预定准则,这是不可能的或者不期望的)确定不应该增长该切割,则该方法从215前进到213来指定该输入为不能被消除的输入。在该情况下,从i去除时序余因子,然后方法前进到块217,在217处方法结束。
图3涉及结合用于将时序轨迹包含问题转换为组合轨迹包含问题的机制、来确定在输入之间的时间关系的方法,这可以用于根据本发明的各种实施例来使能有效的基于轨迹包含的减小。
如在给相同代理人的发明名称为“Method and System forTrace-Containment Detection of Combinational Netlists via Constraint-BasedUncorrelated Equivalence Checking”的共同未决的‘415专利申请中所公开的,可以通过去相关(uncorrelate)某些输入,并且使用约束以使得等价检查能够捕获轨迹包含检测的方式来操纵它们,来使能针对组合网表的轨迹等价检测。对于时序网表,该操纵处理变得极其复杂,因为各种输入可能在不同的相对时间帧,影响正用于轨迹包含检测的切割,如结合图2A-C上述的实施例。例如,假设网表具有“opcode”输入向量以及当被取值为1时将导致该设计在一个时间步之后采样和解码“opcode”的“valid”输入。假设我们希望将“valid”合并到1,因为这样做将保留轨迹等价,即解码器输出将在“valid=0”之后一个时间步时驱动“no_op=1”以及在任何时间驱动“opcode={no-op}”。在该例子中,为了使能轨迹包含检测,我们需要能够去相关“opcode”并且约束它以在“valid=1”之后一个时间步时给{no-op}评估(evaluate),来产生与“valid=0”时相同的行为。
相对固定的延时和固定时间是由在此公开的各种实施例支持的两种时间关系。可以从上面前一段中讨论的opcode例子来理解相对固定的延时。在那个例子中,不相关的输入(“opcode”)要求相对于正被合并的输入(“valid”)的、为1的相对固定的延时。这个延时可以在正或负方向上,或者甚至同时。我们的发明仅仅处理同时或正延时。可以从下面的例子来理解时间关系的另一类型,固定时间。假设,存在数据路由网表,并且我们希望验证它正确地路由数据。网表可以具有“data_in”输入向量和“data_out”输出向量。我们希望检查的属性是:特定值将在“data_out”处出现,在且仅在相同的值早前在“data_in”处出现过的情况下。实现该检查的一种方式是创建用随机地初始化并之后保持它们的值的寄存器集合来实现的随机常数。然后,当“data_in”匹配该随机常数时,我们可以设置(set)被任意称为“seen”的寄存器,并且利用如果“data_out”等于该随机常数则取值“seen=0”的目标。如果我们希望将“data_in”的一个比特固定到假设为0的常数,则注意针对该随机常数的等价检查的结果将不等价于“data n”的那个比特是1的情况。具体地,考虑随机常数具有值“111111”并且两个轨迹包含检查的网表的“data_in”是“111111”vs“011111”的情况。在前一种情况下,等价检查将报告等价。在后一种情况下,等价检查将报告不等价(或非等价)。为了使能轨迹包含检测,我们使得该随机常数的(如被固定用于“data in”的)相同比特不相关。而且,在时间0处必须约束该随机常数的非相关比特,而不管“data_in”不同时的时间。
在尝试学习在输入之间的时间关系中的我们的基本机制依赖于对不匹配轨迹、例如以上结合图2A-C所描述的第二方面期间获得的那些不匹配轨迹的分析。在至少一个实施例中,我们希望获得最少赋值(minimally-assigned)的轨迹,即包括尽可能少的输入赋值的轨迹,以例示期望的不匹配。可以通过在搜索不匹配时使用电路-SAT解算机来分析两个设计的行为,产生最少赋值的轨迹,因为电路-SAT解算机不给不必要的输入赋值。可替代地,可以使用后处理机制,其通过如下来消除不必要的输入赋值:例如通过在给定输入处的值翻转的情况下检查该不匹配轨迹是否仍然表明不匹配,并且如果是,则消除那个输入赋值。任何不匹配轨迹不可避免地将包括至少与余因子时间一样深的时间帧。一旦我们具有最少赋值的不匹配轨迹的集合,我们就可以前进以将输入“J”的集合、其作为用于操纵来使能等价检查以检测轨迹包含的候选标识为给相同代理人的发明名称为“Method and System for Trace-Containment Detection in CombinationalNetlists via Constraint-Based Uncorrelated Equivalence Checking”的共同未决的美国专利申请的时序扩展。我们也可以前进以标识那些输入和余因子时间之间的时间关系。
返回到图3,该图描绘了根据本发明的各种实施例的用于确定在使能有效的基于轨迹包含的减小中使用的在输入之间的时间关系的方法的流程图300。方法在301处开始,并且前进到303来选择要被分析的不匹配轨迹t。然后,该方法前进到305来得到最少赋值的不匹配轨迹t1、t2...tj的二级(secondary)集合,其试图在原始轨迹中被证明之后的时间帧处不匹配同一集合的门。可以存在用户可指定的若干参数用于选择不匹配轨迹。例如,用户可指定的一个参数可以是搜索多少截然不同(distinct)的二级轨迹,以及另一个可以是在原始不匹配轨迹之后的多少时间帧内我们搜索新的不匹配。在至少一个实施例中,我们可以强行使每个二级轨迹的余因子时间为余因子时间“t”加上要被添加到不匹配深度的额外时间帧的数量。我们可以使用任意机制、例如,按照上面结合图1讨论的第一方面来在展开的实例上使用SAT解算机来搜索这种轨迹。
一旦在305中得到最少赋值的不匹配轨迹t1、t2...tj的二级集合,该方法就前进到307来确定在每个轨迹中除了i之外的输入是否以与“j”一样多的次数被赋值。即,块307确定在每个得到的轨迹中与对i赋值一样多的次数而被赋值的、或者可选地被赋以任何值的、除了i之外的输入。如果块307没有得到任何这种输入,则该方法沿着“否(NO)”路径从307前进到325并结束。如果在307中确定存在任何这种输入,则该方法沿着“是(YES)”路径从307前进到309,来将所发现的输入枚举为集合“J”。一旦在309中定义了集合“J”,则该方法前进到311来从集合“J”选择输入“j”。
在313中,确定是否在所有轨迹上在相同时间对“j”赋值。如果结果是在所有轨迹上在相同时间对“j”赋值的情况,则该方法沿着“是(YES)”路径从313前进到315以假定这个“j”输入具有固定时延,然后从315到323以确定是否要选择另一“j”。在块313中评估“j”时,可选地,一些实现方式可以仅仅关注时间帧的具体集合或者甚至单个具体的特定时间帧。已经发现仅仅在时间0处检查被赋值的输入占用了固定时延输入的使用的大部分。返回到块313中,如果发现“j”在这些轨迹上具有不同的时间值,则该方法沿着“否(NO)”路径从313前进到317。
在317中,该输入“j”被评估以确定在每个轨迹中是否用相对于每个相应轨迹的余因子时间的、相同的相对固定的延时来给“j”赋值。如果发现“j”具有不同的固定时延,则该方法前进到321以从集合“J”中去除“j”输入。一旦去除了“j”,该方法就前进到323以确定是否选择另一“j”用于该处理。返回317中,如果发现在每个轨迹中用相对于每个相应轨迹的余因子时间的、相同的相对固定的延时来给“j”赋值,则该方法沿着“是(YES)”分支从317前进到319。在319中,每个轨迹中保持的最小相对固定的延时被选为对于“j”输入的相对固定的延时。当保存了“j”的完整的且所有的输入值时,该处理将生成要被操作的输入“J”的候选集合,以及对于在“J”和余因子时间之间使用的时间关系的猜测。然后,该方法前进到323,在323处确定是否选择另一“j”用于该处理。如果要考虑来自集合“J”的另一输入“j”,则该方法沿着“是(YES)”路径从323返回到块311。否则,该方法沿着“否(NO)”路径从323前进到325,在325处方法结束。
本发明的各种实施例的第四方面属于用于实现在被搜索来消除的输入和其他输入之间的确定的时间关系的机制。这使能有效的轨迹等价检测。按照发明名称为“Method,System and Application for Sequential Cofactor-BasedAnalysis of Netlists”的共同未决的美国专利申请的公开,可以通过将多路复用器注入到将被余因子的输入i上,在优选实施例中实现时序余因子。多路复用器将在等价的或在一个任意时间帧内被轨迹包含检查的两个网表上的公共输入之间选择两个网表上的不同常数。创建信号“ctime”,其在选择不同的常数期间第一次被取值。这个时间在这里被称为“余因子时间”。对被赋予了i1的正时序余因子的网表N,在图4A中描绘了这个逻辑的实施例。
类似于时序余因子网表,用于临时去相关输入的装置由多路复用器组成,该多路复用器在除了一个时间帧以外的所有时间帧内在被轨迹包含检查的两个网表上选择公共输入,尽管取代在那个特定时间帧内选择不同的常数,它选择了不同的唯一输入。从而,对于一个特定的时间步,将在两个网表的每个上驱动不同的输入。对于其他时间步,将驱动公共输入。下面将讨论用于选择多路复用器、即用于确定当将通过所述多路复用器驱动不同的输入值时的时间帧的逻辑。对于赋予了i1的正时序余因子的网表N,在图4B中描绘了该逻辑。
取决于在非相关的输入和被余因子的输入之间的时间关系的类型,选择器时间逻辑有所区别。我们考虑两种情况:固定时延的情况以及相对固定的延时的情况。可以通过在要被去相关的所有输入上,即在“J”内的所有输入上,标识最大的固定时间k,来实现固定时延,其中本发明的方面3所确定的“J”是“固定时延”的类型。构建初始化为0并在值“k+1”处饱和的无条件向上计数器。使用计数值和相应的非相关输入的固定时延之间的比较作为“选择器时间逻辑”。注意,可以在所有的固定时延输入上重新使用该计数器本身。
相对固定的延时代表应该允许非相关输入在余因子时间之后特定数量的时间步的一个时间帧处不匹配的情况。可以通过标识在要被去相关的所有输入上(即,在‘S内的所有输入上,其中结合图3公开的本发明的第三方面中所确定的‘S是“相对时延”的类型)的最大的相对固定的延时“k”,并且将k_stage流水线(pipeline)添加到来自时序余因子电路的多路复用器选择器上,来实现这种逻辑。通过将初始化为0的k个寄存器添加到该网表来创建这个流水线。第一个寄存器将多路复用器选择器作为它的下一状态功能(function)。第二个寄存器将第一个寄存器作为它的下一状态功能,以及第三个寄存器将第二个寄存器作为它的下一状态功能,等等。给定了具有相对固定的延时的非相关输入“J”,我们可以使用第“j”个流水线寄存器作为针对那个输入的“选择器时间逻辑”,其中“j=0”需要使用来自时序余因子电路的多路复用器选择器本身。
另外,我们注意到,在组合的轨迹等价检测期间,在非相关输入之间形成关系,其在实现该关系的约束下使能等价检查以检测轨迹包含。在我们的时序网表减小架构中,我们在时间上非相关逻辑中的网表上有所区别的输入之间形成这个关系。因为这些输入仅仅在一个时间帧处影响该设计的行为,所以我们可以直接将约束关系从展开的组合网表提升到时序网表。
如针对上面的方法和处理所描述的,可以包括或排除各种活动,或者可以以不同的顺序来执行各种活动,而剩余的活动仍然留在至少一个示例实施例的范围中。例如,在一些实施例中,可以在块107之前执行图1的块111。本领域技术人员将知道以不同于图中示出的顺序的顺序来执行的步骤的许多其他实例。
图5描绘了适于实现和实践各种示例实施例的示例计算机系统500。可以以如下形式配置计算机系统500:台式计算机、膝上计算机、主机计算机或者其他能够编程或配置来执行指令的布置。计算机系统500可以位于一个地方或者在一个地方互连,或者可以分布在各种地方并经由局域网或广域网(LAN或WAN)、经由因特网、经由公共交换电话网(PSTN)或其他这种通信链接来互连。其他设备也可以适于实现或实践这些实施例或部分实施例。这种设备包括个人数字助理(PDA)、无线手持设备(例如蜂窝式电话或寻呼机)以及优选地能够被编程来执行指令或例程的其他这种消费电子设备。
典型地,计算机系统500包括可以被体现为微处理器或中央处理单元(CPU)的处理器501。典型地,处理器501被配置为经由诸如系统总线521之类的总线来访问内部存储器503。内部存储器503可以包括随机读取存储器(RAM)、只读存储器(ROM)、高速缓存存储器中的一个或多个、或者这些的组合、或者被配置为以可检索格式存储信息的其他类似的电路类型。在一些实现方式中,内部存储器503可以被配置为处理器501的部分,或者可替代地,可以被配置为与其分离但处于相同的包装中。处理器511可能能够经由与访问计算机系统500的其他部件的不同的总线或控制线(例如本地总线505)来访问内部存储器503。
典型地,计算机系统500还包括或访问到一个或多个存储盘507(或其他类型的存储存储器)以及软盘509。存储盘507和用于软盘509的软碟是适于存储各种实施例的最后或中间结果的机器可读介质的例子。存储盘507通常是被配置来存储和检索数据、计算机程序或其他信息的硬盘。存储盘507不一定需要被包含在计算机系统500内。例如,在一些实施例中,存储盘507可以是网络或因特网中的可以由计算机系统500访问以存储和检索数据、计算机程序或其他信息的服务器存储空间。例如,计算机系统500可以使用在可由因特网550或其他通信线路来访问的服务器存储场地处的存储空间。软盘509可以包括可以读和/或写可移动存储介质的各种格式的多种盘(例如,CD-R、CD-RW、DVD、DVD-R、软碟等)的组合。计算机系统500可以包括存储盘507和软盘509作为其体系架构的一部分(例如,在相同的机壳或外壳内和/或使用相同的电源),作为连接的外设,或者可以通过网络访问存储盘507和软盘509,或者这些的组合。存储盘507通常用于存储由计算机系统500执行的软件、指令和程序,包括例如,用于工程管理任务优先的所有或部分的计算机应用程序。
计算机系统500可以包括通信接口511,其被配置来通信地连接到因特网、局域网(LAN)、广域网(WAN),或者使用诸如通用串行总线(USB)、高性能串行总线IEEE-1394和/或高速串行端口(RS-232)之类的协议与其他设备相连。计算机系统500可以经由无线路由器501(或有线路由器或其他节点——未示出)与因特网相连,而不直接与因特网相连。计算机系统500的部件可以通过总线521互连,和/或可以包括符合诸如PCI(外围部件互连)、ISA(工业标准结构)或EISA(增强ISA)之类的各种工业标准的任何的扩展槽(slot)。
典型地,计算机系统500包括诸如键盘和/或鼠标513之类的一个或多个用户输入/输出设备,或者控制由用户输入设备515代表的光标的其他装置(例如,触摸屏、触摸板、操纵杆、轨迹球等)。通信接口511、键盘和鼠标513以及用户输入设备515可以被用在各种组合中,或者分开地作为用于接收在执行各种程序和计算时使用的信息和其他输入的装置。通常,显示器517也被包括作为计算机系统500的一部分。该显示器可以是多种类型的显示器中的任何,包括液晶显示器(LCD)、阴极射线管(CRT)监视器、薄膜晶体管(TFT)阵列或者适于为用户显示信息的其它类型的显示器。显示器517可以包括一个或多个发光二极管(LED)指示灯或者其它这种显示设备。另外,大部分计算机系统500也包括或连接到用于音频输出和输入的一个或多个扬声器和麦克风519。可以结合麦克风519使用语音识别软件以接收和翻译用户语音命令。
可以用能够执行所述功能和活动的任何种类的处理单元、处理器和控制器来实现本发明。例如,处理器501(或用于实现实施例的其他处理器)可以是微处理器、微控制器、DSP、RISC处理器或者本领域技术人员将意识到能够执行在此公开的功能或活动的任何其他类型的处理器。根据至少一个示例实施例的处理单元可以操作在诸如内部存储器503、存储盘507或其他类型的机器可读介质之类的计算机可读介质上存储(包含)的计算机软件程序,该其他类型的机器可读介质包括例如软盘、光盘、硬盘、CD、闪存、RAM或者本领域技术人将能想到的其他类型的机器可读介质。计算机系统500被配置为接收用于集成电路(IC)或其他电路的设计或其他网表信息,或者要被分析并将信息存储在例如内部存储器503、存储盘507或其他类型的机器可读介质的计算机可读介质中。计算机系统500被配置为通过装载和执行在网表信息上操作的指令来修改该设计。在完成对该设计的修改时,计算机系统500被配置为提供修改的设计信息,例如通过将它以适于制造IC设计的格式存储在计算机可读介质上。
可以用能够执行所述功能和活动的任何种类的处理单元、处理器和控制器(例如图5的处理器501)来实现本发明。例如,处理器501可以被体现为微处理器、微控制器、DSP、RISC处理器或者本领域技术人员将意识到能够执行在此公开的功能的任何其他类型的处理器。根据至少一个示例实施例的处理单元可以操作在诸如存储器503、存储盘507、盘驱动509或其他类似类型的存储设备之类的计算机可读介质上存储(体现)的计算机软件程序,该其他类似类型的存储设备例如CD、闪存、RAM或者本领域技术人将能想到的其他计算机可读介质。计算机软件程序可以帮助或执行上述的步骤和活动。例如,根据至少一个示例实施例的计算机程序可以包括:用于标识网表的切割的源代码、用于枚举不匹配轨迹的集合的源代码、用于从不匹配轨迹得到输入“J”的集合用于等价检查以检测轨迹包含的源代码、用于执行反映用于i的时序余因子和用于输入“J”的集合的时间上非相关性的约束的、该切割的余因子版本的时间受限的展开的源代码、用于确定是否存在轨迹包含的源代码、用于响应于检测到轨迹包含来识别对输入“J”的集合的约束关系的源代码以及用于试图证明该切割的时序等价的源代码。存在许多进一步的源代码,其可以被写来执行上述的步骤和进程,并且意图将这些包含在示例实施例的范围中。
按照被实现为寄存器或门,上面讨论了状态保持元件或状态元件。然而,在一些实施例中,任何种类的状态保持元件可以被用于实现各种实施例,包括例如寄存器、锁存器、状态机等。为了说明和解释本发明,贯穿于该公开,可互换使用术语变量、门和寄存器。
该公开中的术语“示例”的使用意图表示这样描述为例子、实例或图示的实施例或元件,并且不一定被解释为比其他实施例或元件更优选或更好。上述的各种示例实施例的描述在本质上是说明性的,并且不试图受限本发明、它的应用或使用。从而,不脱离本发明的要旨的变型意图处于本发明的实施例的范围中。这种变型不被认为背离本发明的精神和范围。
Claims (11)
1.一种通过执行被装载到计算机系统中的指令来标识时序电路设计网表的轨迹包含的方法,所述方法包括:
通过执行所述指令,标识包括输入i的网表的切割;
通过执行所述指令,枚举不匹配轨迹的集合;
通过执行所述指令,从所述不匹配轨迹得到输入“J”的集合用于等价检查以检测轨迹包含;
通过执行所述指令,对反映用于输入i的时序余因子和用于输入“J”的集合的时间上非相关性的约束的、该切割的余因子版本执行时间受限的展开;
通过执行所述指令,确定是否存在轨迹包含;
响应于检测到轨迹包含,识别对所述输入“J”的集合的约束关系;以及
通过执行所述指令,试图证明经受所述约束关系的所述切割的时序等价。
2.根据权利要求1所述的方法,还包括:
响应于证明所述切割的时序等价,通过执行所述指令,通过将所述输入i合并到常数来减小所述时序电路设计网表。
3.根据权利要求1所述的方法,还包括:
作为所述切割的标识的一部分,通过执行所述指令,确定所述切割是否等价于所述网表;以及
响应于确定所述切割不等价于所述网表,通过执行所述指令,决定是否增长该切割。
4.根据权利要求1所述的方法,其中针对所述网表的所标识的切割,枚举不匹配轨迹的集合。
5.根据权利要求1所述的方法,还包括:
通过执行所述指令,得到所述输入“J”的集合和用于所述输入i的余因子时间之间的时间关系;以及
通过执行所述指令,将时间上非相关性的约束添加到所述输入“J”以反映所述时间关系。
6.根据权利要求5所述的方法,其中所述得到所述输入“J”的集合和所述余因子时间之间的时间关系还包括:
通过执行所述指令,得到最少赋值的不匹配轨迹的二级集合,其在稍后的时间尝试不匹配与所述不匹配轨迹的集合相同的门;以及
通过执行所述指令,从最少赋值的不匹配轨迹的集合中去除输入“j”。
7.根据权利要求6所述的方法,还包括:
通过执行所述指令,确定在最少赋值的不匹配轨迹“J”集合中的所有轨迹上是否相同时间对输入“j”赋值,或者在所有所述轨迹中是否相同的相对时间对输入“j”赋值;
响应于检测到输入“j”在所有所述轨迹中具有相同时间,通过执行所述指令,通过假定“j”具有固定时延来得到所述时间关系;
响应于检测到输入“j”在所有所述轨迹中相同的相对时间被赋值,通过执行所述指令,通过假定“j”具有相对固定的延时来得到所述时间关系;以及
响应于检测到输入“j”在所述轨迹的至少一个中具有不同的时间以及响应于检测到输入“j”在所述轨迹的至少一个中具有不同的相对时间,通过执行所述指令,从最少赋值的不匹配轨迹“J”的集合中去除输入“j”。
8.一种包括机器可读介质的软件产品,该机器可读介质包括指令的程序,所述指令用于通过执行指令来标识时序电路设计网表的轨迹包含,其中当在计算机上执行时所述指令的程序使得计算机实现权利要求1-7的任一方法。
9.一种通过执行被装载到计算机系统中的指令来标识时序电路设计网表的轨迹包含的系统,所述系统包括用于实现权利要求1-7的任一方法的装置。
10.一种被配置来标识时序电路设计网表的轨迹包含的计算机系统,所述系统包括:
输入装置,用于接收所述电路设计网表,其中包括输入i的所述网表的切割被标识;
存储器,被配置为存储不匹配轨迹的枚举的集合;
用于从不匹配轨迹得到输入“J”的集合用于等价检查以检测轨迹包含的装置;
适当地被布置以执行指令的处理器,所述指令用于对反映用于输入i的时序余因子和用于输入“J”的集合的时间上非相关性的约束的、所述切割的余因子版本执行时间受限的展开;
用于确定是否存在轨迹包含、以及响应于检测到轨迹包含来识别对输入“J”的集合的约束关系的装置;以及
其中所述处理器合适地被布置以执行用于试图证明经受所述约束关系的所述切割的时序等价的指令。
11.根据权利要求10所述的计算机系统,还包括:
其中,响应于证明所述切割的时序等价,所述处理器合适地被布置以执行用于通过将所述输入i合并到常数来减小所述时序电路设计网表的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/392,278 US8015523B2 (en) | 2009-02-25 | 2009-02-25 | Method and system for sequential netlist reduction through trace-containment |
US12/392,278 | 2009-02-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101814101A true CN101814101A (zh) | 2010-08-25 |
CN101814101B CN101814101B (zh) | 2013-04-24 |
Family
ID=42621353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101261547A Active CN101814101B (zh) | 2009-02-25 | 2010-02-25 | 通过轨迹包含来减小时序网表的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8015523B2 (zh) |
CN (1) | CN101814101B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8688608B2 (en) * | 2011-06-28 | 2014-04-01 | International Business Machines Corporation | Verifying correctness of regular expression transformations that use a post-processor |
US10078716B2 (en) | 2016-05-03 | 2018-09-18 | International Business Machines Corporation | Scalable logic verification by identifying unate primary inputs |
US9922153B2 (en) | 2016-05-03 | 2018-03-20 | International Business Machines Corporation | Scalable logic verification by identifying unate primary inputs |
US10235484B2 (en) * | 2017-02-06 | 2019-03-19 | Oracle International Corporation | Automatic timing-sensitive circuit extraction |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1540554A (zh) * | 2003-10-31 | 2004-10-27 | 清华大学 | 标准单元总体布线时障碍下时延驱动直角斯坦纳树方法 |
US20060190873A1 (en) * | 2005-02-10 | 2006-08-24 | Baumgartner Jason R | Exploiting suspected redundancy for enhanced design verification |
US20060248494A1 (en) * | 2005-04-14 | 2006-11-02 | International Business Machines Corporation | Method and system for parametric reduction of sequential designs |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6567959B2 (en) | 2001-03-30 | 2003-05-20 | Intel Corporation | Method and device for verification of VLSI designs |
-
2009
- 2009-02-25 US US12/392,278 patent/US8015523B2/en active Active
-
2010
- 2010-02-25 CN CN2010101261547A patent/CN101814101B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1540554A (zh) * | 2003-10-31 | 2004-10-27 | 清华大学 | 标准单元总体布线时障碍下时延驱动直角斯坦纳树方法 |
US20060190873A1 (en) * | 2005-02-10 | 2006-08-24 | Baumgartner Jason R | Exploiting suspected redundancy for enhanced design verification |
US20060248494A1 (en) * | 2005-04-14 | 2006-11-02 | International Business Machines Corporation | Method and system for parametric reduction of sequential designs |
Also Published As
Publication number | Publication date |
---|---|
US20100218148A1 (en) | 2010-08-26 |
US8015523B2 (en) | 2011-09-06 |
CN101814101B (zh) | 2013-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7299432B2 (en) | Method for preserving constraints during sequential reparameterization | |
US7367002B2 (en) | Method and system for parametric reduction of sequential designs | |
US8418093B2 (en) | Method and system for design simplification through implication-based analysis | |
US7370298B2 (en) | Method for heuristic preservation of critical inputs during sequential reparameterization | |
JP2001142937A (ja) | 回路のスケジューリング正当性チェック方法及びスケジュール検証方法 | |
US20090055668A1 (en) | Method and Apparatus for Detecting Clock Gating Opportunities in a Pipelined Electronic Circuit Design | |
US7747992B2 (en) | Methods and apparatus for creating software basic block layouts | |
US20200192994A1 (en) | Performance modeling and analysis of microprocessors using dependency graphs | |
Bañeres et al. | Variable-latency design by function speculation | |
Dinu et al. | Opportunities of using artificial intelligence in hardware verification | |
CN101814101B (zh) | 通过轨迹包含来减小时序网表的方法和系统 | |
US8122403B2 (en) | Trace containment detection of combinational designs via constraint-based uncorrelated equivalence checking | |
US20140359545A1 (en) | Equivalence checking using structural analysis on data flow graphs | |
Wang et al. | Improving the efficiency of functional verification based on test prioritization | |
US10852354B1 (en) | System and method for accelerating real X detection in gate-level logic simulation | |
Bai et al. | BOOM-Explorer: RISC-V BOOM microarchitecture design space exploration | |
CN101930485B (zh) | 基于时序余因子的网表分析的方法和系统 | |
Chang et al. | Natural language is not enough: Benchmarking multi-modal generative AI for Verilog generation | |
Bryant et al. | Microprocessor verification using efficient decision procedures for a logic of equality with uninterpreted functions | |
Utamaphethai et al. | Effectiveness of microarchitecture test program generation | |
Merniz et al. | Modelling and verification of parameterized architectures: A functional approach | |
Charvát et al. | Microprocessor Hazard Analysis via Formal Verification of Parameterized Systems | |
Qin et al. | HMCPA: heuristic method utilizing critical path analysis for design space exploration of superscalar microprocessors | |
Saeedi et al. | A Survey on Design Space Exploration Approaches for Approximate Computing Systems | |
Elhossini et al. | Architecture Exploration Based on GA‐PSO Optimization, ANN Modeling, and Static Scheduling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |