CN100576212C - 基于桶的跟踪方法 - Google Patents

基于桶的跟踪方法 Download PDF

Info

Publication number
CN100576212C
CN100576212C CN200610088920A CN200610088920A CN100576212C CN 100576212 C CN100576212 C CN 100576212C CN 200610088920 A CN200610088920 A CN 200610088920A CN 200610088920 A CN200610088920 A CN 200610088920A CN 100576212 C CN100576212 C CN 100576212C
Authority
CN
China
Prior art keywords
bucket
net
instance
tracks
signature
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.)
Active
Application number
CN200610088920A
Other languages
English (en)
Other versions
CN101114306A (zh
Inventor
李志梁
李剑宇
李桢荣
侯劲松
苏毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Empyrean Technology Co Ltd
Original Assignee
Beijing CEC Huada Electronic Design Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing CEC Huada Electronic Design Co Ltd filed Critical Beijing CEC Huada Electronic Design Co Ltd
Priority to CN200610088920A priority Critical patent/CN100576212C/zh
Publication of CN101114306A publication Critical patent/CN101114306A/zh
Application granted granted Critical
Publication of CN100576212C publication Critical patent/CN100576212C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

基于桶的跟踪方法属于集成电路计算机辅助设计领域,尤其涉及版图验证领域。通常采用的划分方法是Gemini/GeminiII,即对Layout和Schematic两个图中的Instances和Nets进行签名,如果不能区分,则通常采用“引入签名半径”的方法,但这种方法的缺点是对签名函数要求很高且计算量大,另外在签名时须记录每个Instance/Net的“波前”,故空间复杂度高。本发明利用已有跟踪方法和划分方法的基本原理,将跟踪方法基于匹配点跟踪扩展到基于桶跟踪,将跟踪方法从匹配点出发找唯一性的结点扩展到从桶出发按Instance的类型或Net的度和签名值相等的原则分组生成新的桶,不仅可以完成跟踪的功能而且可以完成划分的功能,集跟踪与划分于一体。

Description

基于桶的跟踪方法
技术领域
基于桶的跟踪方法(BucketTrace算法)属于集成电路计算机辅助设计领域,尤其涉及版图验证领域。
背景技术
版图与原理图一致性检查(LVS-Layout Versus Schematic)用以确认电路版图结构是否与其原理图一致。LVS本质上是对两个图进行同构比较,涉及到的方法较多,但最重要的两个方法是跟踪方法和划分方法。LVS的基本思想是:在有匹配点的情况下使用跟踪方法,在没有匹配点的情况下使用划分方法获得新的匹配点,然后再从新的匹配点出发继续跟踪,如此反复,直至Layout和Schematic全部匹配或无新的匹配点为止。
跟踪(Trace)方法基于图的深度遍历。跟踪方法需要初始匹配点,初始匹配点通常可由用户指定或由LVS根据电路网表的特点生成。跟踪方法从初始匹配点出发,开始对网表的比较。在匹配点的周围,对只与该匹配点有关且具有唯一性的结点(包括Instance和Net)进行匹配,这样就会产生新的匹配点,记下新产生的匹配点,以后可从这些匹配点出发去找新的匹配点。跟踪方法的优点是效率高,但不能处理对称电路和并行路径。
划分(Partition)方法用于获得新的匹配点,其基本思想是:按照一定的规则进行划分,划分的结果是形成一些分组,分组的规模比原来的网表要小,对这些分组继续划分下去,若组中只有一个结点对,则这两个结点得以匹配。通常采用的划分方法是Gemini/GeminiII,即对Layout和Schematic两个图中的Instances和Nets进行签名,如果不能区分,则采用反复签名的方法或引入签名半径来解决。“反复签名”的问题是存在错误传递;故通常采用“引入签名半径”的方法,但这种方法的缺点是对签名函数要求很高且计算量大,另外在签名时须记录每个Instance/Net的“波前”,故空间复杂度高。
参考文献:
[1]C.Ebeling,Gemini,Proceedings of ICCAD,November,1983.
[2]C.Ebeling,GeminiII:A second generation layout validation program,in Proc.ICCAD,1988.
基本概念
(1)LVS:版图与原理图一致性检查(Layout Versus Schematic)。
(2)Instance:指的是单元内部的器件,如电阻R1、R2、...,Mos管M1、M2、...。Instance通过它的Pin连接到Net。
(3)Net:指的是单元内的线网,Net通过Instance的Pin连接到Instance。
(4)InstanceBucket:由Layout和Schematic中的Instance组成的桶。
(5)NetBucket:由Layout和Schematic中的Net组成的桶。
(6)奇异桶(OddBucket):桶中Layout的Instance/Net数等于0而Schematic的Instance/Net数大于0;或桶中Layout的Instance/Net数大于0而Schematic的Instance/Net数等于0。
(7)BucketSet:桶的集合。
(8)匹配点:匹配的Instance或Net。
(9)局部比较:在图的局部进行比较,缩小了规模,降低了空间复杂度。
发明内容
本发明针对Gemini/GeminiII划分方法对签名函数要求很高、计算量大且空间复杂度高的缺点提出一种新的基于桶的跟踪方法(BucketTrace),BucketTrace可以同时完成跟踪和划分的功能,其优点不存在错误传递,对签名函数的要求较低,时间空间复杂度小。
本发明采用已有跟踪方法和划分方法的基本原理,将跟踪方法基于匹配点跟踪扩展到基于桶跟踪,将跟踪方法从匹配点出发找唯一性的结点扩展到从桶出发按Instance的类型或Net的度和签名值相等的原则分组生成新的桶。
基于桶的跟踪方法(BucketTrace方法):①调用初始划分方法生成初始桶集;②从初始桶集中取出一个桶开始局部划分:若有未用且不包含错误的桶,则从这些桶出发调用BucketTraceWithoutError方法进行划分;若无未用且不包含错误的桶,但有未用且包含错误的桶,则从这些桶出发调用BucketTraceWithError方法进行划分;重复执行②直至初始桶集为空。
初始划分方法:①给每种类型的器件指定一个签名的参考值;②计算Net的初始签名值,即根据Net与Instance的连接关系计算半径为1的签名(签名函数略),然后按Net的度和签名值相等的原则分组生成Net桶集;③计算Instance初始签名值,即根据Instance与Net的连接关系计算半径为1的签名(签名函数略),然后按Instance的类型和签名值相等的原则分组生成Instance桶集。
BucketTraceWithoutError方法:即在做桶跟踪时不引入错误。①从Net桶出发跟踪,按Instance的类型和签名值相等的原则分组生成新的桶或细化Instance桶;若跟踪时遇到了错误(即不一致之处),则按Instance的类型相等的原则分组生成包含错误的Instance桶(初始划分决定了仅从Net出发跟踪到Instance时才可能遇到错误)。②从Instance桶出发跟踪,按Net的度和签名值相等的原则分组生成新的桶或细化Net桶。重复①和②直至无新的Net桶和Instance桶产生为止。
BucketTraceWithError方法:即在做桶跟踪时引入错误。①从包含错误的Net桶出发跟踪细化Instance桶和包含错误的Instance桶;②从包含错误的Instance桶出发跟踪细化Net桶和包含错误的Net桶;重复①和②直至无新的包含错误的Net桶和包含错误的Instance桶产生或得到匹配点为止。
本发明所述方法,具有以下优点:
(1)仅需对Instance和Net进行一次签名,而非靠扩大半径反复签名,不存在错误传递,对签名函数的依赖较低;
(2)BucketTrace方法用基于桶的跟踪方法代替划分方法,其时间和空间复杂度低,优于传统的划分算法;
(3)考虑到图的连通性以及Layout和Schematic中的匹配点和错误(不一致之处)可能将Layout和Schematic分割为若干个局部同构的子图,BucketTrace算法中采用了局部比较的策略,缩小了问题的规模。
附图说明
图1BucketTrace流程图
图2BucketTraceWithoutError算法示意图
图3BucketTraceWithError算法示意图
图4BucketTrace算法例子
具体实施步骤
在具体实施时,BucketTrace算法中用到了五个桶集:
OriginBucketSet:初始划分集合,用于存放初始划分生成的InstanceBucket和NetBucket;
UnusedBucketSet:用于局部划分,存放未用的InstanceBucket和NetBucket;
UsedBucketSet:用于局部划分,存放已用的InstanceBucket和NetBucket;
UnusedErrorBucketSet:用于局部划分,存放未用且包含错误的InstanceBucket和NetBucket;
UsedErrorBucketSet:用于局部划分,存放已用且包含错误的InstanceBucket和NetBucket;
因为任何一个Instance或Net只可能属于某个集合的某个桶或不属于任何一个桶,故这五个集合中任意两个桶的交集为空。另外,为加速桶的划分,这五个集合中的桶按BucketSize从小到大排序。
图1给出了BucketTrace算法的流程图,为说明方便,假设Layout和Schematic仅有一个顶层单元。
(1)初始化,启动BucketTrace算法,跳转到(2)。
(2)计算Layout和Schematic中的Instances和Nets初始签名值,对于Instance,按类型和签名值相等的原则分组生成桶,对于Net,按度和签名值相等的原则分组生成桶,将新生成的桶加入到OriginBucketSet,跳转到(3)。
(3)若OriginBucketSet非空,则跳转到(4);否则算法结束。
(4)从OriginBucketSet取一个桶,放入UnusedBucketSet,开始局部划分;跳转到(5)。
(5)若UnusedBucketSet非空,则跳转到(6);否则跳转到(7)。
(6)调用BucketTraceWithoutError算法;跳转到(5)。
(7)若UnusedErrorBucketSet非空,则跳转到(8);否则跳转到(9)。
(8)调用BucketTraceWithError算法;跳转到(5)。
(9)若UsedBucketSet非空,则跳转到(11);否则跳转到步骤(10)。
(10)结束本次局部划分,跳转到(3)。
(11)从UsedBucketSet取一个最小的桶,作任意匹配(非本说明书讨论内容,略),将生成的新桶加入到UnusedBucketSet,跳转到(5)。
1、BucketTraceWithoutError算法伪代码:
图2给出了BucketTraceWithoutError算法的示意图。
void BucketTraceWithoutError()
{
    从UnusedBucketSet取出第一个Bkt;
    if(Bkt is Net Bucket)
    {
       从Bkt中的每个Net出发跟踪一步,按Instance的类型和签名值相等的原则分组
       生成若干个Instance Bucket,记作ITS={IT1,IT2,...,ITm}(其中,
       ITi∩ITj=Φ,1≤i<j≤m,m≥0)和Instance的类型相同但签名值不相等的
       InstanceBucket,记作ETS={ET1,ET2,...,ETn}(其中,
       ETi∩ETj=Φ,1≤i<j≤n,n≥0);
       Foreach(ITin ITS)
       {
         假设IT和以下的Instance Bucket交集非空:UnusedBucketSet中的{IA1,IA2,...,
         IAa}(其中,IAi∩IAj=Φ,1≤i<j ≤a,a≥0),记为IAS;UsedBucketSet中的
         {IB1,IB2,...,IBb}(其中,IBi∩IBj=Φ,1≤i<j≤b,b≥0),记为IBS;
         UnusedErrorBucketSet中的{IC1,IC2,...,ICc}(其中,
         ICi∩ICj=Φ,1≤i<j≤c,c≥0),记为ICS;UsedErrorBucketSet中的{ID1
         ID2,...,IDd}(其中,IDi∩IDj=Φ,1≤i<j≤d,d≥0),记为IDS;
         Foreach(IA in IAS)
         {
           若IA∩IT非空且不等于IA则加入UnusedBucketSet;
           若IA-IT非空且不等于IA则加入UnusedBucketSet;
         }
         Foreach(IB in IBS)
         {
           若IB∩IT非空且不等于IB则加入UnusedBucketSet;
           若IB-IT非空且不等于IB则加入UnusedBucketSet;
         }
         若 IR - ∪ i = 1 a IA i - ∪ j = 1 b IB j - ∪ k = 1 c IC k - ∪ l = 1 d ID l 非空则加入UnusedBucketSet;
         将ETS集合中的全部Bucket加入UnusedErrorBucketSet;
    }
}
else  //Bkt is Instance Bucket
{
    从Bkt中的每个Instance出发跟踪一步,按Net的度和签名值相等的原则分组生
    成若干个Net Bucket,记作NTS={NT1,NT2,...,NTm}(其中,
    NTi∩NTj=Φ,1≤i<j≤m,m≥0);
    Foreach(NT in NTS)
    {
      假设NT和以下的Net Bucket交集非空:UnusedBucketSet中的{NA1,NA2,...,
      NAa}(其中,NAi∩NAj=Φ,1≤i<j≤a,a≥0),记为NAS;UsedBucketSet中
      的{NB1,NB2,...,NBb}(其中,NBi∩NBj=Φ,1≤i<j≤b,b≥0),记为NBS;
      UnusedErrorBucketSet中的{NC1,NC2,...,NCc}(其中,
      NCi∩NCj=Φ,1≤i<j≤c,c≥0),记为NCS;UsedErrorBucketSet中的{ND1
      ND2,...,NDd}(其中,NDi∩NDj=Φ,1≤i<j≤d,d≥0),记为NDS;
      Foreach(NAinNAS)
      {
        若NA∩NT非空且不等于NA则加入UnusedBucketSet;
        若NA-NT非空且不等于NA则加入UnusedBucketSet;
      }
      Foreach(NB in NBS)
      {
        若NB∩NT非空且不等于NB则加入UnusedBucketSet;
        若NB-NT非空且不等于NB则加入UnusedBucketSet;
      }
      若 NR - ∪ i = 1 a NA i - ∪ j = 1 b NB j - ∪ k = 1 c NC k - ∪ l = 1 d ND l 非空则加入UnusedBucketSet;
     }
   }
   将Bkt加入UsedBucketSet;
}
2、BucketTraceWithError算法伪代码:
   图3给出了BucketTraceWithError算法的示意图。
   void BucketTraceWithError()
   {
       从UnusedErrorBucketSet取出第一个Bkt;
       if(Bkt is Net Bucket)
       {
          从Bkt中的每个Net出发跟踪一步,按Instance的类型和签名值相等的原则分组
          生成若干个Instance Bucket,记作ITS={IT1,IT2,...,ITm}(其中,
          ITi∩ITj=Φ,1≤i<j≤m,m≥0);
          Foreach(IT in ITS)
          {
             假设IT和以下的Instance Bucket交集非空:UnusedBucketSet中的{IA1,IA2,...,
             IAa}(其中,IAi∩IAj=Φ,1≤i<j≤a,a≥0),记为IAS;UsedBucketSet中的
             {IB1,IB2,...,IBb}(其中,IBi∩IBj=Φ,1≤i<j≤b,b≥0),记为IBS;
             UnusedErrorBucketSet中的{IC1,IC2,...,ICc}(其中,
             ICi∩ICj=Φ,1≤i<j ≤c,c≥0),记为ICS;UsedErrorBucketSet中的{ID1
             ID2,...,IDd}(其中,IDi∩IDj=Φ,1≤i<j≤d,d≥0),记为IDS;
             Foreach(IA in IAS)
             {
               若IA∩IT非空则加入UnusedErrorBucketSet;//等于IA也加入
               若IA-IT非空且不等于IA则加入UnusedBucketSet;
             }
             Foreach(IB in IBS)
             {
               若IB∩IT非空则加入UnusedErrorBucketSet;//等于IB也加入
         若IB-IT非空且不等于IB则加入UnusedBucketSet;
       }
       Foreach(IC in ICS)
       {
         若IC∩IT非空且不等于IC则加入UnusedErrorBucketSet;
         若IC-IT非空且不等于IC则加入UnusedErrorBucketSet;
       }
       Foreach(ID in IDS)
       {
         若ID∩IT非空且不等于ID则加入UnusedErrorBucketSet;
         若ID-IT非空且不等于ID则加入UnusedErrorBucketSet;
       }
   }
}
else  //Bkt is Instance Bucket
{
   从Bkt中的每个Instance出发跟踪一步,按Net的度和签名值相等的原则分组生
   成若干个Net Bucket,记作NTS={NT1,NT2,...,NTm}(其中,
   NTi∩NTj=Φ,1≤i<j≤m,m≥0);
   Foreach(NTinNTS)
   {
     假设NT和以下的Net Bucket交集非空:UnusedBucketSet中的{NA1,NA2,...,
     NAa}(其中,NAi∩NAj=Φ,1≤i<j≤a,a≥0),记为NAS;UsedBucketSet中
     的{NB1,NB2,...,NBb}(其中,NBi∩NBj=Φ,1≤i<j≤b,b≥0),记为NBS;
     UnusedErrorBucketSet中的{NC1,NC2,...,NCc}(其中,
     NCi∩NCj=Φ,1≤i<j≤c,c≥0),记为NCS;UsedErrorBucketSet中的{ND1
     ND2,...,NDd}(其中,NDi∩NDj=Φ,1≤i<j≤d,d≥0),记为NDS;
      Foreach(NA in NAS)
      {
        若NA∩NT非空则加入UnusedErrorBucketSet;//等于NA也加入
        若NA-NT非空且不等于NA则加入UnusedBucketSet;
      }
      Foreach(NB in NBS)
      {
        若NB∩NT非空则加入UnusedErrorBucketSet;//等于NB也加入
        若NB-NT非空且不等于NB则加入UnusedBucketSet;
      }
      Foreach(NC in NCS)
      {
        若NC∩NT非空且不等于NC则加入UnusedErrorBucketSet;
        若NC-NT非空且不等于NC则加入UnusedErrorBucketSet;
      }
      Foreach(ND in NDS)
      {
        若ND∩NT非空且不等于ND则加入UnusedErrorBucketSet;
        若ND-NT非空且不等于ND则加入UnusedErrorBucketSet;
      }
    }
  }
  将Bkt加入UsedErrorBucketSet
}
图4给出了一个简单实例,假设电阻不可以约简,该例子有如下几个特点:
(1)需用BucketTrace做多次局部划分;
(2)存在并行路径:用签名算法很容易得到匹配点{(Net_1);(Net1)},但从该匹配点向右跟踪时发现并行路径{R_1,R_3);(R1,R3)},无法确定匹配关系,经典的Trace算法无法处理这种情况,只能调用划分算法求匹配点;但BucketTrace可以继续Trace并能很快匹配该连通分量;
(3)存在局部同构子图:{Net_2,R_2,Net_3,R_3,Net_4}、{Net_6,R_6,Net_7,R_7,Net_8}、{Net2,R2,Net3,R3,Net4}、{Net6,R6,Net7,R7,Net8},BucketTrace算法须保证不会出现错误匹配;
(4)存在对称电路:Layout中的Net_13和Schematic中的Net13是两个对称点;
(5)存在错误,BucketTrace算法可以通过引入错误得到匹配点;
由于用户未指定匹配点,对Layout和Schematic中的Instances和Nets作签名(签名函数略),对于Instance,按类型和签名值相等的原则分组生成桶,对于Net,按度和签名值相等的原则分组生成桶,将新生成的桶加入到OriginBucketSet,按BucketSize从小到大排序得:
OriginBucketSet=
{
   {(Net_1);(Net1)},
   {(C_0);(C0)},
   {(Net_4,Net_8);(Net4,Net8)},
   {(R_1,R_4);(R1,R4)},
   {(R_3,R_7);(R3,R7)},
   {(Net_0,Net_10,Net_16);(Net0)},
   {(R_2,R_5,R_6,R_12,R_13);(R2,R5,R6,R12,R13)},
   {(Net_2,Net_3,Net_5,Net_6,Net_7,Net_12,Net_13,Net_14);(Net2,Net3,Net5,Net6,Net7,
   Net12,Net13,Net14)}
}
BucketTrace执行过程:
(1)从OriginBucketSet取出{(Net_1);(Net1)},加入UnusedBucketSet中,开始局部划分;
(2)调用BucketTraceWithoutError算法:
①从UnusedBucketSet取出Bkt={(Net_1);(Net1)},从Bkt出发跟踪一步,由于{(C_0);(C0)}已经是匹配点,故仅生成一个新的Instance桶IT1={(R_1,R_4);(R1,R4)},将IT1加入UnusedBucketSet,由于Bkt是匹配点,故删除;
②从UnusedBucketSet取出Bkt={(R_1,R_4);(R1,R4)},从Bkt出发跟踪一步,由于{(Net_1);(Net1)}已经是匹配点,故仅生成一个新的Net桶NT1={(Net_2,Net_5);(Net2,Net5)},将NT1加入UnusedBucketSet,将Bkt加入UsedBucketSet;
③从UnusedBucketSet取出Bkt={(Net_2,Net_5);(Net2,Net5)},从Bkt出发跟踪一步,由于{(R_1,R_4);(R1,R4)}∈UsedBucketSet,故仅生成一个新的Instance桶IT1={(R_2,R_5);(R2,R5)},将IT1加入UnusedBucketSet,将Bkt加入UsedBucketSet;
④从UnusedBucketSet取出Bkt={(R_2,R_5);(R2,R5)},从Bkt出发跟踪一步,由于{(Net_2,Net_5);(Net2,Net5)}∈UsedBucketSet,故仅生成一个新的Net桶NT1={(Net_3,Net_6);(Net3,Net6)},将NT1加入UnusedBucketSet,将Bkt加入UsedBucketSet;
⑤从UnusedBucketSet取出Bkt={(Net_3,Net_6);(Net3,Net6)},从Bkt出发跟踪一步,生成两个新的Instance桶IT1={(R_3);(R3)},IT2={(R_6);(R6)},将IT1和IT2加入UnusedBucketSet,将Bkt加入UsedBucketSet;
⑥在得到这两个匹配点{(R_3);(R3)}和{(R_6);(R6)}后,用BucketTrace算法很快就能得到以下匹配点:{(Net_4);(Net4)},{(Net_3);(Net3)},{(R_2);(R2)},{(Net_2);(Net2)},{(R_1);(R1)}以及{(Net_7);(Net7)},{(R_7);(R7)},{(Net_8);(Net8)},{(Net_6);(Net6)},{(R_5);(R5)},{(Net_5);(Net5)},{(R_4);(R4)};
⑦UnusedBucketSet为空,结束BucketTraceWithoutError算法;
(3)本次局部划分结束;
(4)从OriginBucketSet取出{(C_0);(C0)},加入UnusedBucketSet中,开始局部划分;
(5)调用BucketTraceWithoutError算法:
①从UnusedBucketSet取出Bkt={(C_0);(C0)},从Bkt出发跟踪一步,由于{(Net_1);(Net1)}已经是匹配点,故仅生成一个新的Net桶NT1={(Net_0);(Net0)},将NT1加入UnusedBucketSet,由于Bkt是匹配点,故删除;
②从UnusedBucketSet取出Bkt={(Net_0);(Net0)},从Bkt出发跟踪一步,由于{(C_0);(C0)}已经是匹配点,故未生成新的Instance桶,由于Bkt是匹配点,故删除;
③UnusedBucketSet为空,结束BucketTraceWithoutError算法;
(6)本次局部划分结束;
(7)从OriginBucketSet取出Bkt={(Net_4,Net_8);(Net4,Net8)},由于Bkt的Size>1,从Bkt中删除掉{(Net_4);(Net4)}和{(Net_8);(Net8)}这两个匹配点后Bkt为空桶,结束本次局部划分;同理,OriginBucketSet中的{(R_1,R_4);(R1,R4)}和{(R_3,R_7);(R3,R7)}删除掉匹配点后均为空桶;
(8)从OriginBucketSet取出Bkt={(Net_0,Net_10,Net_16);(Net0)},由于Bkt的Size>1,从Bkt中删除掉{(Net_0);(Net0)}这个匹配点后Bkt为奇异桶,结束本次局部划分;
(9)从OriginBucketSet取出Bkt={(R_2,R_5,R_6,R_12,R_13);(R2,R5,R6,R12,R13)},由于Bkt的Size>1,从Bkt中删除掉{(R_2);(R2)},{(R_5);(R5)},{(R_6);(R6)}后得Bkt={(R_12,R_13);(R12,R13)},加入UnusedBucketSet中,开始局部划分;
(10)调用BucketTraceWithoutError算法:
①从UnusedBucketSet取出Bkt={(R_12,R_13);(R12,R13)},从Bkt出发跟踪一步,仅生成一个新的Net桶NT1={(Net_12,Net_13,Net_14);(Net12,Net13,Net14)},将NT1加入UnusedBucketSet,将Bkt加入到UsedBucketSet;
②从UnusedBucketSet取出Bkt={(Net_12,Net_13,Net_14);(Net12,Net13,Net14)},从Bkt出发跟踪一步,由于{(R_12,R_13);(R12,R13)}∈UsedBucketSet,故仅生成一个新的Instance桶ET1={(R_11,R_14);(R11,R14)},将ET1加入UnusedErrorBucketSet;
③UnusedErrorBucketSet为空,结束BucketTraceWithoutError算法;
(11)调用BucketTraceWithError算法:
①从UnusedErrorBucketSet取出Bkt={(R_11,R_14);(R11,R14)},从Bkt出发跟踪一步,生成一个新的Net桶NT1={(Net_12,Net_14);(Net12,Net14)},将NT1加入UnusedErrorBucketSet,同时从UsedBucketSet中取出NB1={(Net_12,Net_13,Net_14);(Net12,Net13,Net14)},将NB1-NT1={(Net_13),(Net13)}加入UnusedBucketSet中,将Bkt加入到UsedErrorBucketSet;
②由于UnusedBucketSet非空,结束BucketTraceWithError算法;
(12)调用BucketTraceWithoutError算法:
①从UnusedBucketSet取出Bkt={(Net_13);(Net13)},从Bkt出发跟踪一步,由于{(R_12,R_13);(R12,R13)}∈UsedBucketSet,故未生成新的Instance桶,由于Bkt是匹配点,故删除;
②UnusedBucketSet为空,结束BucketTraceWithoutError算法;
(13)调用BucketTraceWithError算法:
①从UnusedErrorBucketSet取出Bkt={(Net_12,Net_14);(Net12,Net14)},从Bkt出发跟踪一步,由于{(R_11,R_14);(R11,R14)}∈UsedErrorBucketSet,故仅生成一个新的Instance桶IT1={(R_12,R_13);(R12,R13)},将IT1从UsedBucketSet中删除加入到UnusedErrorBucketSet,将Bkt加入到UsedErrorBucketSet;
②从UnusedErrorBucketSet取出Bkt={(R_12,R_13);(R12,R13)},从Bkt出发跟踪一步,由于{(Net_13);(Net13)}已经是匹配点且{(Net_12,Net_14);(Net12,Net14)}∈UsedErrorBucketSet,故未生成新的Net桶,将Bkt加入到UsedErrorBucketSet;
③由于UnusedErrorBucketSet非空,结束BucketTraceWithError算法;
(14)本次局部划分结束;
(15)从OriginBucketSet取出{(Net_2,Net_3,Net_5,Net_6,Net_7,Net_12,Net_13,Net_14);(Net2,Net3,Net5,Net6,Net7,Net12,Net13,Net14)},由于Bkt的Size>1,从Bkt中删除掉{(Net_2);(Net2)},{(Net_3);(Net3)},{(Net_5);(Net5)},{(Net_6);(Net6)}{(Net_7);(Net7)},{(Net_13);(Net13)}这六个匹配点和{(Net_12,Net_14);(Net12,Net14)}后Bkt为空桶,结束本次局部划分;
(16)由于OriginBucketSet非空,结束BucketTrace算法。

