基于边的倒序树扫描线算法优化层次版图验证方法技术

技术编号:2864336 阅读:186 留言:0更新日期:2012-04-11 18:40
基于边的倒序树扫描线算法优化层次版图验证技术含有)ILT运算的复杂度降到线性的步骤,其特征在于含有以下操作步骤:利用了基于边的扫描线算法和VLSI版图验证的局部性原理,引入版图倒序树(Inverse  Layout  Tree)和投影边(halo  element)的概念,在计算边的状态时发明专利技术了“存在状态”与“不存在状态”两种类型的ILT,通过投影法和倒序树扫描线的结合来对版图进行分解,计算操作。利用VLSI版图数据的局部性原理和基于边的扫描线算法的特点,把(版图倒序树)ILT运算的算法复杂度降到线性的程度。使得避免组合爆炸问题并且避免了不同边操作下的几何操作重复这一技术缺陷。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

(正文内容)一种基于边的倒序树扫描线算法优化层次版图验证技术属于集成电路计算机辅助设计(IC CAD)领域,尤其是IC CAD工具中版图验证

技术介绍
(正文内容)集成电路(IC)设计的后期包括版图设计和版图验证,而这两项功能是EDA工具中的重要环节;版图验证是根据版图设计的几何设计规则,电学规则和原始输入的逻辑关系对版图设计进行正确性的验证并且可以通过对电路和参数的提取,产生电路模拟的输入文件进行后模拟,以进一部检查电学性能。现阶段集成电路的设计规模正由超大规模(VLSI)向极大规模(GSI)转变,而制造工艺则由超深亚微米(VDSM)向纳米量极转变,随着版图规模的急剧膨胀,传统的版图验证方法在计算速度和内存使用方面都落后于用户的需求。近来,版图层次验证技术成为当今IC CAD工具中VLSI验证技术研究的重点内容。它能利用版图层次的特点,减少不必要的操作和运算但目前还没有一种十分系统和完备的层次版图处理技术,适用于所有形式的层次关系。其实现方法的演变过程大体可以分以下几个阶段●全部版图打散,所有重复图形都要重复操作。●完全相同的单元只处理一次,其余单元可能重复操作。●单元中部分区域的图形完全相同,只处理一次,其余区域的图形可能重复操作。这里所指的区域一般是矩形。●单元中不同的layer分别考虑,如果某一layer图形完全相同,只处理一次,其余layer再分区域考虑,这些layer上的图形可能重复操作。●单元中重复的依据进一步细化到每一图形是否重复出现,对重复出现的图形只处理一次,只对不同图形分别进行处理。●注意到图形由边组成,如果不同图形的大部分边相同,仍旧可以把边作为判断重复的依据,从而减少重复边的操作。以上步骤自上而下,重复处理的次数越来越少,而层次处理的难度越来越大。主要的困难在于同一个单元被调用多次,其调用环境往往不完全相同,但不同之处又十分细微。如果仅仅因为单元的调用环境不同就将整个单元重复处理多次,显然效率低下;而如何处理这些不同的单元调用环境使得单元中其它相同的图形仅处理一次是一个十分棘手的难题。目前理论上工业界均没有一套完整、严密的处理方法。随后在理论体系不完备的情况下,许多版图层次验证工具的开发采用了启发式和增量开发的技术方法,即每次遇到版图层次不同的情况,就在算法中增加一种处理方式,长此下去,使得IC CAD工具软件的规模急剧增长,软件的质量得不到保证。目前在版图验证中的图形操作处理有投影法,它的重要的思想是不论环境图形来源于哪个上层单元,只要在本单元的边框范围内,统统将这些环境投影到本单元内。但是问题在于将来在单元内进行操作时,如何区分由于环境的不同导致操作过程和操作结果的不同。投影法的最早思想来自于文献“The haloAlgorithm-An Algorithm for Hierarchical Design Rule Checking of VLSI circuits″,IEEE trans.on CAD,CAD-12,No.2,pp 265-272,1993。
技术实现思路
(正文内容)本专利技术的目的在于提出一种新的技术方法,“基于边的层次版图倒序树扫描线法”,可以适用任何层次情况下的版图验证;本专利技术的总体思路利用基于边的扫描线算法和VLSI版图验证的局部性原理,创造性地引入版图倒序树(ILTInverse Layout Tree)和投影元素(halo element单元内部中来自其他单元投影的图形)的概念,应用投影法的原则把父单元的图形中与子单元有相互运算关系的图形投影到子单元中,在子单元中处理这些图形,提出“存在状态”与”不存在状态”两种类型的ILT并克服投影法的重复性图形操做这一执行效率不高的技术缺陷。在了解本专利技术的具体过程前本专利技术先定义两个概念定义1采用投影法时,单元内部的某个图形如果来自于其它单元的投影法则把该图形称为投影边(halo element)。如果图形用梯形表示,则把一个梯形称为一个投影元素(halo element)。halo element简称为halo。定义2采用投影法时,单元内部的某个图形如果不是来源于其它单元的投影,则把该图形称为原始边(primitive element)。如果图形用边表示,则把一条边称为一个原始边(primitive element)。如果图形用梯形表示,则把一个梯形称为一个原始边(primitive element)。primitive element简称为primitive。而投影法处理步骤是1.层次预处理自顶向下寻找每个单元中图形是否与子单元的边框有交叠部分,如果有,则将它与子单元有交叠的部分切割到到子单元中。同时,在子单元中记录该图形来源于哪个父单元。2.分别对每一条命令进行操作由于每个单元中都包含了来自不同父单元的图形信息,不能按照普通的非层次处理方法对单元中的图形进行处理,必须对来不同父单元中的图形进行分别处理,处理结果不能全部放在当前单元中,与父单元相关的图形应放到父单元中。本专利技术的特征在于包含以下主要步骤一.自顶向下形成每个单元的halo elementa)对每个单元的边框,计算父单元是否有图形与单元边框重叠,将重叠部分记为投影边(halo element),并形成版图倒序树(ILT),记录它的来源,这些投影边(halo element)可以被其子单元继承,形成子单元的版图倒序树(ILT)。b)对于子单元与子单元有重叠关系的情形,需要把其中一个子单元的图形递归投影到另一个子单元中,形成投影边(halo element)。一个单元的多个投影边(halo element)如果有重复部分,只记为一个投影边(halo element),同时它的ILT记录了不同来源。二.自底向上对单元进行操作当每个单元的投影边(halo element)形成完毕后,分别对每个单元内的图形进行类似于包括图形几何运算(GOA),设计规则检查(DRC),网表提取(NE)的操作。1)每个单元自底向上采用扫描线算法处理。在扫描线上对所有边按纵坐标排序,垂直边不参与运算。排序的主要目的是为下一步计算边的状态做准备。步骤2的详细实现在程序SCscan.cpp中。2)扫描线上自底向上逐个计算每条边的状态,状态值采用多个ILT表示,状态的记录分为两类,分别是当本边存在时的ILT状态(ExistStatusILT)和本边不存在时的ILT状态(NonExistStatusILT)。其中ExistStatusILT根据不同的状态值采用多个的ILT存储,NonExistStatusILT也根据不同的状态值采用多个的ILT存储。步骤3的详细实现在程序UTedge.h中。如GOA(图形几何运算)中的NOT命令操作来体现halo element的组合情况NOT X YB中有两个投影边(halo element)分别是h1和h2。h1表示版图倒序树(ILT)的补集;分别求出h1*h2、h1*h2、h1*h2的版图倒序树a)h1*h2代表h1和h2两个投影边(halo element)同时存在的情形下与单元B中的原始边(primitive)图形进行交集操作,操作结果是一个投影边(haloelement),它的版图倒序树结构同h1*h2相同。b)h1*本文档来自技高网
...

