一种甚大规模集成电路版图层次比较工具的子单元阵列拼接预处理方法与流程

文档序号:11155645 阅读:642 来源:国知局
一种甚大规模集成电路版图层次比较工具的子单元阵列拼接预处理方法与制造工艺

一种甚大规模集成电路版图层次比较工具中属于半导体集成电路设计自动化后端设计领域,涉及集成电路版图的差异比较操作中版图子单元阵列拼接预处理方法。



背景技术:

集成电路版图差异比较是版图设计和制造过程中,频繁执行的一种操作,通常用于筛选两个近似版图在图形和文本方面的差异。

版图在设计过程中,通常以层次架构表示,版图由多个单元(Cell)组成。单元中包含图形,文本数据和调用子单元的实例(Instance)。版图比较工具的主要输入数据是层次版图数据。

版图比较工具分二种:层次比较工具和打散比较工具。

版图打散比较工具处理层次版图的主要方法是:首先读入层次版图数据,然后按照从顶层到底层的层次调用关系扁平化打散各个单元的图形文本数据,仅保留一个顶层单元(Top Cell);接着对顶层单元调用打散比较引擎作版图比较,最后在顶层单元输出差异结果。

版图层次比较工具处理层次版图的主要方法是:首先读入层次版图数据,然后对层次版图数据的各个单元并行的调用层次比较引擎作跨层次的版图比较,最后在层次版图的各个单元输出差异结果。

在版图设计后期,投入生产之前,版图通常要经过多次局部修改,以满足设计规则检查和电路元件参数要求。而每次迭代修改,都要进行版图差异比较,复查确认修改内容。因此,版图比较工具的处理效率对集成电路设计周期具有重要影响。

随着纳米级IC设计的出现,版图数据规模迅速膨胀,单个层次版图文件的尺寸可达几百GB的规模。如此大的数据规模,版图打散比较工具还要打散各单元数据,使得数据规模进一步增大,处理效率非常低。而版图层次比较工具具有无须打散单元数据,避免重复比较同一单元数据和并行比较多个单元的优点,特别适合比较甚大规模集成电路的版图。

集成电路设计者在对版图改版时,有时将一个单元的大阵列(Array)拆分成几个小阵列来放置。当用版图比较工具比较这两个版本的差异时,由于两个版图之间单元阵列放置的差异,层次版图比较工具通常把这种有差异的单元阵列全部打散为图形再做图形比较,比较效率相当低下。一个好的办法是先消除单元阵列的放置差异,使得两个版图的单元层次一致并使用层次比较算法比较以上单元阵列。消除单元阵列放置差异的通常方法是: 将两个版图的所有单元阵列展开为单元的实例。这种方法占内存大,处理效率低。本发明采用将邻近的小阵列拼接为一个大阵列来保持两版图的层次一致。这种方法具有内存小,处理效率高的优点。

要进一步提高版图层次比较工具的比较速度,就必须解决好版图中单元的大阵列的层次改版造成的比较效率下降的问题。



技术实现要素:

本发明提供一种集成电路版图层次比较工具的子单元阵列拼接预处理方法,能够解决版图中单元的大阵列的层次改版造成的版图层次比较工具效率下降的问题。

本发明的主要思路:在版图层次比较工具中增加一个预处理步骤——子单元阵列拼接预处理。子单元阵列拼接预处理将版图中邻近的小Array或Instance拼接为一个大Array,使不一致的Array层次统一起来,提高层次比较算法的比较效率。

Array拼接处理的技术方案如下:

按照拓扑序遍历版图中的各单元,将当前单元中各子单元的Array散开为实例,和子单元的原始实例一起插入到临时Instance容器中;对临时Instance容器中的Instance按照放置点坐标先X后Y排序;依次遍历有序的Instance,按照与前一个Instance的坐标关系,构造Y方向等间距Instance集合和X方向等间距Instance集合;遍历完毕后根据X方向等间距Instance集合和其特征Y方向等间距Instance集合,创建拼接后的新Array;将该子单元的原始Array和实例删除,插入拼接后的新Array和无法拼接而残留的实例。

