基于等价类解决hlvs中短路问题的算法的制作方法

文档序号:6627159阅读:310来源:国知局
专利名称:基于等价类解决hlvs中短路问题的算法的制作方法
技术领域
基于等价类解决HLVS中短路问题的算法属于集成电路计算机辅助设计领域,尤其涉及版图验证领域。
背景技术
版图与原理图一致性检查(LVS)是版图验证领域的重要验证方法。它对于消除错误、降低设计成本和减少设计失败的风险具有重要意义。随着集成电路的器件特征尺寸不断缩小、集成度不断提高、规模迅速增大,层次LVS逐渐成为版图验证技术的未来趋势。其思想就是基于原理图和版图网表本身具有层次性的特点,充分利用了设计数据的层次化关系,避免了传统LVS中采用打散网表处理情况下,若一个单元被调用了n次,则对这个单元内电路节点、器件作n次重复比较的问题;或者若单元内有一个错,则对同一个错重复报告n次等各类情况。层次LVS无论在处理电路的规模、减少数据处理时间、减少内存占用、或减少错误结果数量等诸方面都有着极大的优越性。对规模达到或超过百万晶体管的芯片设计优势更加明显。在层次LVS中,短路检查仍是版图和原理图一致性验证的重要问题。由于层次化处理方法中端口可以传递连接关系信息;同一单元不同的调用环境对此单元内的节点连接关系,进而对比较结果的正确性都有着重要的影响。短路问题已经不仅仅局限在单元内,而是需要跨层次考虑的重要问题。在比较之前采用何种方法解决层次LVS中的短路问题,就目前已公布的研究中,并没有一个令人满意的方法和完备统一的解决方案。
参考文献[1]P.Batra and D.Cooke,“HCompareA hierarchical netlist comparison program”,in Proc.29thDesign Automation Conf.,pp.299-304,1992. 严蔚敏,吴伟明,《数据结构》,清华大学出版社,1997.
基本概念HLVS层次版图与原理图一致性检查(Hierarchical Layout Versus Schematic)。
Cell指的是单元,单元内最重要的数据结构为二部图,即InstanceTable和NetTable,InstanceTable内记录着该单元的所有Instance以及每个Instance连接着哪些Net,NetTable中记录着该单元的所有Net以及每个Net连接着哪些Instance;HLVS基于对应单元(对应单元通常指Schematic和Layout中名称相同的单元,当然也可以人为指定对应单元)进行比较,参见文献[1]。父单元指的是调用当前单元的那些单元,子单元指的是当前单元调用的那些单元。
Instance指的是单元内部的器件,可以是基本的器件,如电阻R1、R2、...,电容C1、C2、...,也可以是用单元定义的“黑盒子”(“黑盒子”可以看作一种抽象器件,仅能看到它的Pin,看不到里面的内容)。Instance通过它的Pin连接到Net。
Net指的是单元内的节点,Net通过Instance的Pin连接到Instance。
Port和Pin这两个概念类似面向对象语言中的类和对象,Port是一类特殊的Net,是一个Cell供外部调用的端口,Pin指的是Instance的管脚。例如,单元A有两个Port,分别是IN和OUT,单元TOP调用了单元A的两个Instance——XA1和XA2,则XA1和XA2分别有两个Pin,即IN和OUT。