Claims (1)

1、一种基于桶的跟踪方法,其特征在于包括以下步骤:(1)调用初始划分方法生成初始桶集;(2)从初始桶集中取出一个桶开始局部划分:若有未用且不包含错误的桶,则从这些桶出发调用BucketTraceWithoutError算法进行划分,①从Net桶出发跟踪,按Instance的类型和签名值相等的原则分组生成新的桶或细化Instance桶;若跟踪时遇到了错误,即不一致之处,则按Instance的类型相等的原则分组生成包含错误的Instance桶;②从Instance桶出发跟踪,按Net的度和签名值相等的原则分组生成新的桶或细化Net桶;重复①和②直至无新的Net桶和Instance桶产生为止;若无未用且不包含错误的桶,但有未用且包含错误的桶,则从这些桶出发调用BucketTraceWithError算法进行划分,i从包含错误的Net桶出发跟踪细化Instance桶和包含错误的Instance桶;ii从包含错误的Instance桶出发跟踪细化Net桶和包含错误的Net桶;重复i和ii直至无新的包含错误的Net桶和包含错误的Instance桶产生或得到匹配点为止;重复执行(2)直至初始桶集为空,其中Net桶为线网桶,Instance桶为器件桶;
其中所述初始划分方法为(一)给每种类型的器件指定一个签名的参考值;(二)计算Net的初始签名值,即根据Net与Instance的连接关系计算半径为1的签名,然后按Net的度和签名值相等的原则分组生成Net桶集;(三)计算Instance初始签名值,即根据Instance与Net的连接关系计算半径为1的签名,然后按Instance的类型和签名值相等的原则分组生成Instance桶集。
CN200610088920A 2006-07-26 2006-07-26 基于桶的跟踪方法 Active CN100576212C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200610088920A CN100576212C (zh) 2006-07-26 2006-07-26 基于桶的跟踪方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200610088920A CN100576212C (zh) 2006-07-26 2006-07-26 基于桶的跟踪方法

