一种基于分簇的三重图案光刻版图分解方法

文档序号:31224641发布日期:2022-08-23 18:39阅读:69来源:国知局
一种基于分簇的三重图案光刻版图分解方法

1.本发明涉及半导体光刻制造领域,特别是涉及一种基于分簇的三重图案光刻版图分解方法。


背景技术:

2.随着集成电路的不断发展,每个芯片上可容纳的晶体管数目,一直在以摩尔定律(moore’s law)的速度快速增长。如今,从最初的几个晶体管已经迅速增长到了570多亿个晶体管。在芯片面积基本不变的情况下,每个芯片上的标准单元特征尺寸也在不断缩小,当今最先进的技术节点,特征尺寸已经达到了10nm以下。而用于版图光刻制造的193nm光源因光刻解析度不够,直接用于先进工艺标准单元的制造会导致严重的光刻畸变。我们将这种会引起光刻畸变的图案之间的近距离关系称为冲突边关系。图1为不同工艺下的光刻畸变影响。为了能够延续摩尔定律,三重图案光刻技术成为了工业界制造10nm以下版图切实可行的手段。
3.三重图案光刻技术,是指将原来一层版图图案密度较高的版图中的图案分解到三张不同的掩膜板上,经过三次曝光与刻蚀,实现较密集版图的制造的技术。图2为对同一版图进行双重图案光刻(double patterning lithography,dpl)和三重图案光刻(triple patterning lithography,tpl)的分解结果。可以发现,对于图2左边这样的版图,图案b和c在双重图案光刻版图分解后仍然存在冲突,而在三重图案光刻中,三个图案被分配到三张掩膜板上,冲突得以全部消除,因此,三重图案光刻在10nm以下先进工艺的版图制造中更容易消除图案间的冲突边。同时,为了减少冲突边数量,还引入了缝合边(stitch)来将原来的一个图案分为多个图案。分出来的每个图案可以赋予不同的颜色,但当其颜色不同时,会有缝合边,而颜色相同时,则表示该缝合边未使用。有冲突边关系的两个图案如果在同一层掩膜板中会导致版图中两个图案所代表的电路结构出现短路断路等电路功能问题,对电路的影响较大;有缝合边关系两个图案如果分到不同的掩膜板中会影响两个图案所代表的电路结构出现电阻电容波动等电路性能问题,对电路的影响较小。
4.三重图案光刻技术中,最重要的便是如何快速地进行版图分解以使原版图中的图案在分到三层掩膜板后,实现最小的分解开销。分解开销由版图中的无解冲突边和使用的缝合边的加权数量来表示,分解开销越小,分解质量越高,后期版图工程师对版图进行调整的工作量也越少。而分解速度,作为评判版图分解算法的另一个重要标准,则是分解速度越快,分解算法越好。
5.三重图案光刻版图分解问题通常被转化为图论问题中的三着色问题进行求解。对图中的顶点不同的着色就代表着将对应的图案分配至不同的掩膜板中。a.b.kahng等人在2008年将版图多边形之间的冲突抽象成冲突图(conflict graph),然后通过对冲突图的处理来完成版图分解。这种抽象方法成为后来大多数人处理多重图案光刻版图分解时最常用的表示方法。针对三重图案光刻版图分解的配色问题,已有的一些算法如整数线性规划(integer liner programming,ilp)及其松弛后的半定规划(semidefinite programming,
sdp),图论算法和启发式算法都已经比较成熟。但这些算法如果直接用于如今超大规模集成电路版图的版图分解,算法的求解时间会非常长。为了加速算法的求解,现在已有如独立组件计算,隐藏顶点度数小于3的顶点,桥边拆解等tpl版图分解的冲突图化简方法。但这些方法对冲突图的化简还不够完全,一些复杂图在经过如上三种方法化简后顶点规模仍然较大,为此,本发明提出了一种化简更彻底的冲突图化简方法,以进一步加速版图分解。在加快算法求解的速度的同时,本发明提出的版图分解算法中还有对化简后各个子冲突图中顶点配色的调整方法,以实现加速的同时保持甚至减少版图分解的开销。


技术实现要素:

6.有鉴于此,本发明的目的在于提供一种基于分簇的三重图案光刻版图分解方法,相对于现有的一些版图分解方法,本方法可以实现更快速的求解速度的同时减小版图分解的分解开销,是对现有版图分解方法的一种改进。
7.为了实现上述目的,本发明采用如下技术方案:
8.一种基于分簇的三重图案光刻版图分解方法,所述方法包括:
9.步骤s1、针对一版图执行图案的分割,将版图中的多边形分割成多个矩形,再根据该矩形,得到多边形之间的距离,再根据该距离与三重图案光刻最小规则间距值构建出该版图的冲突图;
10.步骤s2、针对步骤s1中得到的冲突图,执行缝合边的插入,其包括:先通过投影计算出候选缝合边插入位置,再根据该候选缝合边插入位置选择出冲突图中的缝合边;
11.步骤s3、针对步骤s2中插入了缝合边的冲突图执行版图分解的操作,其包括:通过冲突图化简算法对冲突图进行化简,将其化简为多个分簇,用以减小问题规模,其中,该冲突图化简算法包括:独立组件计算的算法、隐藏顶点度数小于3的顶点的算法、桥边拆解的算法以及分簇的算法;
12.步骤s4、针对步骤s3中经过化简之后的冲突图,执行sdp算法,用以进行配色,并且,在配色时,通过调整簇间两个有缝合边关系的顶点的配色,用以提升分解质量;其中,在进行配色时,首先针对第一个分簇执行sdp算法进行求解,获取对应的结果,在对第二个簇以及后续其他簇以进行配色时,进行簇间配色调整,该簇间配色调整包括:针对该第二个分簇,判断该分簇的各个顶点与第一个分簇的顶点之间是否有缝合边关系,若有,则对该分簇中顶点给予一个初始建议配色,该初始建议配色与第一个分簇中顶点配色相同,若无,则针对该二个分簇执行sdp算法进行求解,获取对应的结果,针对第三个分簇以及第i个分簇均采用同样的方法执行;
13.步骤s5、针对经过步骤s4配色操作后的子簇,得到了除分簇外的三种冲突图化简算法化简后的每个子冲突图的内部最优解;将这些子冲突图进行最优解的合并操作,获得完整的版图分解结果。
14.进一步的,在步骤s1中,按照如下的方法进行冲突图的构建,包括:
15.步骤s101、将版图图案沿水平或垂直方向分割成矩形;
16.步骤s102、对于两个矩形之间的距离,如果二者在x或y轴方向上有部分重合区域,则距离为二者平行距离或垂直距离;如果二者在x或y轴方向上无重合区域,则距离为二者距离最近的两个顶点之间的距离;
17.步骤s103、根据步骤s101和步骤s102中得到的多边形距离与三重图案光刻最小规则间距值进行比较,判断多边形之间是否形成冲突边;
18.步骤s104、以顶点代表版图中的图案,用实线表示图案间的冲突边关系,便抽象出版图对应的冲突图。
19.进一步的,在所述步骤s2中,针对版图中的多边形,将其中的矩形进行投影,得到每个矩形上的投影序列,再根据该投影序列得到候选缝合边插入位置,其具体包括:
20.步骤s2011、选择一多边形,确定其周围与该多边形存在冲突关系的多边形;再将这些多边形的组成矩形以三重图案光刻的最小间距规则值划分区域,找到选中多边形的每个组成矩形上与周围多边形的组成矩形有冲突的区域;
21.步骤s2012、此时,当前选中的矩形被这些投影分成了多个段;将每个段以其他邻接矩形在当前选中矩形上的投影数量标记,这些段上的投影数量所组成的序列即为投影序列;其中,还有一个端点必须为零的规则,即投影序列必须以0开始和结束;
22.步骤s2013、根据得到的投影序列,选择出所有可能的候选缝合边插入位置,其中,通过如下规则进行选择,其包括:
23.规则1、所有投影序列为0的区域都是候选缝合边位置;
24.规则2、在规则1中的候选缝合边位置中,如果投影序列是以”01010”开头,则这些候选缝合边位置为冗余的;
25.规则3、如果当前选中矩形的投影序列中包含有子序列”xyz”,其中x,y,z》0,并且x》y,z》y,则在投影数量为y的这一段中有一个丢失的候选缝合边,其中,子序列是指至少包含3个非零投影数量的投影序列;丢失是指只在投影为0的区域插入缝合边的算法所不能找到的缝合边位置。
26.进一步的,针对步骤s2013得到的候选缝合边,移除会导致其他设计规则检查违例的候选缝合边,剩下的候选缝合边作为冲突图中的缝合边,其中,满足如下条件的候选缝合边位置需要被移除,包括:
27.条件1、在该位置插入缝合边后,会生成小于最小光刻图案尺寸要求fs_min的矩形的候选缝合边位置;
28.条件2、在该位置插入缝合边后,该段矩形分成两个矩形时,每个矩形的交叉覆盖长度不满足工艺要求的最小交叉覆盖长度m_0的候选缝合边位置;
29.条件3、该位置处于矩形的角处的候选缝合边位置;
30.条件4、在该位置插入缝合边后,会生成与其他多边形没有任何冲突边关系的小矩形的候选缝合边位置。
31.进一步的,在所述步骤s3中,所述独立组件计算的算法,其包括:将冲突图中的顶点通过深度优先遍历,使得有边关系的顶点聚类,用以将原始冲突图中的顶点,分为为若干个独立组件。
32.进一步的,在所述步骤s3中,所述隐藏顶点度数小于3的顶点的算法,其包括:
33.首先,将所有的顶点状态都设为可见,并设置一个标志位用来表征本次迭代中是否有顶点被隐藏;
34.接着,执行迭代,在迭代中,选中一个顶点v后,先查看其顶点状态,如果该顶点已经被隐藏,则直接跳过,查看下一个顶点;否则,将该顶点的度数设为0;
35.然后,对于选中顶点v,遍历其所有邻接顶点u,如果该顶点u已经被隐藏,则跳过该邻接顶点,查看下一个邻接顶点,否则,获取顶点u和顶点v之间的边的类型,如果为缝合边,则缝合边度数加1并继续循环;如果为冲突边,则该顶点v的冲突边度数加1;
36.当遍历完顶点v的所有邻接顶点后,判断顶点v的冲突边度数小于3且缝合边度数为0是否满足,如果满足条件,则说明当前顶点v能够被隐藏,将其状态设为隐藏,并将标志位hide_flag设为true,继续下一次迭代;
37.最后,如果遍历完图中所有顶点,都没发现任何新的冲突边度数小于3的顶点且缝合边度数为0的顶点,或者所有顶点都已被隐藏,则标志位hide_flag会保持false,从而退出while循环,化简结束。
38.进一步的,在所述步骤s3中,所述桥边拆解的算法,其包括:
39.首先,选中一个初始顶点后,标记该顶点的访问顺序和可到达顶点的最小序号值均为其访问顺序;
40.接着,将该顶点压入栈中,遍历顶点u的每个邻接顶点v,如果v未被访问,则继续深度优先探索;当这个顶点及其更深的顶点都被探索完成后,再从最深的顶点开始,依次向上回溯,更新每一个浅层顶点的可到达顶点的最小序号值;如果邻接顶点v的最小可到达顶点比当前顶点u的访问序号还大,则边(u,v)构成一条桥边;如果v已经被访问过,并且v仍然在堆栈中,则说明顶点v的访问顺序比顶点u的更小,顶点u找到了一个其能到达的更小访问顺序的顶点,此时,便需要更新顶点v和u能够到达的最小访问顺序的顶点;
41.然后,当搜索完当前顶点u的所有边以后,如果发现节点u的访问顺序和该顶点可到达顶点的最小序号值相同,则说明该顶点为一个双连通子图的根顶点;此时不断弹出栈顶的元素,直至弹出元素与该根顶点相同,便得到了一个子冲突图的所有顶点;
42.最后,原冲突图中剩下的顶点组成另一个双连通子图,以桥边为界,便能够将一个大的冲突图分为两个小的子冲突图,用以减少子冲突图中的顶点数量。
43.进一步的,在所述步骤s3中,所述簇的算法,其具体包括:
44.通过只对冲突边进行深度优先探索,将一个独立组件中的顶点再细分为多个小簇,簇与簇之间仅有缝合边关系而没有冲突边关系。
45.进一步的,所述步骤s5包括:
46.对于分簇形成的每个簇,其合并过程在每个簇的配色过程中一起进行的;该合并过程与配色过程形成这样一个循环:对于每一个分簇,首先判断该分簇中每个顶点与其他分簇中的顶点之间是否与簇间缝合边关系;如果有,且另外那个分簇中的顶点是已经通过sdp配色算法得到了最优配色,则为该分簇中由这条簇间缝合边连接的顶点给予一个初始建议配色;然后再开始对该分簇内进行sdp配色算法求解;若无簇间缝合边,或虽然有簇间缝合边,但另外的那个分簇中仍未进行配色,则直接对该分簇进行sdp算法求解;如此以往,直至所有分簇都得到了配色,算法结束;每个簇最优配色结果的合并过程就在这个循环的过程中得到了实现;
47.对于桥边拆解形成的子冲突图,在得到了每个子冲突图中分解质量最好的解决方案后,由于两个子冲突图是相对独立求解的,且其之间由一条桥边连接,因此需要根据由桥边连接的两个顶点的颜色,对其中一个子冲突图中的配色进行调整;如果桥边连接的两个顶点的颜色相同,则将由桥边连接的第二个子冲突图中的所有顶点颜色都偏移1来合并桥
边拆解得到的子冲突图。
48.进一步的,所述步骤s5还包括:
49.对于隐藏掉的那些顶点,在对其进行配色时,仅需根据被隐藏顶点的邻接顶点的颜色,即得到配色;
50.各个独立组件之间由于没有任何边关系,其求解时相对独立的,因此仅需要将各个独立组件中的配色结果直接合并,即得到整个版图的版图分解结果。
51.本发明的有益效果是:
52.1、本发明对冲突图的化简更为彻底,使得每个子冲突图的规模达到最小,sdp算法在每个子冲突图中求解的规模变小,从而比现有算法的求解速度更快;
53.2、本发明在分簇后采取了新的适用于tpl的簇间配色调整算法,使得版图分解的质量没有因分簇而受到损失,并且恰当的簇间配色调整还能够使得版图分解的质量更高。
附图说明
54.图1为背景技术中描述的不同工艺下的光刻畸变影响的示意图;
55.图2为背景技术中描述的dpl和tpl版图分解示意图;
56.图3为本发明提供的一种基于分簇的三重图案光刻版图分解方法的流程示意图;
57.图4为一个示例版图的版图分割过程的示意图;其中,该图4a为分割之前的多边形,该图4b为多边形分割之后的示意图;
58.图5为根据图4a构建的冲突图;
59.图6为候选缝合边插入位置计算的示意图;
60.图7为挑选为冲突图缝合边的缝合边位置的示意图;
61.图8为违规候选缝合边位置示例,其中,图8(a)表示为违反fs_min约束、图8(b)表示为违反m_0约束、图8(c)表示为违反非矩形角处约束、图8(d)表示为生成无其他冲突边的小矩形;
62.图9为独立组件计算的示意图;
63.图10为隐藏顶点度数小于3的顶点的示意图;
64.图11为桥边拆解的简单示意图,其中,图11(a)为执行桥边拆解前的示意图,图11(b)为执行拆解之后的示意图;
65.图12为桥边拆解的详细过程示意图,其中,图12(a)表示以深度优先遍历到顶点2,并为顶点0,1,3,2的order和low值标号;图12(b)表示在回溯过程中更新顶点2和3的low值;图12(c)表示对顶点3的另一条分支进行深度优先遍历,并对顶点5,4,6的order和low进行标号;图12(d)表示在深度优先探索完成后,对顶点5,4,6的low值进行更新;图12(e)表示根据每个顶点的low值找到图中的桥边;图12(f)表示更新顶点1和0的low值;
66.图13为分簇的示意图;
67.图14为簇内图案配色的示意图,其中,图14(a)为配色前的示意图,图14(b)为配色后的示意图;
68.图15为簇间配色调整的示意图,其中,图15(a)簇间配色调整前的示意图,图15(b)为簇间配色调整后的示意图;
69.图16为桥边拆解子图合并的示意图,其中,图16(a)未执行合并的两个子冲突图,
图16(b)采用直接合并的方法之后存在冲突的冲突图,图16(c)采用本实施例方法之后,不存在冲突的冲突图;
70.图17为隐藏顶点恢复的示意图,其中,图17(a)为隐藏顶点恢复之前的示意图,图17(b)为隐藏顶点恢复之后的示意图。
具体实施方式
71.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
72.实施例1
73.参见图3-图17,本实施例提供一种基于分簇的三重图案光刻版图分解方法,该方法的流程如图3所示,该方法具体包括:
74.步骤s1、针对一gds-ii版图执行图案的分割,将版图中的多边形分割成多个矩形,再根据该矩形,得到多边形之间的距离,再根据该距离与三重图案光刻最小规则间距值构建出该版图的冲突图。
75.具体的说,在本实施例中,通过如下的方法进行冲突图的构建,包括:
76.步骤s101、将版图图案按要求沿水平或垂直方向分割成小矩形存储。这是因为输入的版图文件中,版图图案形状各式各样,使得计算两个图案之间的间距以判断这两个图案之间是否形成冲突边,以及对版图图案进行投影操作等常用操作与计算不便,而分割为小矩形后,多边形之间的距离便可以由各自组成矩形间距离的最小值确定,而矩形之间的距离计算相较多边形之间的距离计算要简单的多;
77.步骤s102、对于两个矩形之间的距离,如果二者在x或y轴方向上有部分重合区域,则距离为二者平行距离或垂直距离;如果二者在x或y轴方向上无重合区域,则距离为二者距离最近的两个顶点之间的距离;
78.步骤s103、根据步骤s101和步骤s102中得到的多边形距离与三重图案光刻最小规则间距值进行比较,判断多边形之间是否形成冲突边;
79.步骤s104、以顶点代表版图中的图案,用实线表示图案间的冲突边关系,便可以抽象出版图对应的冲突图。
80.更具体的说,在本实施例中,如图4和图5所示,采用步骤s101的方法,将图4(a)中的多边形沿着水平方向切割成若干矩形,如图4(b)所示。接着,按照步骤s102,计算两个版图多边形的组成矩形之间的距离,并由此得到多边形a与多边形b之间的距离为组成矩形a1右上顶点与组成矩形b2左下顶点之间的距离,多边形a与多边形c之间的距离为组成矩形a2与组成矩形c1之间的垂直距离,其他多边形之间的距离类似。然后,按照步骤s103与步骤s104,判断多边形之间的距离与三重图案光刻最小规则间距的大小,确定多边形之间是否有冲突边关系。用顶点表示多边形,直线表示冲突边,构建冲突图如图5所示。
81.步骤s2、针对步骤s1中得到的冲突图,执行缝合边的插入,其包括:通过投影计算候选缝合边插入位置,并根据设计规则挑选一些合适的作为冲突图中的缝合边;
82.具体的说,在本实施例中,通过如下的方法得到冲突图的缝合边,包括:
83.步骤s201、针对版图中的多边形,将其中的矩形进行投影,得到每个矩形上的投影序列,再根据该投影序列得到候选缝合边插入位置;
84.更具体的说,在本实施例中,通过如下的方法得到投影序列,包括:
85.步骤s2011、选择一多边形,确定其周围与该多边形存在冲突关系的多边形;再将这些多边形的组成矩形以三重图案光刻的最小间距规则值划分区域,找到选中多边形的每个组成矩形上与周围多边形的组成矩形有冲突的区域;
86.步骤s2012、此时,当前选中的矩形被这些投影分成了多个段;将每个段以其他邻接矩形在当前选中矩形上的投影数量标记,这些段上的投影数量所组成的序列即为投影序列。为了方便起见,还有一个端点必须为零的规则,即投影序列必须以0开始和结束;
87.步骤s2013、根据得到的投影序列,按照如下的规则得到所有可能的候选缝合边插入位置:
88.规则1、所有投影序列为0的区域都是候选缝合边位置;
89.规则2、在规则1中的候选缝合边位置中,如果投影序列是以”01010”开头,则这些候选缝合边位置为冗余的。这是因为,对于第一个0,如果在这个0的位置插入缝合边,不会对矩形的冲突关系有任何影响还会多一个缝合边,所以不插。而对于第二个和第三个0对应的候选缝合边位置,当前选中的矩形与其两个邻接矩形,总共只有三个图案,在tpl中,无论怎样给矩形b和矩形c配色,矩形a总是可以得到一个合法的配色,不必再多引入一条缝合边。其次,由于一个选中矩形上的投影序列可能是对称的,因此,如果该选中矩形上的投影序列的尾端也是”01010”的话,则尾端的这些候选缝合边位置也是冗余的;
90.规则3、如果当前选中矩形的投影序列中包含有子序列”xyz”,其中x,y,z》0,并且x》y,z》y,则在投影数量为y的这一段中有一个丢失的候选缝合边。子序列是指至少包含3个非零投影数量的投影序列。丢失是指只在投影为0的区域插入缝合边的算法所不能找到的缝合边位置。
91.步骤s202、针对步骤s2013得到的候选缝合边,移除会导致其他设计规则检查违例的候选缝合边,剩下的候选缝合边作为冲突图中的缝合边参与后续算法的计算。
92.更具体的说,满足如下条件的候选缝合边位置需要被移除:
93.条件1、在该位置插入缝合边后,会生成小于最小光刻图案尺寸要求fs_min的矩形的候选缝合边位置;
94.条件2、在该位置插入缝合边后,该段矩形分成两个矩形时,每个矩形的交叉覆盖长度不满足工艺要求的最小交叉覆盖长度m_0的候选缝合边位置;
95.条件3、该位置处于矩形的角处的候选缝合边位置;
96.条件4、在该位置插入缝合边后,会生成与其他多边形没有任何冲突边关系的小矩形的候选缝合边位置;
97.更具体的说,在本实施例中,按照步骤s201,对有冲突边关系的多边形,以三重图案光刻最小规则间距为半径进行投影,得到每个多边形的每个组成矩形上的投影序列。如图6中,多边形b、c、d、e、f在多边形a的组成矩形上的投影序列为01212101010,其中,尾端的0是根据端点必须为零规则添加的默认0。在图6中,每个多边形恰好都是矩形。然后,根据步骤s2013中的规则,图6中的投影序列01010处的缝合边被标记为冗余缝合边,且在序列212中,还发现了一条丢失的缝合边。经过步骤s201后得到的候选缝合边位置如图6中所示。接
着,根据步骤s202中的规则,对生成的候选缝合边进行挑选,得到最终的加入到冲突图中的缝合边如图7所示。除了图6和图7所示的规则外,剩下的缝合边挑选规则示意图如图8所示。
98.步骤s3、针对步骤s2中插入了缝合边的冲突图执行版图分解的操作,其包括:通过冲突图化简算法对冲突图进行化简,将其化简为多个分簇,用以减小问题规模,其中,该冲突图化简算法包括:独立组件计算的算法、隐藏顶点度数小于3的顶点的算法、桥边拆解的算法以及分簇的算法;
99.具体的的说,在本实施例中,该步骤s3中,上述的冲突图化简算法具体包括:
100.1、独立组件计算的算法,其包括:将冲突图中的顶点通过深度优先遍历,使得有边关系的顶点聚类,从而将原始冲突图中数以亿计的顶点,分为为若干个顶点数量较少的独立组件。
101.2、隐藏顶点度数小于3的顶点的算法,该化简方法是一个对原冲突图迭代隐藏的过程,其包括:首先将所有的顶点状态都设为可见(未隐藏),并设置一个标志位用来表征本次迭代中是否有顶点被隐藏。接着开启迭代。在迭代中,选中一个顶点v后,首先查看其顶点状态,如果该顶点已经被隐藏,则直接跳过,查看下一个顶点。否则,将该顶点的度数设为0。接着,对于选中顶点v,遍历其所有邻接顶点u(u,v之间可能是冲突边连接,也可能是缝合边连接),如果该顶点u已经被隐藏,则跳过该邻接顶点,查看下一个邻接顶点,否则,获取顶点u和顶点v之间的边的类型,如果为缝合边,则缝合边度数加1并继续循环。如果为冲突边,则该顶点v的冲突边度数加1。当遍历完顶点v的所有邻接顶点后,判断顶点v的冲突边度数小于3且缝合边度数为0是否满足,如果满足条件,则说明当前顶点v可以被隐藏,将其状态设为隐藏,并将标志位hide_flag设为true,继续下一次迭代。如果遍历完图中所有顶点,都没发现任何新的冲突边度数小于3的顶点且缝合边度数为0的顶点,或者所有顶点都已被隐藏,则标志位hide_flag会保持false,从而退出while循环,化简结束。
102.3、桥边拆解的算法,该化简方法通过设置两个数组order和low来标记每个顶点的访问顺序和该顶点可到达顶点的最小序号值,其包括:首先选中一个初始顶点后,标记该顶点的访问顺序和可到达顶点的最小序号值均为其访问顺序。然后将该顶点压入栈中。接着遍历顶点u的每个邻接顶点v,如果v未被访问,则继续深度优先探索。当这个顶点及其更深的顶点都被探索完成后,再从最深的顶点开始,依次向上回溯,更新每一个浅层顶点的可到达顶点的最小序号值。如果邻接顶点v的最小可到达顶点比当前顶点u的访问序号还大,则边(u,v)构成一条桥边。如果v已经被访问过,并且v仍然在堆栈中,则说明顶点v的访问顺序比顶点u的更小,顶点u找到了一个其能到达的更小访问顺序的顶点,此时,便需要更新顶点v和u可以到达的最小访问顺序的顶点。当搜索完当前顶点u的所有边以后,如果发现节点u的访问顺序和该顶点可到达顶点的最小序号值相同,则说明该顶点为一个双连通子图的根顶点。此时不断弹出栈顶的元素,直至弹出元素与该根顶点相同,便得到了一个子冲突图的所有顶点。同理,原冲突图中剩下的顶点组成另一个双连通子图。以桥边为界,便可以将一个较大的冲突图分为两个较小的子冲突图,减少子冲突图中的顶点数量。
103.4、分簇的算法,其包括:通过只对冲突边进行深度优先探索,而暂时不考虑缝合边,将一个独立组件中的顶点再细分为多个小簇,簇与簇之间仅有缝合边关系而没有冲突边关系,簇内则有大量冲突边和少数缝合边关系,这是因为簇内的顶点虽然是由冲突边探索得到的,但不能排除某些顶点之间既有缝合边直接相连又有冲突边间接相连。
104.更具体的说,在本实施例中,按照独立组件计算的算法,由24个顶点组成的原始冲突图9,经过独立组件计算后得到的两个分别由10个和14个顶点组成的独立组件1和独立组件2。
105.按照隐藏顶点度数小于3的顶点的算法,图10中的顶点,在第一次迭代时,顶点4和顶点5被隐藏,第二次迭代则将剩下的顶点3,顶点2,顶点1隐藏。因此,对图10而言,在经过隐藏顶点度数小于3的顶点化简后,所有顶点的状态都变为隐藏。
106.按照桥边拆解的算法,类似图11(a)的冲突图,在经过桥边拆解后变为了两个更小的子冲突图,如图11(b)所示。桥边拆解的详细过程如图12所示。图12(a)中,首先依次深度优先探索了0,1,3,2顶点,然后在2顶点探索完成后,发现其可以到达的最小访问顺序的顶点为顶点0,故将其可以到达的最小访问序号值更新为顶点0的访问顺序0。同理更新顶点3的low值。之后在图12(c)中,又向顶点3的另一条分支进行深度优先探索,并为每个顶点设置访问顺序和初始low值。在顶点6探索完成后,发现其可以到达的最小访问顺序的顶点为顶点5,故将其可以到达的最小访问序号值更新为顶点5的访问顺序4。同理更新顶点4的low值。更新完成后,在图(e)中,便可以根据每个顶点的low值找到桥边。最后再将剩下的仍未更新的顶点1的low值也进行更新。桥边搜索完成,拆解得到的两个子冲突图也不言而喻。
107.按照分簇的算法,将原来由14个点组成的独立组件,如图13所示,又分成了4个顶点数量更少的簇,每个簇内的顶点个数都在6个以内,顶点数量减少了一半以上。
108.步骤s4、针对步骤s3中经过化简之后的冲突图,执行sdp算法,用以进行配色,并且,在配色时,通过调整簇间两个有缝合边关系的顶点的配色,用以提升分解质量;其中,在进行配色时,首先针对第一个分簇执行sdp算法进行求解,获取对应的结果,在对第二个簇以及后续其他簇以进行配色时,进行簇间配色调整,该簇间配色调整包括:针对该第二个分簇,判断该分簇的各个顶点与第一个分簇的顶点之间是否有缝合边关系,若有,则对该分簇中顶点给予一个初始建议配色,该初始建议配色与第一个分簇中顶点配色相同,若无,则针对该二个分簇执行sdp算法进行求解,获取对应的结果,针对第三个分簇以及第i个分簇均采用同样的方法执行。
109.具体的说,在本实施例中,在该步骤s4中,通过如下的方法对一个分簇执行sdp算法进行求解,包括:
110.用三个单位矢量(1,0),(-1/2,√3/2)和(-1/2,-√3/2)来表示三种颜色;两个单位矢量之间的内积表示为:
111.则,对两个顶点i,j,有如下性质:
[0112][0113]
在公式(1)和公式(2)中,v
ik
,v
jk
表示第i或第j个顶点的颜色,即三个矢量中的某一个。其中,v
i1
表示顶点i的颜色矢量的第一个分量的取值,v
i2
表示则顶点i的颜色矢量的第二个分量的取值。
[0114]
因此,版图分解的分解开销表达式可以写为下式(3):
[0115][0116][0117]
在公式(3)中,e
ij
表示顶点i和顶点j之间的一条边(可能是冲突边,也可能是缝合边)。α则表示一条缝合边带来的开销相对一条冲突边带来的开销的比例。本发明中取α为0.1。
[0118]
通过对式3中对矢量vi离散值的要求进行松弛,可以得到如式4所示的公式:
[0119][0120][0121][0122]
可以将公式(3)中任意可行解通过将设置为构造公式(4)的一个可行解,即(4)式中每个可以理解为对(3)式解的向量维度扩展后的近似解。
[0123]
如此,对于公式(4)的一个解zr,和对应公式(3)的一个解opt,有zr<=opt。亦即,公式(4)的解是公式(3)解的一个近似解。因为常数不会影响公式(4)最小值的求解,因此去掉公式(4)中的常数项,得到如下公式(5):
[0124][0125][0126][0127]
最后,将公式(5)转换为标准的半定规划形式,如公式(6):
[0128]
min a
·
x
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0129][0130][0131]
x≥0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6d)
[0132]
在公式(6)中,a表示各个顶点之间的开销系数,矩阵中各个位置的开销系数如公式(7)所示;α为0.1,表示缝合边带来的影响相对冲突边带来影响的比例;x表示最后求解得到的各个顶点之间配色相同与否,相同则两个顶点对应的颜色的内积为1,x
ij
=1。不同则其内积的最小值为-1/2,x
ij
>=-1/2。a
·
x表示矩阵a和x之间的内积,即∑i∑
jaij
x
ij
。约束(10d)表示x是正半定的,这是因为x
ij
和x
ji
都表示的冲突图中的同一条边。
[0133][0134]
对求解得到的x矩阵进行取整,使x的元素均变为1和-0.5。其中1表示x矩阵中对应位置的两个顶点颜色相同,而-0.5表示x矩阵中对应位置的两个顶点颜色不同。至此,便得到了顶点之间的颜色异同关系,然后通过假设一个顶点的颜色,并根据顶点之间的颜色异同关系得到其他顶点的颜色。
[0135]
具体的说,在本实施例中,具体通过如下方法执行簇间配色调整:
[0136]
首先在一个分簇内进行sdp配色求解,然后记录其求解结果。在对下一个簇进行求解之前,会首先判断第二个簇内的各个顶点,其与其他簇内的顶点之间是否有缝合边关系。如果有,则进一步判断该外部簇内的顶点是否已经通过sdp算法进行了配色。如果该外部簇内的顶点已经拥有配色,则当前的第二个簇内对应的顶点的配色会给予一个初始建议配色,该颜色与外部簇内的顶点拥有相同的配色。之所以是建议配色,是因为当前第二个簇内,顶点之间的边关系主要都是冲突边,冲突边带来的开销要远大于簇间缝合边的开销,因此,如果簇内配色算法的最佳配色结果需要调整与外部簇内顶点有缝合边关系的顶点的颜色,还是会对其进行配色调整。
[0137]
更具体的说,在本实施例中,对如图14(a)所示的簇进行配色,得到其配色结果如图14(b)所示。在图(a)所示的冲突图中,由步骤s2生成的缝合边有4条,在经过簇内sdp算法求解,对每个顶点都进行了着色后,最优着色解使得部分缝合边连接的两个顶点颜色保持一致,而仅有一条缝合边被真正使用,如图14(b)中所示。
[0138]
更具体的说,在本实施例中,在图15中,分簇1内进行簇内图案配色后,算法对分簇2进行簇内图案配色前,算法会进行簇间配色调整。对分簇2内的顶点,该簇间配色调整算法扫描簇内每个顶点,查看其是否与已经配色的分簇1内的顶点有缝合边关系,如果有,则将该顶点颜色置为分簇1内对应顶点的颜色,如图(b)所示。这种配色称为建议配色。之所以是建议配色,是因为当前第二个簇内,顶点之间的边关系主要都是冲突边,冲突边带来的开销要远大于簇间缝合边的开销,因此,如果簇内配色算法的最佳配色结果需要调整与外部簇内顶点有缝合边关系的顶点的颜色,还是会对其进行配色调整。这种簇间配色算法,可以尽可能的减少使用簇间缝合边,从而降低算法的总分解开销。
[0139]
步骤s5、针对经过步骤s4配色操作后的子簇,得到了除分簇外的三种冲突图化简算法化简后的每个子冲突图的内部最优解。将这些子冲突图进行最优解的合并操作,获得完整的版图分解结果。
[0140]
具体的说,在本实施例中,通过如下的方法执行合并的操作,包括:
[0141]
1、对于分簇形成的每个簇,其合并过程其实在每个簇的配色过程中一起进行的。该合并过程与配色过程形成这样一个循环:对于每一个分簇,首先判断该分簇中每个顶点与其他分簇中的顶点之间是否与簇间缝合边关系。如果有,且另外那个分簇中的顶点是已经通过sdp配色算法得到了最优配色,则为该分簇中由这条簇间缝合边连接的顶点给予一个初始建议配色。然后再开始对该分簇内进行sdp配色算法求解。若无簇间缝合边,或虽然有簇间缝合边,但另外的那个分簇中仍未进行配色,则直接对该分簇进行sdp算法求解。如此以往,直至所有分簇都得到了配色,算法结束。每个簇最优配色结果的合并过程就在这个
循环的过程中得到了实现。
[0142]
2、对于桥边拆解形成的子冲突图,在得到了每个子冲突图中分解质量最好的解决方案后,由于两个子冲突图是相对独立求解的,且其之间由一条桥边(冲突边)连接,因此需要根据由桥边连接的两个顶点的颜色,对其中一个子冲突图中的配色进行调整。如果桥边连接的两个顶点的颜色相同,则会将由桥边连接的第二个子冲突图中的所有顶点颜色都偏移1来合并桥边拆解得到的子冲突图;
[0143]
3、对于隐藏掉的那些顶点,在对其进行配色时,仅需根据被隐藏顶点的邻接顶点的颜色,即可得到合适的配色;
[0144]
4、各个独立组件之间由于没有任何边关系,其求解时相对独立的,因此仅需要将各个独立组件中的配色结果直接合并,即可得到整个版图的版图分解结果。
[0145]
更具体的说,在本实施例中,对于桥边拆解形成的子冲突图,首先对有桥边拆解得到的子冲突图进行合并。在经过桥边拆解后的冲突图图16(a)中,每个子冲突图得到其最佳配色方案,如图(a)所示,如果直接将两个子冲突图合并,可能会出现如图(b)所示的子冲突图之间的冲突。针对该问题,在得到由桥边连接的两个顶点的配色后,如果其配色相同,则将第二个子冲突图中的所有顶点颜色值偏移1,来解决子冲突图之间的冲突。如图16(c)所示,下方的子冲突图中的顶点配色都偏移了1,使得桥边拆解子图合并时不带来额外的开销。
[0146]
对于隐藏掉的那些顶点,图17(a)中的顶点1由于其与其他顶点仅有两条冲突边连接,冲突边度数小于3,因此在隐藏顶点度数小于3的顶点的冲突图化简步骤中被隐藏,而在其他冲突边关系更加复杂的顶点完成配色后,被隐藏的顶点又弹出隐藏列表并根据它的两个邻接顶点的颜色获得该顶点的正确配色,如图17(b)所示。
[0147]
本实施例方法用c++语言编写,在intel(r)core(tm)i54210m四核心八线程处理器上运行,使用的操作系统是ubuntu 14.04。算法在iscas-85&89基准测试电路的金属层1层上的实验结果与文献[1]中的实验结果对比,如表1和表2所示。其中,#pattern表示的是版图文件中版图图案数量,#cn是在版图分解完成后,仍然存在的冲突边数量(conflict edge number),而#sn是在版图分解完成后,使用的缝合边数量(stitch edge number),cost表示每个版图最终的版图分解开销,其计算公式类似公式(3a)。time表示每个版图在对应算法下进行版图分解所用的时间,单位为秒。
[0148]
其中,上述的文献[1]为:[1]b.yu,k.yuan,b.zhang,d.ding,and d.z.pan,“layout decomposition for triple patterning lithography,”proc.iccad,2011.
[0149]
表4-1各版图在文献[1]与本文算法下的分解结果
[0150][0151]
表4-2各版图在文献[1]和本文算法下的分解结果
[0152][0153]
本发明未详述之处,均为本领域技术人员的公知技术。
[0154]
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1