前文所述的构造Y方向等间距Instance集合,步骤为:在遍历有序的Instance时,若前后Instance的X坐标相同,Y坐标不同,把与前一个Instance的Y间距值相同的Instance加入到同一个Y方向等间距Instance集合中。如果前后Instance的Y间距值发生变化。则创建新的Y方向等间距Instance集合来存放不同Y间距值的Instance。

前文所述的构造X方向等间距Instance集合,步骤为:在遍历有序的Instance时,若前后Instance的X坐标不同或已经遍历完最后一个实例,如果当前X坐标处各Instance同时满足以下两个条件,则加入到同一个X方向等间距Instance集合中;否则加入到新的X方向等间距Instance集合中:

(a) 与前一个X坐标处各Instance的X间距值相同。

(b) 在Y方向的各Instance间距分布与当前X方向等间距Instance集合中任一个X坐标处各Instance在Y方向的间距分布相同。各Instance在Y方向的间距分布由一组特征Y方向等间距Instance集合来描述。

前文所述的根据X方向等间距Instance集合和其特征Y方向等间距Instance集合,创建拼接后的新Array,步骤为:遍历各X方向等间距Instance集合和其特征Y方向等间距Instance集合,每次遍历都得到在X方向和Y方向同时等间距的一组Instance, 将这些Instance组成一个新Array。如果该Array的维数为1x1,则作为实例输出到预处理后的版图;否则作为二维或一维Array输出到预处理后的版图。

本发明在保证比较结果正确性的前提下,能消除层次版图之间子单元阵列的层次差异,减少不必要的版图打散,节约了内存,加快版图比较速度。实验中采用若干子单元阵列层次有差异的真实版图测试,在采用了本发明所述的子单元阵列拼接预处理后,版图层次比较工具有2-10倍的性能提升。

附图说明

图1 层次版图的子单元阵列拼接预处理方法流程图;

图2 待拼接的子单元阵列版图实例;

图3 子单元阵列实例的拼接示意图;

图4 拼接后形成的大阵列版图。

具体实施方式

如附图1所示,本发明的具体实现流程如下:

Ø 步骤(101),将所有单元按层次调用关系,拓扑排序,转步骤(102)。

Ø 步骤(102),按照拓扑顺序,取出下一个未处理的单元, 转步骤(103)。

Ø 步骤(103),判断当前单元是否含有子单元阵列或实例,是则转步骤(104),否则当前单元不做操作,直接转步骤(110)。

Ø 步骤(104),将子单元的阵列临时展开为Instance, 保存到临时Instance容器中,转步骤(105)。

Ø 步骤(105),按照Instance的放置点坐标, 对临时Instance容器中的Instance排序,转步骤(106)。Instance拓扑排序的方法如下:按照Instance放置点的坐标先按照X坐标由小到大排序,X坐标相同时按照Y坐标由小到大排序。

Ø 步骤(106),遍历有序的Instance时,若前后Instance的X坐标相同,Y坐标不同,则构造Y方向等间距Instance集合,转步骤(108)。Y方向等间距Instance集合的特征是每个Instance的X坐标相同,与前一个Instance的Y间距值相等。构造Y方向等间距Instance集合的步骤如下:

(a) 如果当前Y方向等间距Instance集合不存在,则创建一个新的Y方向等间距Instance集合作为当前Y方向等间距Instance集合,将当前Instance加入该Y方向等间距Instance集合;该Y方向等间距Instance集合的Y方向等间距值设置为未定义,由下一个Instance和当前Instance的Y方向差值来决定。

(b) 如果当前Y方向等间距Instance集合存在但Y方向等间距值未定义,将当前Instance与前一个Instance的Y方向差值作为当前Y方向等间距Instance集合的Y方向等间距值,并将当前Instance加入该Y方向等间距Instance集合。