Publications (2)

Publication Number Publication Date
CN101114306A CN101114306A (zh) 2008-01-30
CN100576212C true CN100576212C (zh) 2009-12-30

Family

ID=39022645

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200610088920A Active CN100576212C (zh) 2006-07-26 2006-07-26 基于桶的跟踪方法

Country Status (1)

Country Link
CN (1) CN100576212C (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101593222B (zh) * 2008-05-28 2011-09-14 北京华大九天软件有限公司 一种实现版图验证中密度检查的方法
US8701058B2 (en) * 2009-06-18 2014-04-15 Semiconductor Insights Inc. Integrated circuit analysis systems and methods

Also Published As

Publication number Publication date
CN101114306A (zh) 2008-01-30

Similar Documents

Publication Publication Date Title
Yang et al. Balanced partitioning
Umans et al. Complexity of two-level logic minimization
Diamond Time-dependent differential inclusions, cocycle attractors and fuzzy differential equations
Murgai et al. Improved logic synthesis algorithms for table look up architectures
CN100440480C (zh) 用于校验受研究系统的完整模型的属性的方法和系统
US7003738B2 (en) Process for automated generation of design-specific complex functional blocks to improve quality of synthesized digital integrated circuits in CMOS using altering process
Cong et al. Technology mapping for FPGAs with embedded memory blocks
CN101299217B (zh) 一种地图信息处理的方法、装置和系统
WO2005008369A3 (en) Abstract data linking and joining interface
CN100576212C (zh) 基于桶的跟踪方法
Lavagno et al. Synthesis of hazard-free asynchronous circuits with bounded wire delays
CN100359488C (zh) 一种基于功能覆盖率的随机激励的自动产生方法
CN105843982A (zh) 用于可编程逻辑器件的位流生成方法、装置及设计系统
CN115705446A (zh) 集成电路的后仿真方法和装置
Gravner et al. Limiting behavior of 3-color excitable media on arbitrary graphs
CN104992032A (zh) 一种多电压域设计中保持时间的修正方法
Atserias Distinguishing SAT from polynomial-size circuits, through black-box queries
Ravikumar A fault-tolerant merge sorting algorithm
US20050108675A1 (en) Pattern recognition in an integrated circuit design
CN106952198A (zh) 一种基于Apriori算法的学生就业数据分析方法
CN100449320C (zh) 板级时序电路测试矢量生成方法
Salek et al. Hierarchical buffered routing tree generation
Khasidashvili et al. TRANS: Efficient sequential verification of loop-free circuits
Murgai Logic synthesis for field-programmable gate arrays
Holt et al. Minimizing interconnect energy through integrated low-power placement and combinational logic synthesis

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: BEIJING HUADAJIUTIAN SOFTWARE CO., LTD.

Free format text: FORMER OWNER: BEIJING ZHONGDIANHUADA ELEKTRON DESIGN LIMITED LIABILITY COMPANY

Effective date: 20090807

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20090807

Address after: Beijing city Chaoyang District Gaojiayuan No. 1 post encoding: 100015

Applicant after: Beijing Jiutian Digital Technology Co., Ltd.

Address before: Beijing city Chaoyang District Gaojiayuan No. 1 post encoding: 100015

Applicant before: Beijing CEC Huada Electronic Design Co., Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP02 Change in the address of a patent holder

Address after: 100102 Beijing city two Chaoyang District Lize Road No. 2 A block 2 layer

Patentee after: Beijing Jiutian Digital Technology Co., Ltd.

Address before: 100015 Beijing city Chaoyang District Gaojiayuan No. 1

Patentee before: Beijing Jiutian Digital Technology Co., Ltd.

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100102 Beijing city two Chaoyang District Lize Road No. 2 A block 2 layer

Patentee after: Beijing Huada Jiutian Technology Co.,Ltd.

Address before: 100102 Beijing city two Chaoyang District Lize Road No. 2 A block 2 layer

Patentee before: HUADA EMPYREAN SOFTWARE Co.,Ltd.