用于集成电路图形匹配的标注可交换引脚的方法和系统
技术领域
本发明涉及集成电路网络分析,更具体地说,涉及用来模拟(model)和记录复杂节点可互换特性的方法。
背景技术
在竞争激烈的微电子领域,对半导体集成电路(IC)产品的详细分析可以提供有价值的有关如何解决特定技术问题的信息,以及设计方法中总体的优势和弱势等。这些信息可以用来制定有关市场定位、未来设计和新产品开发的决策。此外,这些信息构成仿造的证据,仿造会引发专利侵权和/或专利许可争议的。
典型地,通过电路提取或逆向工程的方法、功能分析和其它技术方法从对产品的分析获得这些信息。这些行为的核心在于设计分析过程,在这里,是指用于获得产品的全部或部分原理的技术和方法论。在IEEEPotentials,Augest/September 2003,p.22中Nian Zhang等人的题为“Thesubcircuit extraction problem”的论文提供了有关子电路提取所面临的挑战,即将晶体管网络表(net-list)转换为门的背景信息。
与对已知设计的测试和验证不同,设计分析典型地并不具备已知详细参考的好处。
迄今,设计分析典型地包括从IC或其局部的一套大的相片镶嵌(photomosaics)中人工提取电路信息。相片镶嵌是IC局部的高倍率相片,它们被镶嵌或拼合在一起。
伴随图像处理和电子显微术的当前进展,常规相片镶嵌图像在很大程度上已经被IC管芯的互连金属和半导体层的形貌图像(topographicalimages)所取代。采用专用软件可以在计算机监视器上看见这些形貌图像。
例如,在名称为“Computer aided method of circuit extraction”,2005年6月14日授权的Abt等的美国专利6,907,583中,描述了一种这样的软件。
该软件将IC版图描述为一系列的多边形,这些多边形表示各种金属层的排列,采用不同的颜色来区分各层。当进行设计分析时,可以选择一层或多层以与未选择的层分开地观察,这包括提取或识别在IC局部上表示的电路,该过程称为电路回读。
因为大部分IC是采用元件库进行设计的,其中每个库可以包括较不复杂子电路的电路组合,所以,设计分析过程中重要的部分是对标准单元即已知的电学元件重复块的提取和识别。
由Zavadsky等公开的于2004年8月31日提交的名称为“Method ofDesign Analysis of Existing Integrated Circuits”的共同待审和公共受让的美国公开专利申请no.20060045325描述了一种从版图图像识别重复电路的自动化方法。然而,这样的方法假设每个子电路均有相同的版图,但情况并不总是这样。
IC设计的发展以及对于不断缩小的IC的推进意味着电路块现在可以遍及管芯的整个表面区域,以更加有效地使用可以利用的空间。并且,许多现代IC设计是由自动布线自动完成,其中以空间有效的方式确定电学元件的位置,这不必构成逻辑的方式或甚至吸引视觉的方式。此外,与单一标准单元相对应的两个电学相同的电路被布置在管芯的不同区域且具有完全不同的物理版图是完全可能的。
然而,虽然IC上的两个电路块可能在视觉上不相似,但是它们在电学上可以是相同的,因为它们具有相对应的相似电连接。
典型地,采用代表性的格式例如网络表,电子地表示在设计分析过程中提取出的电路。网络表是电路的电学元件及其互连的列表。为每条互连或“网络”分配一个唯一的标号。网络表列出了电路中的每个元件,以及这些元件的每个终端所连接到的每个网络。因此,网络表完全地限定了电路的互连,且可以由还原其示意图。
由此,即便IC版图中的重复电路的每个例元(instance)可以在视觉
或物理上不同,然而,描述此电路的例元的网络表的局部或子网络表应该与相同重复电路的其它例元相似。
由Zavadsky等在2006年4月26日提交的名称为“Net-ListOrganization Tools”的共同待审和公共受让的美国专利公开序列no.11/411,593公开了一种用于设计分析目的的由IC的网络表组织电路的方法,其通过采用不精确的图形匹配来识别网络表中可能电学相同的元件并且通过用更高级别的表示法替换已识别出的例元来将网络表组织成分级结构。
不精确图形匹配(pattern matching)是一种模拟子图同构的机制,是一种图形匹配技术。同构被定义为具有“相同形式”或“相同形状”的事物。如果第一组的元件与第二组的元件之间具有一对一的关系,我们就说这两组元件是同构的。
图同构意味着两个完整的图例如网络表片断(fragment)是相同的。子图同构意味着较大图的子图与另一个较大图的对应子图中的每个元件之间存在一对一的关系。
在不精确图形匹配中,电路设计中第一图形例元将被识别为是对第二图形例元的匹配,即使这两个例元在物理上或视觉上不相同,这是作为由电路设计者和自动布线程序(auto-router)所作出的公共修改的结果,例如通过将输入附接到Vdd或GND或者使输入短接在一起。
然而,电学相同的电路片断之间的其它差异可能不被不精确图形匹配单独检测出来。这些差异包括可互换或可交换节点或引脚。不论特定电路片断是否连接到可交换节点中的一个或另一个,如果元件相同地运作,则认为该元件具有可交换节点。
典型地,该可交换性发生在元件的终端点或节点(或者输入或者输出),更典型地,发生在输入节点。例如,只有在每个输入存在逻辑0,n输入或非(NOR)门才会在其输出产生逻辑1。因此,无论给出的电路片断馈入或非门输入中的一个或另一个,输出将不会改变。由此,认为或非门的n输入是可互换的或可交换的,如下文中所指代的。
作为上述情况的结果,在进行不精确图形匹配时,在一个例元中馈入第一个输入和在第二个例元中馈入第二个输入的电路片断将是在电学上相同的。据推测,不精确图形匹配将挑选出这种简单级别的可交换性的等效性。
然而,有些元件具有复杂得多的可交换性。也就是说,一个元件可以包含一个或多个节点,这些节点与某些节点可以交换,但与其它节点却不可以交换。实际上,节点组或者是可交换的,或者是在不同情况下可与再其它的节点或节点组是可交换的或是不可交换的。
本领域普通技术人员将理解,随着经常在IC中发生的较简单的元件例如门被构造成较复杂的元件例如触发器、加法器和处理器,节点的可交换性的复杂级别也同样增加。
虽然电路提取过程旨在简化结构和识别相似点,但还是应该注意确保过程中不会丢失那些可能在稍后的时间有助于这些目的的信息。复杂的节点可交换性可以构成这种信息。
因此,需要一种以这样的方式识别和分辨复杂可交换性关系的机制,该方式允许对这些关系进行不精确图形匹配,而不存在丢失任何可交换性信息的风险。
发明内容
为了在设计分析中由基本元件发展更复杂的逻辑处理块,本发明的一个实施例试图提供一种简单但新颖的用于重新标注可交换引脚的体系,该体系允许保持可交换性信息而不显著增加计算的复杂性,而且,该体系有助于不精确图形匹配。
根据本发明实施例的第一宽泛方面,公开了一种对集成电路元件的节点指定标号以表明它们之间的可交换性关系的方法,所述方法包括以下步骤:(a)识别没有指定标号的第一个门例元;(b)确定与所述已识别出的门例元相关联的每个输入节点是否具有共同的可交换性特点,其中所述共同的可交换性特点选自:与所述已识别出的门例元相关联的节点与任何其
它输入节点是可交换的,以及与所述已识别出的门例元相关联的节点与任何其它输入节点是不可交换的;(c)对于与所述已识别出的门例元相关联的与其任何其它输入节点可交换的每个输入节点,产生在所述可交换输入节点之间的共同节点,并将所述共同节点连接到所述已识别出的门例元,以及为每个可交换输入节点指定第一套可交换性标号;(d)对于与所述已识别出的门例元相关联的与其任何其它输入节点不可交换的每个输入节点,为每个不可交换输入节点指定第二套可交换性标号;(e)对每个门例元重复以上所有步骤,直到所有门例元均有指定标号,由此被标注的节点包含有关输入节点的可交换性的信息,所述信息能够用于电路分析。
根据本发明实施例的第二宽泛方面,公开了一种对集成电路元件的节点指定标号以表明它们之间的可交换性关系的系统,其包括:软件模块,用来识别没有指定标号的第一个门例元;软件模块,用来确定与所述已识别出的门例元相关联的每个输入节点是否具有共同的可交换性特点,其中所述共同的可交换性特点选自:与所述已识别出的门例元相关联的节点与任何其它输入节点是可交换的,以及与所述已识别出的门例元相关联的节点与任何其它输入节点是不可交换的;软件模块,对于与所述已识别出的门例元相关联的与其任何其它输入节点可交换的每个输入节点,可执行在所述可交换输入节点之间产生共同节点并将所述共同节点连接到所述已识别出的门例元,以及为每个可交换输入节点指定第一套可交换性标号;软件模块,对于与所述已识别出的门例元相关联的与其任何其它输入节点不可交换的每个输入节点,可执行为每个不可交换输入节点指定第二套可交换性标号;软件模块,用来对每个门例元重复以上所有步骤,直到所有门例元均有指定标号,由此被标注的节点包含有关输入节点的可交换性的信息,所述信息能够用于电路分析。
根据本发明实施例的第三宽泛方面,公开了一种具有计算机可执行指令的计算机可读媒体,当由计算机执行时,其使得计算机执行对集成电路元件的节点指定标号以表明它们之间的可交换性关系的方法,所述方法包括以下步骤:(a)识别没有指定标号的第一个门例元;(b)确定与所述已
识别出的门例元相关联的每个输入节点是否具有共同的可交换性特点,其中所述共同的可交换性特点选自:与所述已识别出的门例元相关联的节点与其任何其它输入节点是可交换的,以及与所述已识别出的门例元相关联的节点与其任何其它输入节点是不可交换的;(c)对于与所述已识别出的门例元相关联的与其任何其它输入节点可交换的每个输入节点,产生在所述可交换输入节点之间的共同节点,并将所述共同节点连接到所述已识别出的门例元,以及为每个可交换输入节点指定第一套可交换性标号;(d)对于与所述已识别出的门例元相关联的与其任何其它输入节点不可交换的每个输入节点,为每个不可交换输入节点指定第二套可交换性标号;(e)对每个门例元重复以上所有步骤,直到所有门例元均有指定标号,由此被标注的节点包含有关输入节点的可交换性的信息,所述信息能够用于电路分析。
根据本发明实施例的第四宽泛方面,公开了一种对集成电路元件的节点指定标号以表明它们之间的可交换性关系的方法,该方法包括以下步骤:(a)识别没有指定标号的第一个门例元;(b)确定哪些输入节点彼此之间是可交换的;(c)为每个可交换节点组指定一个共同节点,并用共同(common)标号来标注所述组内的每个节点;以及(d)用唯一的标号来标注每个不可交换的节点。
附图说明
现在,将通过参考以下附图描述本发明的实施例,其中不同附图中的相同参考数字表示相同的元件,其中
图1A、1B是具有复杂可交换性的电路片断和元件的名义(notional)等效电路的第一套示例性示意图,其中每个元件均有一般(trivial)可交换性复杂性,以及图1C是名义等效电路的三裂(tri-partite)图,由此根据本发明的实施例标注了输入节点;
图2A、2B、2C是具有复杂可交换性的电路片断和元件的两个名义等效电路的第二套示例性示意图,其中图2C的等效电路具有一般可交换性
复杂性,以及图2D是名义等效电路的三裂图,由此根据本发明的实施例标注了输入节点;以及
图3是流程图,详述了根据本发明的实施例的用来标注具有可交换性关系的节点的方法。
具体实施方式
仅仅关于特定实施例为了示例的目的而描述本发明;然而,应理解,通过根据本发明对附图的以下描述,本发明的其它目的和优点将变得显而易见。虽然公开了一个优选实施例,但这并不旨在限制。相反地,这里提出的总原则被认为仅仅是对本发明的范围的示例,还应理解,只要不脱离本发明的范围,可以进行各种修改。
首先,为了讨论复杂的可交换性,引入符号简化是有帮助的,其中可交换的输入用圆括号“()”括起来,而不可互换的输入用方括号“[]”括起来。由此,例如,门G的可交换性关系S(G)表示为
S(G)=((A,B),(C,D)) (1)
意味着门G的节点A和B可以交换,节点C和D同样也可以交换。此外,该关系表明节点组或子表示式(A,B)可以与节点组(C,D)相交换。然而,节点C和节点D的任一者都不可以与节点A和B的任一者相交换。
另外,通过采用多个图模型可以更好地示例可交换性的一些原则。本领域普通技术人员已知的合适模型包括:超图、二裂图和三裂图。在本讨论中,采用了三裂图,其中用菱形表示门,用方形表示网络,以及用圆形表示引脚或节点。
参考元件可交换性的复杂性级别也是有帮助的。指定其中每个节点与每个其它节点均不可以交换的一般表示式为0可交换性复杂性。上述简单规则可以应用于呈现一般可交换性复杂性的门例元。
通常,如果表示式S(G)可以被表示为0可交换性复杂性的表示式,包括子表示式,其中每个子表示式均具有n可交换性复杂性,则认为它具有n+1可交换性复杂性。
现在参考本发明,其实施例递归地调用顺序分解,将具有复杂可交换性的每个电路片断分解为具有较不复杂可交换性关系的名义等效电路,直到仅剩下具有一般可交换性复杂性的例元。对于电路片断中的每个节点p,当且仅当节点p′和p″是可交换的,可交换性序数(number)l(p)被定义为满足如下关系
l(p′)=l(p″) (2)
如果所有节点都是不可交换的,那么它们都将具有不同的可交换性序数l(p)。
因为在顺序分解的过程中保持了每个电路的等效性,所以在其连接结构的意义上,如此获得的最终电路与原始电路是电学等效的,也就是说,名义等效子电路的外部连接和原始电路中元件的外部连接是相同的。由此,采用常规形式方法,例如用于设计分析目的的不精确图形匹配,可以将完全的名义等效电路用于进一步的模拟和处理。
为了进一步解释本发明,现在参考图1A中的示例电路片断和图1B中的名义等效电路,其中前者具有可交换关系:
((A,B),(C,D)) (3)
后者中每组引脚都已经分解为每个均具有一般可交换性关系的分立名义电路元件,这些元件一起提供了等效关系:
S(G1)=(A,B);
S(G2)=(C,D); (4)
S(G3)=(G1,G2,G3)
实际上,图1A中所示的具有复杂可交换性的单个门与图1B中所示每个均具有一般可交换性的等效的多个门之间没有差异。
然而,从图B的角度来看,可以简单理解为
l(QN)=0
l(A)=l(B)=l(C)=l(D)=1 (5)
l(E)=2
因此,用可交换性序数“1”标注输入节点A,B,C和D。用可交换性序
数“2”标注输入节点E。用可交换性序数“0”标注输出节点QN。
图1C是图1B中名义等效电路的三裂图表示。这里,每个输入节点A,B,C,D,E都已经分别用它们各自的可交换性序数“1”和“2”进行了标注,“1”表示输入节点A,B,C,D之间的可交换性,“2”表示输入节点E是不可与其它任何节点交换的(或“不可交换的”)。
图2A,2B,2C示出了具有复杂可交换性的电路片断和两个其它名义等效电路的第二套示例性示意图,其中图2C示出了分解为一般可交换性复杂性的等效电路。图2D示出了三裂图,其中示出了根据可交换性规则标注的节点。
这里,在图2A中示出的示例性电路的可交换性关系为:S(G)=(([A,B],[C,D]),([E,F],[G,H]))。
根据本发明方法的实施例,因为一组节点([A,B],[C,D])是与另一组([E,F],[G,H])可交换的,所以图2A中的示意图被分解为图2B中示出的具有较不复杂可交换性关系的名义等效电路,由此用可交换性序数“0”标注输入节点P0和P1。
进一步分解后,在图2C中示出了具有一般可交换性复杂性的名义等效电路。这里,由于节点P2,P3,P4,P5的可交换性关系,用可交换性序数“0”标注它们。
然而,因为节点A是不可与节点B交换的,节点C是不可与节点D交换的,节点E是不可与节点F交换的,以及节点G是不可与节点H交换的,所以每对节点必须被不同地标注,由此分别用0和1标注节点A和B,分别用0和1标注节点C和D,分别用0和1标注节点E和F,以及分别用0和1标注节点G和H。
图2D是图2C中名义等效电路的三裂图表示,示出了如何根据可交换性关系S(G)=(([A,B],[C,D]),([E,F],[G,H]))标注节点。
图3是流程图300,详述了根据本发明的实施例对复杂可交换性关系进行处理的步骤。开始时,在步骤310中,对每个门例元进行搜索,由此从上到下对每个门例元的每个元件进行分析。接着,在步骤320中,分析
每个门例元,以确定它是否呈现出一般可交换性复杂性,也就是说,其可交换性复杂性是否为0。
根据步骤330,如果门例元的可交换性复杂性为0,则进一步分析以确定门例元的节点是否是可交换的。如果门例元的节点是可交换的,则在可交换的节点之间生成共同(common)节点,然后将共同节点连接到门例元(或原门(parent gate))。接下来,根据步骤340,将输入节点指定为共同可交换性序数340。如果门例元的节点是不可交换的,则根据为一般可交换性复杂性的表示式设定的规则,将每个门例元的节点指定为不同的可交换性序数340。
此后,利用每个过程的重复,对还没有指定可交换性序数的另一门例元进行搜索。仅当没有其它门例元保持不具有被指定的可交换性序数l(p)时,过程才结束。
一旦流程图300的工序步骤完成至少第一次重复,那么具有复杂可交换性的原始门例元被仅由这样的门构成的名义等效电路结构替代,该门具有一般可交换性,该门中的每一个均被指定一个可交换性序数,在用于设计分析目的的电路分析例如不精确图形匹配中,可以采用所述电路结构替代原始门例元。
还应容易理解,该过程可以很容易地应用于其之间具有共同可交换性特点的节点组,从而为它们指定可交换性标号以识别节点组之间的共同可交换性。
本发明的实施例可以以任何常规计算机程序设计语言来实现。例如,优选实施例可以以过程程序设计语言(例如“C”)或目标定向语言(例如“C++”)来实现。本发明的可选实施例可以作为预编程硬件构件、其它相关元件或作为硬件和软件元件的组合来实现。
实施例可以作为供计算机系统使用的计算机程序产品来实现。该实现可包括一系列的计算机指令,这些指令或者固定在有形媒体例如计算机可读媒体(例如,软磁盘、CD-ROM、ROM或硬盘)上,或者可以通过调制解调器或其它接口设备例如在媒体内连接到网络的通信适配器来传输给
计算机系统。该媒体可以是有形媒体(例如,光学或电学通信线路),或是利用无线技术(例如,微波、红外或其它传输技术)来实现的媒体。这一系列的计算机指令具体化上述全部或部分功效。本领域的技术人员应理解,这些计算机指令可以以多种程序设计语言来编写,以供许多计算机体系结构或操作系统使用。此外,这些指令可以存储在任何存储设备中,例如半导体、磁性、光学或其它存储器设备,也可以使用任何通信技术,例如光学、红外、微波或其它传输技术进行传输。期望这样一个计算机程序产品可以被分配为具有附随的打印或电子文件(例如,压缩包装软件)的可移动媒体,预装有计算机系统(例如,在系统ROM或硬盘上),或者在网络(例如,互联网或万维网)内从服务器进行分配。当然,本发明的一些实施例可以作为软件(例如,计算机程序产品)和硬件的组合来实现。本发明的其它实施例可以作为完全的硬件或完全的软件(例如,计算机程序产品)来实现。
本发明还可以在数字电子电路或在计算机硬件、固件、软件或其组合中实现。本发明的实施例可以在计算机程序产品中实现,该计算机程序产品有形地体现在用于由可编程处理器执行的机器可读存储设备中;以及可以通过执行指令程序的可编程处理器来执行方法,以通过操作输入数据和产生数据来执行本发明的功效。本发明可以有利地在一个或更多个计算机程序中实现,这些程序是在包括至少一个输入设备和至少一个输出设备的可编程系统上可执行的。每个计算机程序可以以高级过程或目标定向程序设计语言实现,或如果希望,也可以以汇编或机器语言中实现;而且在任何情况下,该语言都是可以是被编译的或被解释的语言。
合适的处理器包括例如通用和专用微处理器。通常,处理器将接收来自只读存储器和/或随机存取存储器的指令和数据。通常,计算机将包括一个或多个大容量存储设备来存储数据文件;这些设备包括磁盘,例如内部硬盘和可移动盘;磁光盘;以及光盘。适于有形地具体化计算机程序指令和数据的存储设备包括所有形式的非易失性存储器,例如,包括半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘和
可移动盘;磁光盘;CD-ROM盘;以及缓冲电路,例如锁存器和/或触发器。上述任何一者均可以通过或并入ASIC(专用IC)、FPGA(场可编程门阵列)或DSP(数字信号处理器)来实现。
具体化本发明的系统可以包括处理器、随机存取存储器、硬驱动控制器和通过处理器总线耦合的输入/输出控制器。
对本领域的技术人员来说,只要不脱离本发明的精神或范围,可以对在此公开的实施例进行与本发明一致的各种修改和变化将是显而易见的。
通过考虑在此公开的本发明的说明书和实践,与本发明一致的其它实施例将是显而易见的。因此,说明书和实施例被认为仅是示例性的,本发明的真实范围和精神由下述权利要求所公开。