(c) 如果当前Y方向等间距Instance集合存在且Y方向等间距值已定义,检查当前Instance与前一个Instance的Y方向差值是否与该Y方向等间距值相同,如果相同则将当前Instance加入当前Y方向等间距Instance集合;如果不同,则创建一个新的Y方向等间距Instance集合作为当前Y方向等间距Instance集合,将当前Instance加入该Y方向等间距Instance集合;该Y方向等间距Instance集合的Y方向等间距值设置为未定义,由下一个Instance和当前Instance的Y方向差值来决定。

Ø 步骤(107),遍历有序的Instance时,若前后Instance的X坐标不同或已经遍历完最后一个实例,则构造X方向等间距Instance集合,转步骤(107)。X方向等间距Instance集合的特征是一个Instance的二维组合,以X等间距值和Y方向等间距Instance集合为特征属性;其中所有Instance在X方向等间距,且Y方向Instance间距分布一致,即每个X坐标处的Y方向等间距Instance集合都相同。构造X方向等间距Instance集合的步骤如下:

(a) 如果当前X方向等间距Instance集合不存在,则创建一个新的X方向等间距Instance集合作为当前X方向等间距Instance集合,将当前X坐标处的所有Instance加入该X方向等间距Instance集合;该集合的X方向等间距值设置为未定义, 该集合的Y方向间距分布特征属性设置为当前X坐标处的所有Y方向等间距Instance集合。

(b) 如果当前X方向等间距Instance集合存在,如果当前X坐标处的Y方向等间距Instance集合与当前X方向等间距Instance集合的特征Y方向等间距Instance集合都相同,则按照以下步骤处理:

i. 如果X方向等间距值未定义,则将当前X坐标处的所有Instance加入当前X方向等间距Instance集合;当前X方向等间距Instance集合的X方向等间距值设置为当前X坐标和前一X坐标的差值。

ii. 如果X方向等间距值已定义,而且前后Instance的X坐标差值等于当前X方向等间距Instance集合的X等间距值,则将当前X坐标处的所有Instance加入当前X方向等间距Instance集合。

iii. 如果 X方向等间距值已定义,但前后Instance的X坐标差值不等于当前X方向等间距Instance集合的X等间距值,则创建一个新的X方向等间距Instance集合作为当前X方向等间距Instance集合,该集合的X方向等间距值设置为未定义, 该集合的Y方向分布特征属性设置为当前X坐标处的所有Y方向等间距Instance集合。

(c) 如果当前X方向等间距Instance集合存在,而且当前X坐标处的Y方向等间距Instance集合与当前X方向等间距Instance集合的特征Y方向等间距Instance集合不完全相同,则创建一个新的X方向等间距Instance集合作为当前X方向等间距Instance集合,该集合的X方向等间距值设置为未定义, 该集合的Y方向分布特征属性设置为当前X坐标处的所有Y方向等间距Instance集合。

Ø 步骤(108),按照X方向等间距Instance集合和其特征Y方向等间距Instance集合,创建拼接的二维Array或一维Array,转步骤(109)。创建新Array的步骤如下:遍历各X方向等间距Instance集合和其特征Y方向等间距Instance集合,每次遍历都得到在X方向和Y方向同时等间距的一组Instance, 将这些Instance组成一个新Array。如果该Array的维数为1x1,则作为实例输出到预处理后的版图;否则作为二维或一维Array输出到预处理后的版图。

Ø 步骤(109),删除子单元的原始阵列和原始实例,插入新拼接出的子单元阵列和无法拼接而残留的实例,转步骤(110)。

Ø 步骤(110),判断是否有未处理的单元,否则表示已经处理过所有单元,方法结束;是则转步骤(102),继续处理下一个单元。

下面以图2中的待拼接的子单元Array版图为例,描述具体实施过程。