【技术保护点】
一种基于倒序树扫描线的版图验证技术,涉及到层次处理边中判断边的类别和计算边的状态,具体步骤如下:(1)层次预处理在每个单元中,形成所有图形对应边的ILT(版图倒序树)。形成ILT的过程采用版图层次结构自顶向下投影的步骤, 投影操作分为:图形与Instance边框重合的情况以及Instance与Instance有重合部分的情况两类,其中Instance与Instance有重合部分时,要利用递归投影的方法,寻找所有可能有重叠的图形。步骤1的详细实现在程序DPgoa.cpp和UTcell.cpp中。(2)每个单元自底向上采用扫描线算法处理。在每条扫描线上,对边按照Y坐标的大小排序,垂直边不参与运算。排序的主要目的是为下一步计算边的状态做准备。步骤2的详细实现在程序SCscan.cpp中。 (3)扫描线上自底向上逐个计算每条边的状态,状态值采用多个ILT表示,状态的记录分为两类,分别是:当本边存在时的状态存在状态(ExistStatusILT)和本边不存在时的状态(NonExistStatusILT).其中ILT存 在状态(ExistStatusILT)根据不同的状态值采用多个的ILT存储,NonExistStatusILT也根据不同的状态值采用多个的ILT存储。步骤3的详细实现在程序UTedge.h中。(4)每条halo边的状态值仅取决于 它的直接前驱边,与其它边的状态无关。这是由于,状态对应的ILT详细记录了它之前所有边的存在与不存在的情况。(5)通过前一条边存在状态和不存在状态的的ILT与本边的halo做逻辑“与”运算得到本边的存在状态。本边存在状态的 ILT=前一条边的存在状态(ExistStatusIL)“与”本边的halo+前一条边的不存在状态(NonExistStatusIL)“与”本边的halo本边存在状态的数值=前一条边的状态数值+1(如果本边方向为正)。本边存 在状态的数值=前一条边的状态数值-1(如果本边方向为负)。步骤5的详细实现在程序SCstatus.cpp中(6)通过前一条边存在状态和不存在状态的ILT与本边ILT做逻辑“减”运算得到本边不存在的状态.本边不存在 状态的ILT=前一条边的ILT存在状态(ExistStatus)“减”本边的halo前一条边的非ILT存在状态(NonExis...

【技术特征摘要】
1.一种基于倒序树扫描线的版图验证技术,涉及到层次处理边中判断边的类别和计算边的状态,具体步骤如下(1)层次预处理在每个单元中,形成所有图形对应边的ILT(版图倒序树)。形成ILT的过程采用版图层次结构自顶向下投影的步骤,投影操作分为图形与Instance边框重合的情况以及Instance与Instance有重合部分的情况两类,其中Instance与Instance有重合部分时,要利用递归投影的方法,寻找所有可能有重叠的图形。步骤1的详细实现在程序DPgoa.cpp和UTcell.cpp中。(2)每个单元自底向上采用扫描线算法处理。在每条扫描线上,对边按照Y坐标的大小排序,垂直边不参与运算。排序的主要目的是为下一步计算边的状态做准备。步骤2的详细实现在程序SCscan.cpp中。(3)扫描线上自底向上逐个计算每条边的状态,状态值采用多个ILT表示,状态的记录分为两类,分别是当本边存在时的状态存在状态(ExistStatusILT)和本边不存在时的状态(NonExistStatusILT).其中ILT存在状态(ExistStatusILT)根据不同的状态值采用多个的ILT存储,NonExistStatusILT也根据不同的状态值采用多个的ILT存储。步骤3的详细实现在程序UTedge.h中。(4)每条halo边的状态值仅取决于它的直接前驱边,与其它边的状态无关。这是由于,状态对应的ILT详细记录了它之前所有边的存在与不存在的情况。(5)通过前一条边存在状态和不存在状态的的ILT与本边的halo做逻辑”与”运算得到本边的存在状态。本边存在状态的ILT=前一条边的存在状态(ExistStatusIL)“与”本边的halo+前一条边的不存在状态(NonExistStatusIL)“与”本边的halo...

【专利技术属性】
技术研发人员:侯劲松魏文静陈福海李宁张书波刘燕
申请(专利权)人:北京中电华大电子设计有限责任公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1