通过轨迹包含来减小时序网表的方法和系统的制作方法

文档序号:6599307阅读:190来源:国知局
专利名称:通过轨迹包含来减小时序网表的方法和系统的制作方法
技术领域
本发明涉及状态机的数字电路设计,并且更具体地,涉及用于有效改善数字电路设计的系统、方法和计算机产品。
背景技术
可以使用状态等式和状态变量以描述系统的行为和状态来建模具有存储器元件 的电子电路。与定义状态之间的转换的逻辑耦合的系统的状态变量的完整集合典型地包括 关于系统的历史的足够信息,以使得能够计算系统的未来行为。简化模型以精简状态变量 的数量,或者简化定义状态转换的逻辑,这减轻了例如分析模型以验证它符合给定规范的 计算代价。状态变量模型的综合(synthesis)和验证通常需要大量的计算资源。因此,对于 逻辑设计中的各种任务,减小设计尺寸的能力处于中心重要的地位,这是由于相对于设计 尺寸,验证算法通常需要指数级的资源。减小设计尺寸的能力可能在使用验证算法来暴露 设计缺陷是否可行的方面有所区别。所需要的是在保留相对于验证结果的该设计的行为的同时减小设计尺寸的自动方法。

发明内容
在此公开的实施例通过提供通过保留相对于验证结果的该设计的行为的轨迹包 含(trace-containment)检测的方法来减小设计尺寸的系统、方法和计算机产品,来解决 上述的需要。提供各种实施例,用于通过电路设计网表的轨迹包含来减小时序网表,这通过标 识该网表的切割、枚举不匹配(mismatch)轨迹的集合、然后从这些不匹配轨迹得到输入 “J”的集合用于等价检查以检测轨迹包含。各种实施例执行该切割的余因子版本的时间受 限的展开,其中该切割的余因子版本反映用于i的时序余因子和用于输入“J”的集合的时 间上非相关性的约束,然后确定是否存在轨迹包含。响应于检测到轨迹包含,可以识别对输 入“J”的集合的约束关系。当识别对输入“J”的约束关系时,这些实施例可以试图证明该 贞害1J白勺介(sequential equivalence)。