图2中的实例为子单元Array的版图。顶层单元Top有1个子单元:Cell X;有8个子单元X的一维阵列(Array)和4个子单元X的实例(Instance),没有图形和文本。Cell X没有子单元,只有50个图形。为方便描述,图2仅绘制了Instance的边框,未绘制Instance内部图形和文本。

首先,执行步骤(101),按照拓扑排序2个单元,得到以下拓扑序:Top, X;转步骤(102)。

步骤(102)执行,按照拓扑序得到第一个单元Top Cell,转步骤(103)。

步骤(103)执行,判断当前单元Top Cell是否有子单元Array或Instance。因为有子单元X的Array;转步骤(104)。

步骤(104)执行,将子单元X的阵列散开为实例,如图3所示,一共得到20个子单元X的实例;转步骤(105)。

步骤(105)执行, 按照先X后Y的顺序对20个X实例排序,如图3所示,从小到大排列为X1,X2,X3...X20。

步骤(106)执行,遍历有序的Instance时,若前后Instance的X坐标相同,Y坐标不同,则构造Y方向等间距Instance集合。如图3所示,当遍历到实例X2时,创建了Y方向等间距Instance集合Y1, 其Y方向等间距值为X2到X1的Y间距, 当遍历到X3时,由于Y间距变化, X3到X2间距与X2到X1间距不同, Y方向等间距Instance集合Y1结束。当遍历到X4时,创建了Y方向等间距Instance集合Y2。当遍历到X5时,X5到X4的Y间距和Y方向等间距Instance集合Y2的Y方向等间距值相同,把X5加入到Y方向等间距Instance集合Y2。类似的可以构造其他Y方向等间距Instance集合Y3,Y4, Y5, Y6, Y7。

步骤(107)执行,遍历有序的Instance时,若前后Instance的X坐标不同或已经遍历了最后一个实例,则构造X方向等间距Instance集合。如图3所示,当遍历到实例X6时,发现X坐标不同,创建了一个X方向等间距Instance集合P1, P1的特征属性为Y方向等间距Instance集合Y1和Y2, P1中包含5个实例X1-X5。遍历到实例X11时,发现相同X坐标的X6-X10组成了Y方向等间距Instance集合(Y3, Y4)和P1的特征Y方向等间距Instance集合(Y1, Y2)相同,加入X6-X10到P1中,设定X等间距值为 X6到X1的X间距值。当遍历到X16时,发现同一X坐标的X11-X15的Y方向等间距Instance集合与P1相同,而且X间距值也与P1的X方向等间距值相同,因此把实例X11-X15加入到P1中。当遍历完最后一个实例X20后,发现同一X坐标的X16-X20虽然X方向间距值与P1的X方向等间距值相同,但是它们的Y方向等间距Instance集合(Y7)与P1的特征Y方向等间距Instance集合不同。因此新建一个X方向等间距Instance集合P2,包含X16-X20的实例。

步骤(108)执行,按照X方向等间距Instance集合和其特征Y方向等间距Instance集合,创建拼接的二维Array和一维Array。遍历X方向等间距Instance集合P1的特征Y方向等间距Instance集合(Y1,Y2), P1和Y1可以组成一个2 x 3的Array, P1和Y2可以组成一个3 x 3的Array。遍历X方向等间距Instance集合P2的特征Y方向等间距Instance集合(Y7), P2和Y7可以组成一个1 x 5的Array。

步骤(109)执行,删除子单元的原始阵列和原始实例,插入拼接出的3个Array,如图4所示,转步骤(110)。

步骤(110)执行,尚有未获取的Cell 单元,转步骤(102)。

步骤(102)执行,按照拓扑序获取到第二个单元X,转步骤(103)。

步骤(103)执行,判断当前单元X是否有子单元。因为单元X没有子单元;转步骤(110)。

步骤(110)执行,已经没有未获取的Cell 单元,子单元阵列拼接预处理结束。

当前第1页 1 2 3
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1