发明内容
本发明提出了一种新的短路情况,即Outside Short,并给出了解决这种短路情况的算法;提出用等价类思想解决HLVS中的短路问题,短路问题本质上是一个等价问题,即它可以归结为按给定的等价关系划分某集合为等价类。
通过对层次网表深入分析,我们发现,在层次处理时,Port的短路可能由其父单元中的Net短路导致。这类短路问题需要站在全局的角度上进行分析、解决。因此,本发明提出了将短路问题分为两种情况处理的思想,提出了一种全新的跨单元短路的情况。这是本发明最重要的创新之处。
第一类短路情况(Inside Short)单元内部的两个或多个Net/Port短路,这些Net/Port就是等价的,选择其中一个Net/Port作为代表。
第二类短路情况(Outside Short)是一种跨单元的Port短路情况,一个单元的两个或多个Port在所有父单元中短路(指的是Cell定义的Instance的Pin短路),则认为该单元的这些Port短路,选择其中一个Port作为代表。
在HLVS中,无论是第一类短路(Inside Short)还是第二类短路(Outside Short),究其本质都是一个等价类问题,即它可以归结为按给定的等价关系将某集合划分为等价类的问题,从而正确表示电路连按关系。因此解决HLVS中短路的核心问题就转换为等价类的求解问题。等价关系和等价类的定义(参见文献[2])如果集合S中的关系R是自反的、对称的和传递的,则称它为一个等价关系。设R是集合S的等价关系。对任何x∈S,由[x]R={y|y∈S∧xRy}给出的集合[x]RS称为由x∈S生成的一个R等价类。若R是集合S上的一个等价关系,则由这个等价关系可产生这个集合的唯一划分。即可以按R将S划分为若干不相交的子集S1,S2,...,Si,...,它们的并即为S,则这些子集Si便称为S的R等价类。
结合上述等价类的思想,我们提出基于等价类解决上述两类短路问题的算法,这也是本发明的另一个创新之处。
算法1 解决Inside Short算法(求等价类算法)假设当前Cell有n个Net,m个形如“*.CONNECT Netk1,Netk2,Netk3,...”的语句确定的等价关系R,须求对当前Cell中Net的划分(参见文献[2])。
令Cell中的每个Net各自形成一个只含单个成员的等价类,记作S1,S2,S3,...,Sn。重复读入m个形如“*.CONNECT Netk1,Netk2,Netk3,...”的语句,判定Netk1,Netk2,Netk3,...所属等价类,假设Netk1∈Sk1,Netk2∈Sk2,Netk3∈Sk3,...,则将Sk1、Sk2、Sk3、...合并成一个等价类。
最后,从每个等价类中选择一个Net/Port作为代表。
图1给出了一个Inside Short的例子。已知Net1、Net2、Net3短路,Net3与Net4短路,Net5与Net6短路,得到两个等价类{Net1,Net2,Net3,Net4}和{Net5,Net6}。
算法2 解决Outside Short算法(求等价类算法)假设当前Cell有n个Port,m个形如“{Portk1,Portk2,Portk3,...}”的划分确定的等价关系ψ,须求对当前Cell的Port划分。
令Cell中所有Port形成一个等价类,初始划分为Γ={P1},P1={Port1,Port2,...,Portn};令Cell的Instance对n个Port的划分形成一个等价类集合ψ={S1,S2,S3,...,Sk,...},其中Sk={Portk1,Portk2,Portk3,...};求等价类Foreach(S in ψ){tmpΓ=Φ;Foreach(P in Γ){V=P∩S;If(V≠Φ)tmpΓ=tmpΓ∪{V};V=P-S;If(V≠Φ)tmpΓ=tmpΓ∪{V};}
Γ=tmpΓ;}最后,从Γ中的每个等价类中选择一个Porr作为代表。
注在实际编程时,可以采用一些启发式方法如对ψ中的等价类按等价类中包含的Port数从小到大排序,这样可以加快划分速度;在Γ中等价类数目等于当前单元Port数(表明所有的Port都不短路)时即可以立即结束算法。
图2给出了一个Outside Short的例子,图2(a)给出了解决Outside Short前的电路图,仅给出了单元A的Instance的PIN连接关系。TOP单元调用单元A三次(XA1、XA2、XA3)。
Γ={P1},P1={PIN1,PIN2,PIN3,PIN4,PIN5}。考虑XA1,得划分{PIN1,PIN2,PIN3,PIN4,PIN5};考虑XA2,得划分{PIN1,PIN2,PIN5}和{PIN3,PIN4};考虑XA3,得划分{PIN1,PIN2}和{PIN3,PIN4,PIN5};故ψ={S1,S2,S3,S4,S5},其中S1={PIN1,PIN2,PIN3,PIN4,PIN5},S2={PIN1,PIN2,PIN5},S3={PIN3,PIN4},S4={PIN1,PIN2},S5={PIN3,PIN4,PIN5}。
执行算法2,得Γ={{PIN1,PIN2},{PIN3,PIN4},{PIN5}},执行过程参见表1,解决了Outside Short后的电路图参见图2(b)。
表1用算法2求解等价类的过程