被合并在说明书中并组成说明书的一部分的附示了本发明的各种实施例。与 通常描述一起,附图起到解释本发明的原理的作用。在附图中图IA描绘了通过基于轨迹包含的减小来减小网表(netlist)尺寸的整体架构的 方法的流程图100 ;图IB描绘了高层(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)。 “切割”表示将网表图形分割为两个部分的分割。图IA描绘了用于通过基于轨迹包含的减小来减小网表尺寸的整体架构的方法的 流程图100。本发明的该第一个方面涉及反复假定期望的减小,假定该设计的输入之间的时 间关系以使能有效的轨迹包含检测,然后尝试证明相应的轨迹包含以使能该减小。通过下 面的伪代码来描绘该处理的上层循环。方法在101处开始,并前进到103以取第一输入i。 在块105中,对于每个输入i,将时序余因子逻辑添加到输入i。方法前进到107来确定i 被余因子为0的网表轨迹是否包含i被余因子为1的网表。如上所述,术语余因子表示用常数——用于正余因子的常数1或者用于负余因子的常数O—来替代设计中的输入。如 果在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申请)的共同未决美国专利申请 中公开的每种方法和系统。该共同未决的专利申请中的各种实施例允许系统使能在一个特 别的时间帧内评估输入对设计的影响。该共同未决的专利申请的方法通过评估任意时间点 处在相应的输入上驱动Ovs. 1的影响,使得能够研究(exploration)对输入i的配值的任 意序列。驱动Ovs. 1的时间点可以被称为“余因子时间”。然后,我们可以研究负余因子轨 迹是否包含正余因子。如果包含,则我们可以将i合并到0。如果不包含,则我们检查正余 因子轨迹是否包含负余因子。如果这被发现是真的,则我们可以将0合并到1。如果没有一 个条件被满足,则我们可能不将输入合并到任一常数0或1,并且相反,继续尝试消除下一 输入。图IB描绘了用于高层轨迹包含检查的方法的流程图150。图IB的方法在151处 开始以评估轨迹包含,并且前进到153以针对网表的所标识的切割来枚举不匹配轨迹的集 合。例如,这可以用本发明的第二方面以下面结合图2A描述的方式来完成。图2A的方法 计算网表的切割,针对其来获得可以用于使能有效的轨迹包含检测的不匹配轨迹。返回到 图IB的块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,其描述了搜索切割而针对的电路中的寄存器。假设,我们尝试的减小是合并具有O的网表的输入10,如图的顶部处所描绘的。为了证实该合并 保留了验证结果,我们可能希望将它的行为与当将IO驱动为1时的网表的行为相比较,如 图的底部处所描绘的。假设该网表具有不同于IO的输入的向量,这些不同于IO的输入与 IO—起通过寄存器组R0、R1、R2被采样到在图中标记为“一比特热位(one-hot)”的一比特 热位检测器。阴影描绘了可能在两个网表中评价不同的网表子集,并且该网表子集包括采 样IO的R0、R1、R2的位、一比特热位检测器以及一比特热位检测器的扇出中的门的集合。本公开的这个方面通过标识在正被合并以使能该减小的门的扇出中的网表的切割来操作。这可以通过枚举可能在正被分析用于轨迹包含的两个网表之间不匹配的门的子 集来完成。这通过分析轨迹的集合并且枚举在任何轨迹中在两个网表之间行为不同的门来 完成。这个集合将形成网表的切割,因为不可能的是,该网表的内部门在行为上不同而其 扇入(fanin)中的任何门在行为上相同。在至少一个实施例中,使用仿真和受限彻底搜索 (boundedexhaustive search)的混合来获得轨迹,例如在初始化之后的一定数量的时间帧 中,在网表的展开拷贝上使用SAT解算机(solver)来研究可由该设计产生的所有行为。后 者可以用于直接尝试标识在两个网表中的某些门之间的不匹配,并且特别地,针对还没有 被证明(witnessed as)为在两个网表之间不匹配的门,以及具有在它们中间的扇入中被证 明为不匹配的门的门。可以用图2C的伪代码来总结该全部处理。参考图2C,进程SearCh_F0r_MiSmatCh ()使用验证算法、例如如上所述的仿真和 基于SAT的受限搜索的任意集合,以试图找到在mismatctufrontier的门上的不匹配。如 果找到轨迹,则可以使用进程ExtencLTrace ()来将行为和时间帧添加到该轨迹来更好地 使该轨迹能甚至在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) 0在一些实施例中,可能使用资源限制、例如对不匹配轨迹的 最大长度的限制、或者对SearCh_F0r_Mismatch的时间或存储器限制或者对mismatch_ frontier的大小的限制,来终止具有更小的切割的该进程。通常,切割越大,在标识轨迹包含时可能牵涉的资源更多。然而,如上所述,切割太 小可能不呈现轨迹包含,尽管有可能更深的切割将呈现。例如,如果我们在RO或Rl或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”之后一个时间步时 驱动“n0_0p= 1”以及在任何时间驱动“opcode = {no-op}”。在该例子中,为了使能轨迹 包含检测,我们需要能够去相关“opcode”并且约束它以在“valid = 1”之后一个时间步时 给{no-op}评估(evaluate),来产生与“valid = 0”时相同的行为。相对固定的延时和固定时间是由在此公开的各种实施例支持的两种时间关系。可 以从上面前一段中讨论的opcode例子来理解相对固定的延时。在那个例子中,不相关的输 入(“opcode”)要求相对于正被合并的输入(“valid”)的、为1的相对固定的延时。这个 延时可以在正或负方向上,或者甚至同时。我们的发明仅仅处理同时或正延时。可以从下面 的例子来理解时间关系的另一类型,固定时间。假设,存在数据路由网表,并且我们希望验证它正确地路由数据。网表可以具有“datajn”输入向量和“data_0Ut”输出向量。我们希 望检查的属性是特定值将在“data_0Ut”处出现,在且仅在相同的值早前在“datajn”处 出现过的情况下。实现该检查的一种方式是创建用随机地初始化并之后保持它们的值的寄 存器集合来实现的随机常数。然后,当“datajn”匹配该随机常数时,我们可以设置(set) 被任意称为“seen”的寄存器,并且利用如果“data_0Ut”等于该随机常数则取值“seen = O”的目标。如果我们希望将“datajn”的一个比特固定到假设为O的常数,则注意针对该随 机常数的等价检查的结果将不等价于“data η”的那个比特是1的情况。具体地,考虑随机 常数具有值“111111”并且两个轨迹包含检查的网表的“datajn”是“llllll”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,,白勺白勺禾0Ef3i青白勺 时序扩展。我们也可以前进以标识那些输入和余因子时间之间的时间关系。返回到图3,该图描绘了根据本发明的各种实施例的用于确定在使能有效的基于 轨迹包含的减小中使用的在输入之间的时间关系的方法的流程图300。方法在301处开始, 并且前进到303来选择要被分析的不匹配轨迹t。然后,该方法前进到305来得到最少赋 值的不匹配轨迹tl、t2. . . tj的二级(secondary)集合,其试图在原始轨迹中被证明之后 的时间帧处不匹配同一集合的门。可以存在用户可指定的若干参数用于选择不匹配轨迹。 例如,用户可指定的一个参数可以是搜索多少截然不同(distinct)的二级轨迹,以及另一 个可以是在原始不匹配轨迹之后的多少时间帧内我们搜索新的不匹配。在至少一个实施例 中,我们可以强行使每个二级轨迹的余因子时间为余因子时间“t”加上要被添加到不匹配 深度的额外时间帧的数量。我们可以使用任意机制、例如,按照上面结合图1讨论的第一方 面来在展开的实例上使用SAT解算机来搜索这种轨迹。一旦在305中得到最少赋值的不匹配轨迹tl、t2. . . tj的二级集合,该方法就前进 到307来确定在每个轨迹中除了 i之外的输入是否以与“j”一样多的次数被赋值。S卩,块 307确定在每个得到的轨迹中与对i赋值一样多的次数而被赋值的、或者可选地被赋以任 何值的、除了 i之外的输入。如果块307没有得到任何这种输入,则该方法沿着“否(N0)”路径从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”,其在选 择不同的常数期间第一次被取值。这个时间在这里被称为“余因子时间”。对被赋予了 il 的正时序余因子的网表N,在图4Α中描绘了这个逻辑的实施例。类似于时序余因子网表,用于临时去相关输入的装置由多路复用器组成,该多路 复用器在除了一个时间帧以外的所有时间帧内在被轨迹包含检查的两个网表上选择公共 输入,尽管取代在那个特定时间帧内选择不同的常数,它选择了不同的唯一输入。从而,对 于一个特定的时间步,将在两个网表的每个上驱动不同的输入。对于其他时间步,将驱动公 共输入。下面将讨论用于选择多路复用器、即用于确定当将通过所述多路复用器驱动不同 的输入值时的时间帧的逻辑。对于赋予了 il的正时序余因子的网表N,在图4B中描绘了该 逻辑。取决于在非相关的输入和被余因子的输入之间的时间关系的类型,选择器时间逻 辑有所区别。我们考虑两种情况固定时延的情况以及相对固定的延时的情况。可以通过 在要被去相关的所有输入上,即在“J”内的所有输入上,标识最大的固定时间k,来实现固定时延,其中本发明的方面3所确定的“J”是“固定时延”的类型。构建初始化为O并在值“k+Ι”处饱和的无条件向上计数器。使用计数值和相应的非相关输入的固定时延之间的比 较作为“选择器时间逻辑”。注意,可以在所有的固定时延输入上重新使用该计数器本身。相对固定的延时代表应该允许非相关输入在余因子时间之后特定数量的时间步 的一个时间帧处不匹配的情况。可以通过标识在要被去相关的所有输入上(即,在‘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可以包括 可以读和/或写可移动存储介质的各种格式的多种盘(例如,⑶-R、⑶-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”的集合的约束关系的源代码以及用 于试图证明该切割的时序等价的源代码。存在许多进一步的源代码,其可以被写来执行上 述的步骤和进程,并且意图将这些包含在示例实施例的范围中。按照被实现为寄存器或门,上面讨论了状态保持元件或状态元件。然而,在一些实 施例中,任何种类的状态保持元件可以被用于实现各种实施例,包括例如寄存器、锁存器、 状态机等。为了说明和解释本发明,贯穿于该公开,可互换使用术语变量、门和寄存器。
该公开中的术语“示例”的使用意图表示这样描述为例子、实例或图示的实施例或 元件,并且不一定被解释为比其他实施例或元件更优选或更好。上述的各种示例实施例的 描述在本质上是说明性的,并且不试图受限本发明、它的应用或使用。从而,不脱离本发明 的要旨的变型意图处于本发明的实施例的范围中。这种变型不被认为背离本发明的精神和 范围。
权利要求
一种通过执行被装载到计算机系统中的指令来标识时序电路设计网表的轨迹包含的方法,所述方法包括通过执行所述指令,标识包括输入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合并到常数来减小所述时序电路设计网表的指令。
全文摘要
提供了通过针对电路设计网表的轨迹包含来减小时序网表的方法和系统,这通过首先标识该网表的切割并枚举不匹配轨迹的集合。对反映用于特定输入i的时序余因子和用于输入“J”的集合的时间上非相关性的约束的、该切割的余因子版本执行时间受限的展开。在对输入“J”的集合的时间上非相关性的约束下,通过相对于该网表的该切割来执行等价检查来确定是否存在轨迹包含。响应于检测到轨迹包含,通过将输入“i”合并到常数来简化该网表。
文档编号G06F17/50GK101814101SQ20101012615
公开日2010年8月25日 申请日期2010年2月25日 优先权日2009年2月25日
发明者哈利·莫尼, 弗里什·帕鲁蒂, 罗伯特·L·坎泽尔曼, 贾森·R·鲍姆加特纳 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1