总结这两利短路情况有本质的区别第一种短路情况(Inside Short)研究的是单元内的Net/Port短路,Port是一种特殊的Net,是一个Cell供外部调用的端口。若Cell的两个或多个Port短路,那么用该Cell定义的Instance的相应的Pin就短路,这种情况显然成立。
第二种短路情况(Outside Short)是一种跨单元的Port短路情况,研究的是如何由Pin短路导出Port短路,即一个单元的两个或多个Port在所有父单元中短路(指的是Cell定义的Instance的Pin短路),则认为该单元的这些Port短路。


图1用等价类解决Inside Short问题图2用等价类解决Outside Short问题图3HLVS中Inside Short的处理流程图4Inside Short例子图5解决Layout单元A的Inside Short后的电路6HLVS中Outside Short的处理流程图7Outside Short例子图8解决Layout单元B的Outside Short后的电路9解决Layout单元A的Outside Short后的电路图具体实施步骤在正式解决短路问题前,须对Schematic和Layout中的对应单元进行拓扑和逆拓扑排序,排序结果分别记录在m_lTopologicalSortList和m_lNegTopologicalSortList中(仅记录CellID)。
打散比较可以看作是层次比较的特例,即Schematic和Layout仅顶层单元对应,则仅需解决第一种短路情况(Inside Short),不存在第二种短路情况(Outside Short)。本节结合两个简单的实例说明如何在HLVS中使用“基于等价类解决HLVS中短路问题的算法”。
第一种短路情况(Inside Short)的处理流程图3给出了第一种短路情况(Inside Short)的简化处理流程。Inside Short按拓扑次序来处理每个单元;用算法1求出当前单元内短路Net/Port的等价类并选出Net/Port代表;然后修改当前单元的InstanceTable和NetTable;若当前单元非顶层单元并且存在短路的Port,则向父单元追加等价类。
处理流程中的①②③步涉及到许多细节问题,这里我们结合一个例子(参见图4)来解释Inside Short的处理流程。如果我们直接比较单元A,会发现单元A是不相同的,因为Schematic中的A有两个Ports,而Layout中的单元A有三个Ports;然后比较单元TOP,单元TOP各调用了一次单元A,而Layout中的单元A和Schematic中的单元A比较失败,故单元TOP比较失败,即两个网表比较失败。若过滤掉Layout中单元A的无用电阻R1,再与Schematic作打散比较(打散比较指的是将所有单元打散到TOP单元再进行比较),会发现两个网表比较成功!即出现了矛盾。
HLVS在比较之前首先要对Schematic和Layout作预处理,解决短路问题是预处理的重要一步。对Schematic处理前后的结果是相同的。以下是对Layout的处理
处理Layout中的单元A①IN1和IN2短路,执行算法1得到两个等价类{IN1,IN2}和{OUT},不妨设IN1和OUT分别为这两个等价类的Net/Port代表;②修改当前单元的InstanceTable和NetTableR2的POS端连接到IN1,过滤无用电阻R1;③因为IN1和IN2短路,导致TOP单元的Net1和Net2短路,向TOP单元追加等价类{Net1,Net2},删除掉当前单元的IN2。
处理Layout中的单元TOP处理过程同(1),Net1和Net2短路,假设选Net1作为代表,删除Net2。
解决Layout单元A的Inside Short后的电路图参见图5。
HLVS按拓扑次序比较对应单元,首先比较Schematic中的单元A和Layout中的单元A,比较成功;再比较Schematic中的单元TOP和Layout中的单元TOP,比较成功;故Layout和Schematic一致。
第二种短路情况(Outside Short)的处理流程图6给出了第二种短路情况(Outside Short)的简化处理流程。Outside Short按逆拓扑次序来处理每个单元;用算法2求出当前单元短路Port的等价类并选出Port代表;然后修改当前单元的InstanceTable和NetTable;若当前单元非顶层单元并且存在短路的Port,则修改父单元的InstanceTable。
处理流程中的①②③步涉及到许多细节问题,这里我们结合一个例子(参见图7)来解释Outside Short的处理流程。单元A是一个INV,如果我们不解决Outside Short而直接按拓扑次序比较对应单元,会发现单元A是不相同的,因为Schematic中的A有两个Ports,而Layout中的单元A有三个Ports;比较单元B,同理比较失败;然后比较单元TOP,单元TOP各调用了两次单元B,而Layout中的单元B和Schematic中的单元B比较失败,故单元TOP比较失败,即两个网表比较失败。如果Layout和Schematic作打散比较(打散比较指的是将所有单元打散到TOP单元再进行比较),我们会发现两个网表比较成功!即出现了矛盾。
HLVS在比较之前首先要对Schematic和Layout作预处理,解决短路问题是预处理的重要一步。对Schematic处理前后的结果是相同的。以下是对Layout的处理处理Layout中的单元TOP顶层单元无Port,不用处理。
处理Layout中的单元B①单元B仅被单元TOP调用,XB1的两个Pins(BIN1和BIN2)短路,XB2的两个Pins(BIN1和BIN2)短路,执行算法2得到一个等价类{BIN1,BIN2},即单元B的两个Ports(BIN1和BIN2)短路,假设选BIN1作为Port代表,删除BIN2;②修改当前单元的InstanceTable和NetTableXA1的AIN1和AIN2均连接到BIN1;③修改父单元的InstanceTable只须将TOP单元的XB1和XB2的BIN2删除掉即可。参见图8。
处理Layout中的单元A①单元A仅被单元B调用,XA1的两个Pins(AIN1和AIN2)短路,执行算法2得到一个等价类{AIN1,AIN2},即单元A的两个Ports(AIN1和AIN2)短路,假设选AIN1作为Port代表,删除AIN2;②修改当前单元的InstanceTable和NetTableMP1和MN1的gate端均连接到AIN1;③修改父单元的InstanceTable只须将B单元的XA1的AIN2删除掉即可。参见图9。
HLVS按拓扑次序比较对应单元,故应该首先比较Schematic中的单元A和Layout中的单元A,比较成功;再比较Schematic中的单元B和Layout中的单元B,比较成功;再比较Schematic中的单元TOP和Layout中的单元TOP,比较成功;故Layout和Schematic一致。
权利要求
1.本发明是一个用于解决HLVS中短路问题的算法,其特征是提出了用等价类思想解决HLVS(层次版图与原理图一致性检查)中遇到的短路问题;
2.根据权利要求1所述的基于等价类解决HLVS中短路问题的算法,其特征是提出了把短路分为单元内短路(Inside Short)和跨单元短路(Outside Short)两种情况,使得HLVS在比较时尽量减少子单元和父单元由于短路问题对单元本身比较结果的影响,使问题处理起来更加简单;
3.权利要求2所述的单元内短路(Inside Short),其具体算法步骤如下(1)对Schematic和Layout的对应单元(对应单元通常指Schematic和Layout中名称相同的单元,当然也可以人为指定对应单元)进行拓扑排序和逆拓扑排序;按单元的拓扑次序重复执行(2)(3)(4),解决这种短路情况;(2)执行算法1,求出当前单元内短路Net/Port的等价类并选出Net/Port代表;(3)修改当前单元的InstanceTable和NetTable;(4)若当前单元非顶层单元并且存在短路的Port,则向父单元中追加等价类;单元内短路情况的详细实现在程序InsideShort.cpp中。
4.权利要求2所述的跨单元短路(Outside Short),其具体算法步骤如下(1)按单元的逆拓扑次序重复执行(2)(3)(4)两步,解决这种短路情况;(2)执行算法2,求出当前单元短路Port的等价类并选出Port代表;(3)修改当前单元的InstanceTable和NetTable;(4)若当前单元非顶层单元并且存在短路的Port,则修改父单元的InstanceTable;跨单元短路情况的详细实现在程序OutsideShort.cpp中。
全文摘要
基于等价类解决HLVS中短路问题的算法属于集成电路计算机辅助设计领域,尤其涉及版图验证领域。在HLVS中,短路检查仍是版图和原理图一致性验证的重要问题。由于层次化处理方法中端口可以传递连接关系信息,短路问题已经不仅仅局限在单元内,而是需要跨层次考虑的重要问题。本发明提出了将短路问题分为两种情况处理,即Inside Short和Outside Short。在HLVS中,无论是Inside Short,还是Outside Short,究其本质都是一个等价类问题,即它可以归结为按给定的等价关系将某集合划分为等价类的问题,从而正确表示电路连接关系。因此解决HLVS中短路的核心问题就转换为等价类的求解问题。主要用途解决HLVS中的短路问题,为电路比较作准备。
文档编号G06F17/50GK1892661SQ20051008064
公开日2007年1月10日 申请日期2005年7月6日 优先权日2005年7月6日
发明者李志梁, 张萍, 侯劲松, 张书波 申请人:北京中电华大电子设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1