首页> 中国专利> 基于可满足性问题SAT的可制造性热点拆线重布方法

基于可满足性问题SAT的可制造性热点拆线重布方法

摘要

基于可满足性问题SAT的可制造性热点拆线重布方法属于VLSI物理设计领域,其特性在于:它以热点的拓扑结构约束和线网连通性约束为指导,对于区域内的所有重布线网同时建立SAT约束,通过求解该约束问题完成对多条线网同时布线的过程,可以有效的控制新的可制造性热点的产生;同时,由于方法采用了基于区域的拆线重布策略,使得其效率得以保障,又通过动态边界调整和带有偏移量的两阶段拆线重布过程大大提高了版图内的热点消除比率。实验结果证明该方法可以快速有效地消除版图中的可制造性热点,与传统的针对热点的拆线重布算法相比,其收敛性更好,可以更有效地避免新热点的产生,同时保证可以找到一种存在的可行的布线方案。

著录项

  • 公开/公告号CN101894178A

    专利类型发明专利

  • 公开/公告日2010-11-24

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN201010195323.2

  • 发明设计人 蔡懿慈;周强;杨帆;

    申请日2010-05-31

  • 分类号G06F17/50;

  • 代理机构北京众合诚成知识产权代理有限公司;

  • 代理人朱琨

  • 地址 100084 北京市100084-82信箱

  • 入库时间 2023-12-18 01:09:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-07-21

    未缴年费专利权终止 IPC(主分类):G06F17/50 授权公告日:20130522 终止日期:20160531 申请日:20100531

    专利权的终止

  • 2013-05-22

    授权

    授权

  • 2011-01-05

    实质审查的生效 IPC(主分类):G06F17/50 申请日:20100531

    实质审查的生效

  • 2010-11-24

    公开

    公开

说明书

技术领域

基于可制造性问题SAT方法的针对可制造性热点的拆线重布方法属于超大规模集成电路物理设计技术领域,尤其属于物理设计中可制造性问题的技术范畴。该方法通过基于SAT方法的拆线重布致力于解决深亚微米甚至纳米工艺下的热点图形问题,对可制造性和产品成品率有重要的影响。

背景技术

1.解决可制造性问题尤其是可制造性热点的必要性

由于超大规模集成电路(ULSI)的最小特征尺寸越来越小,甚至短于曝光光源的波长。如目前曝光所使用的光波长为193nm,而所要制造的图形的线宽却是65nm甚至更小,光的衍射和干涉现象越来越严重,导致光刻得到的图形和掩膜版存在一定的变形偏差,而产生了无法避免的光学临近效应(OPE),严重影响了芯片生产的成品率和可靠性。为了改善这种变形现象,需要应用光刻矫正技术(RET),主要包括临近校正(OPC),和相移掩膜技术(PSM)。

OPC是一种对掩膜版进行修正从而抵消OPE所带来的变形的技术。PSM主要是利用反相位光的干涉抵消原理,通过在掩膜版加上一定透光率的移相模,使得硅片上关键图形边缘的光场衍射可以相互抵消,从而对OPE加以改善。然而,这两种方法或者复杂度很高或者制造成本很高,此外版图后优化技术不能完全改善所有易产生变形的版图形状,称之为热点图形,因此要求在布线过程中考虑可制造性或者有益于OPC的设计。

因为布线阶段是物理设计的最后一个阶段,可以准确的得到图形的几何信息;版图图形是否易于光刻主要取决于线网之间的互连拓扑信息,互连拓扑信息主要是在布线阶段确定的;所以布线阶段是考虑可制造性或者OPC的最有效的设计阶段,尤其是详细布线阶段和拆线重布阶段。考虑可制造性的详细布线方法,基本是通过建立一个反应光刻难易程度的费用函数,通过函数来指导布线路径的选择,这种方法无法避免不利于光刻的互连拓扑结构的版图图形生成。而拆线重布方法一般先通过光刻模拟工具模拟得到热点图形,然后通过对构成热点的线网拆线重布消除热点图形,如此不断迭代直到无法再进行改进为止。然而在迭代过程中可能会产生新的热点使得方法的收敛性无法得到保证,可满足性问题(SAT)对于布线资源和布线约束同时建模的性质可以有效地解决这个问题。目前,还没有见到将SAT方法应用于考虑可制造性的布线问题中。

2.热点图形

热点图形是不易于光刻,即在光刻过程中会产生比较严重变形,从而使得电路无法正常工作的版图图形。这种热点图形一般通过版图后优化OPC技术也很难得到改善,所以需要在布线过程中加以避免。通过UC-Berkeley的光刻模拟工具,得到了三种热点图形:“山型热点”,“锥型热点”和“门型热点”,如附图1所示,这种热点一般因为版图中的绕线形成。这些热点图形在该拆线重布方法中是提前存储在热点图形库中的,避免了重复的模拟过程。而且每一种热点图形仅代表一种拓扑结构,它可以对应于很多种具体的有所收缩或伸展的版图形状,从而大大减少了存储以及表示的空间和复杂度。

3.可满足性问题(SAT)

SAT问题是由若干个布尔变量以逻辑与、或、非的关系构成的布尔函数,求解SAT问题就是要求得一组对布尔变量的赋值使得这个布尔函数取值为真,这组赋值称为SAT问题的解。例如,是一个SAT问题,其中,v1,v2是两个布尔变量,取值0或者1。v1,v2的一组赋值v1=1,v2=1使得取值为真,故其是此SAT问题的一个解。SAT问题有一个标准的表示形式,也是方法中所选用的SAT求解器zChaff要求的输入格式,即一些子句的合取范式形式(CNF),而这些子句是文字的析取形式(DNF),文字是一个变量或者变量的非。

一个合取范式CNF,定义为:

CNF:=C1·C2·...·Ci·...·Cn,i=1,2,...,n

其中每个Ci是指一个子句,一个子句的定义为:

C:=L1+L2+...+Li+...+Lm,i=1,2,...,m

即子句是由文字组成的析取形式,其中每个文字的定义为:i=1,2,...,m,其中ai,i=1,2,...,m,是布尔变量,表示ai的非,取值与ai相反。

任何一个SAT问题都可以通过一系列逻辑化简过程得到与其等价的标准表示形式,针对方法中的SAT问题的化简方法在具体实施方式4.3中详述。例如,的标准表示形式为

拆线重布方法将拆除线网所要满足的约束和热点消除所需要满足的约束转化成一个SAT问题,通过化简变形得到与其等价的标准表示形式,然后通过求解器zChaff求解得到一组解,最终将解还原为版图信息。

发明内容

本发明的目的在于:针对目前尚没有一种利用SAT问题对布线线网和热点图形建模从而通过对多个线网同时进行拆线重布消除可制造性热点的方法的现状,提出了一种基于SAT方法的消除热点的拆线重布方法。方法针对版图中的每一个热点图形选择适当的区域,将区域内影响热点图形的线网进行拆除,然后将这些线网的连通性和热点图形的约束转化成为SAT问题,通过求解SAT问题来得到没有热点的重布结果。基于SAT方法使得该方法同时对多个线网建模、求解,即同时对多个线网进行布线,又使得布线过程中不会形成新的热点,从而使得该方法有很好的收敛性。附图4中便是本方法的具体实现流程。

本发明的特性在于:基于可满足性问题SAT的可制造性热点的拆线重布方法,其特性在于,所属方法是在计算机中,依次按以下步骤实现的:

步骤(1),计算机初始化:

输入已经完成详细布线的版图信息和该版图中所包含的所有热点信息,其中:

所述版图表示成一个二维数组[vi,j]I×J来实现,二维数组的大小等于版图的网格数I×J,网格vi,j的大小等于一个设定的线间距加上一个设定的线宽,i表示网格的行号,j表示网格的列号,i=1,2,...,I,j=1,2,...,J,版图中的所有线网编号1,2,...,K,所述线网是由构成该线网的线网段连接而成,线网中心线沿网格中心线走线,版图中线网的布线信息和障碍信息通过网格vi,j的取值表示,vi,j取值K+1,即vi,j=K+1,表示该网格是布线障碍,也就是当网格的取值超过了线网最大编号K时,该网格视为布线障碍;取值0,即vi,j=0,表示网格空闲;取值k,即vi,j=k,1≤k≤K,表示该网格被编号为k的线网占据,

所述的热点包括山型热点和锥型热点,所述两种类型的热点分别由一套对应的数据结构表示,数据结构中包括了构成山型或锥型热点的每个线网段两端的位置和长度信息,所述的热点信息是指一个由版图中所有热点构成的链表,链表的每一个元素包括热点类型,构成该热点的两个线网的编号,以及该热点所对应的所述的数据结构;

步骤(2),在计算机中设定以下功能模块:无线形限制的端点连通性模块,无线形限制的非端点连通性模块,有线形限制的起点连通性模块,有线形限制的起点连通性模块,第一有线形限制的向上扩展的连通性模块,第二有线形限制的向上扩展的连通性模块,第三有线形限制的向上扩展的连通性模块,第一有线形限制的向下扩展的连通性模块,第二有线形限制的向下扩展的连通性模块,第三有线形限制的向下扩展的连通性模块,第一有线形限制的向左扩展的连通性模块,第二有线形限制的向左扩展的连通性模块,第三有线形限制的向左扩展的连通性模块,第一有线形限制的向右扩展的连通性模块,第二有线形限制的向右扩展的连通性模块,第三有线形限制的向右扩展的连通性模块,热点约束模块,障碍约束模块,其中,

无线形限制的端点连通性模块,给出了在所述线网线形未设限制的条件下,版图中包含端点的网格为了满足线网正确连通所需要满足的约束的表达式,输入为一个包含端点的网格的行号i和列号j,和该端点属于的线网的编号k,输出为该包含端点的网格对应的约束表达式:

[(vi-1,j=k)+(vi+1,j=k)+(vi,j-1=k)+(vi,j+1=k)]

·[(vi-1,j=k)+(vi+1,j=k)+(vi,j-1≠k)+(vi,j+1≠k)]

·[(vi-1,j=k)+(vi+1,j≠k)+(vi,j-1=k)+(vi,j+1≠k)]

·[(vi-1,j=k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1=k)]

·[(vi-1,j=k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1≠k)]

·[(vi-1,j≠k)+(vi+1,j=k)+(vi,j-1=k)+(vi,j+1≠k)]

·[(vi-1,j≠k)+(vi+1,j=k)+(vi,j-1≠k)+(vi,j+1=k)]

·[(vi-1,j≠k)+(vi+1,j=k)+(vi,j-1≠k)+(vi,j+1≠k)]

·[(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1=k)+(vi,j+1=k)]

·[(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1=k)+(vi,j+1≠k)]

·[(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1=k)]

·[(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1≠k)]

其中,“+”表示逻辑或的关系,“·”表示逻辑与的关系,后面的符号表示意义与此相同,

无线形限制的非端点连通性模块,给出了在所述线网线形未设限制的条件下,版图中不包含端点的网格为了满足线网正确连通所需要满足的约束的表达式,输入为一个不包含端点的网格的行号i和列号j,和某待布线网编号k,1≤k≤K,输出为该不包含端点的网格对应的约束表达式:

[(vi,j≠k)+(vi-1,j=k)+(vi+1,j=k)+(vi,j-1=k)+(vi,j+1=k)]

·[(vi,j≠k)+(vi-1,j=k)+(vi+1,j=k)+(vi,j-1=k)+(vi,j+1≠k)]

·[(vi,j≠k)+(vi-1,j=k)+(vi+1,j=k)+(vi,j-1≠k)+(vi,j+1=k)]

·[(vi,j≠k)+(vi-1,j=k)+(vi+1,j≠k)+(vi,j-1=k)+(vi,j+1=k)]

·[(vi,j≠k)+(vi-1,j=k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1≠k)]

·[(vi,j≠k)+(vi-1,j≠k)+(vi+1,j=k)+(vi,j-1=k)+(vi,j+1=k)]

·[(vi,j≠k)+(vi-1,j≠k)+(vi+1,j=k)+(vi,j-1≠k)+(vi,j+1≠k)]

·[(vi,j≠k)+(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1=k)+(vi,j+1≠k)]

·[(vi,j≠k)+(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1=k)]

·[(vi,j≠k)+(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1≠k)]

有线形限制的起点连通性模块,给出了在所述线网线形设有限制的条件下,线网的起点为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,输出为该线网起点所在网格对应的约束表达式:

(vsi,sj=k)·[(vsi-1,sj=k)+(vsi,sj-1=k)+(vsi,sj+1=k)+(vsi+1,sj=k)]

第一有线形限制的向上扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向上时,位于线网起点与线网第一个拐点之间的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的上边界T,该位于线网起点与线网第一个拐点之间的网格的行号i和列号j,T<i<si,j=sj,输出为对应的约束表达式:

(vi,j≠k)·{[(vi,j+1=k)·(vi-1,j≠k)]+[(vi,j+1≠k)·(vi-1,j=k)]}

第二有线形限制的向上扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向上时,在线网走线发生第一个拐弯后,从这个拐弯到终点的路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的上边界T,连线发生第一个拐弯后到达的网格的行号i和列号j,T<i<si,j=sj+1,输出为对应的约束表达式:

[(vsi-1,sj≠k)·(vi,j≠k)]·[(vi,sj+2=k)·(vi,sj+3=k)·...·(vi,tj=k)]

·[(vm,tj=k)·(vm+1,tj=k)·...·(vM,tj=k)]

其中,m=min(ti,i),表示m等于ti和i中较小的那个数,M=max(ti,i),表示M等于ti和i中较大的那个数,...表示连乘,后面公式中的符号...同样表示连乘,

第三有线形限制的向上扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向上且已经扩展到了布线区域的上边界时,整个连线路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为一个线网的起点所在网格的行号si,列号sj,终点所在网格的行号ti,列号tj,布线区域的上边界T,输出为对应的约束表达式:

[(vsi-1,sj≠k)·(vT,sj≠k)]·[(vT,sj+1=k)·(vT,sj+2=k)·...·(vT,sj=k)]

·[(vT,tj=k)·(vT+1,tj=k)·...·(vti,tj=k)]

第一有线形限制的向下扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向下时,位于线网起点与线网第一个拐点之间的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的下边界B,该位于线网起点与线网第一个拐点之间的网格的行号i和列号j,si<i<B,j=sj,输出为对应的约束表达式:

(vi,j≠k)·{[(vi,j+1=k)·(vi+1,j≠k)]+[(vi,j+1≠k)·(vi+1,j=k)]}

第二有线形限制的向下扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向下时,在线网走线发生第一个拐弯后,从这个拐弯到终点的路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,终点所在网格的行号ti,列号tj,布线区域的下边界B,连线发生第一个拐弯后到达的网格的行号i和列号j,si<i<B,j=sj+1,输出为对应的约束表达式:

[(vsi+1,sj≠k)·(vi,j≠k)]·[(vi,sj+2=k)·(vi,sj+3=k)·...·(vi,tj=k)]

·[(vm,tj=k)·(vm+1,tj=k)·...·(vM,tj=k)]

其中,m=min(ti,i),表示m等于ti和i中较小的那个数,M=max(ti,i),表示M等于ti和i中较大的那个数,

第三有线形限制的向下扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向下且已经扩展到了布线区域的下边界时,整个连线路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,终点所在网格的行号ti,列号tj,布线区域的下边界B,输出为对应的约束表达式:

[(vsi+1,sj≠k)·(vB,sj≠k)]·[(vB,sj+1=k)·(vB,sj+2=k)·...·(vB,tj=k)]

·[(vB,tj=k)·(vB-1,tj=k)·...·(vti,tj=k)]

第一有线形限制的向左扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向左时,位于线网起点与线网第一个拐点之间的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的左边界L,该位于线网起点与线网第一个拐点之间的网格的行号i和列号j,i=si,L<j<sj,输出为对应的约束表达式:

(vi,j≠k)·{[(vi,j-1=k)·(vi+1,j≠k)]+[(vi,j-1≠k)·(vi+1,j=k)]}

第二有线形限制的向左扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向左时,在线网走线发生第一个拐弯后,从这个拐弯到终点的路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的左边界L,连线发生第一个拐弯后到达的网格的行号i和列号j,i=si+1,L<j<sj,输出为对应的约束表达式:

[(vsi,sj-1≠k)·(vi,j≠k)]·[(vsi+2,j=k)·(vsi+3,j=k)·...·(vti,j=k)]

·[(vti,m=k)·(vti,m+1=k)·...·(vti,M=k)]

其中,m=min(tj,j),表示m等于tj和j中较小的那个数,M=max(tj,j),表示M等于tj和j中较大的那个数,

第三有线形限制的向左扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向左且已经扩展到了布线区域的左边界时,整个连线路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,终点所在网格的行号ti,列号tj,布线区域的左边界L,输出为对应的约束表达式:

[(vsi,sj-1≠k)·(vsi,L≠k)]·[(vsi+1,L=k)·(vsi+2,L=k)·...·(vti,L=k)]

·[(vti,L=k)·(vti,L+1=k)·...·(vti,tj=k)]

第一有线形限制的向右扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向右时,位于线网起点与线网第一个拐点之间的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的右边界R,该位于线网起点与线网第一个拐点之间的网格的行号i和列号j,i=si,sj<j<R,输出为对应的约束表达式:

(vi,j≠k)·{[(vi,j+1=k)·(vi+1,j≠k)]+[(vi,j+1≠k)·(vi+1,j=k)]}

第二有线形限制的向右扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向右时,在线网走线发生第一个拐弯后,从这个拐弯到终点的路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的右边界R,连线发生第一个拐弯后到达的网格的行号i和列号j,i=si+1,sj<j<R,输出为对应的约束表达式:

[(vsi,sj+1≠k)·(vi,j≠k)]·[(vsi+2,j=k)·(vsi+3,j=k)·...·(vti,j=k)]

·[(vti,m=k)·(vti,m+1=k)·...·(vti,M=k)]

其中,m=min(tj,j),表示m等于tj和j中较小的那个数,M=max(tj,j),表示M等于tj和j中较大的那个数,

第三有线形限制的向右扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向右且已经扩展到了布线区域的右边界时,整个连线路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为一个线网的起点所在网格的行号si,列号sj,终点所在网格的行号ti,列号tj,布线区域的右边界R,输出为对应的约束表达式:

[(vsi,sj+1≠k)·(vsi,R≠k)]·[(vsi+1,R=k)·(vsi+2,R=k)·...·(vti,R=k)]

·[(vti,R=k)·(vti,R-1=k)·...·(vti,tj=k)]

热点约束模块,在每个可能形成热点的位置添加热点约束,限制热点的形成,输入为该位置网格所在的行号i,列号j,以及该网格所属的线网编号k,1≤k≤K,输出为对应的约束表达式:

其中,∏表示连乘,

障碍约束模块,对每个布线障碍的网格添加障碍约束,使得该网格不被任何线网所占有且不空闲,输入为该网格的行号i,列号j,版图最大的线网编号K,输出为对应的约束表达式:

vi,j=K+1

步骤(3),按以下步骤把所述版图划分成由网格构成的区域:

把整个所属版图划分成数个不相交但相互连接的大小由15×15~20×20个网格组成的区域,跨越多个区域的线网被由各区域边界与该线网的交点切分为多个线网段;

步骤(4),遍历步骤(3)中所述的所有区域,对每个包含热点的所述区域,进行拆线重布:

步骤(4.1),通过所述热点的位置信息判断当前区域是否包含没有经过拆线重布处理的热点图形,所述热点位置信息由热点中央线网段的两个端点中距离热点底部线网段较近的一个端点的位置表示,若该区域内部以及区域边界上没有热点,则重复该步骤(4.1)检查下一个区域,否则,执行步骤(4.2),步骤(4.2),若某热点恰好位于所述区域边界上,则通过对所述区域的四个边界平移1~2个网格单元使所述热点位于该区域内,然后记录新的边界,若不能使所述热点落到该区域内,则保留原区域边界,设区域的上、下、左、右边界分别为U、B、L、R,

步骤(4.3),若所述区域内部包含热点,则执行拆线重布过程:

步骤(4.3.1),标记所述区域内部的所有热点为已经过拆线重布处理,

步骤(4.3.2),拆除构成所述所有热点的线网,每一个被拆除的线网作为重布阶段的一个待布线网,被拆除的线网的端点为待布线网的端点,

步骤(4.4),把所述布线区域内的其他线网设置为布线障碍,

步骤(5),初始化一个约束表达式集合Set,按以下步骤建立将待布线网需要满足的约束表达式添加到Set中,其步骤如下:

步骤(5.1),遍历所述区域内的所有待布线网,对每个待布线网添加线网连通性约束,设该待布线网的编号为k,起点所在的网格为vsi,sj,终点所在的网格为vti,tj,其步骤如下:

步骤(5.1.1),若该待布线网的线形未设限制,遍历所有所属区域内的网格,若该遍历到的网格vi,j包含该待布线网k的端点,则调用所述的无线形限制的端点连通性模块,输入该网格所在的行号i和列号j,将输出的约束表达式添加到Set中,若该遍历到的网格不包含该待布线网k的端点,则调用所述的无线形限制的非端点连通性模块,输入该网格所在的行号i和列号j和该待布线网编号k,将输出的约束表达式添加到Set中,

步骤(5.1.2),若该待布线网的线形设有限制,即要求线网的连线最多包含两个拐点,

步骤(5.1.2.1),对该待布线网的起点所在的网格vsi,sj调用有线形限制的起点连通性模块,输入该待布线网的起点所在网格的行号si,列号sj,将输出的约束表达式添加到Set中,

步骤(5.1.2.2),若该待布线网的起点和重点所在的网格坐标满足tj>sj,即终点的横坐标大于起点的横坐标,则执行步骤(5.4.2.3),否则交换起点和终点,并将新的起点所在的网格设为vsi,sj,新的终点所在的网格设为vti,tj

步骤(5.1.2.3),遍历位于起点的垂直方向上且在起点上方的网格vi,j,T<i<si,j=sj,调用有线形限制的向上扩展的连通性模块一,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的上边界T,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中,

步骤(5.1.2.4),遍历位于网格vsi,sj+1的垂直方向上且在vsi,sj+1上方的网格vi,j,T<i<si,j=sj+1,调用有线形限制的向上扩展的连通性模块二,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的上边界T,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中,

步骤(5.1.2.5),对该待布线网调用有线形限制的向上扩展的连通性模块三,输入该待布线网的起点所在网格的行号si和列号sj,终点所在网格的行号ti和列号tj,布线区域的上边界T,将输出的约束表达式添加到Set中,

步骤(5.1.2.6),遍历位于起点的垂直方向上且在起点下方的网格vi,j,si<i<B,j=sj,调用有线形限制的向下扩展的连通性模块一,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的下边界B,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中,

步骤(5.1.2.7),遍历位于网格vsi,sj+1的垂直方向上且在vsi,sj+1下方的网格vi,j,T<i<si,j=sj+1,调用有线形限制的向下扩展的连通性模块二,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的下边界B,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中,

步骤(5.1.2.8),对该待布线网调用有线形限制的向下扩展的连通性模块三,输入该待布线网的起点所在网格的行号si和列号sj,终点所在网格的行号ti和列号tj,布线区域的下边界B,将输出的约束表达式添加到Set中,

步骤(5.1.2.9),若该待布线网的起点和重点所在的网格坐标满足ti>si,即终点的纵坐标大于起点的纵坐标,则执行步骤(5.4.2.10),否则交换起点和终点,并将新的起点所在的网格设为vsi,sj,新的终点所在的网格设为vti,tj

步骤(5.1.2.10),遍历位于起点的水平方向上且在起点左方的网格vi,j,i=si,L<j<sj,调用有线形限制的向左扩展的连通性模块一,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的左边界L,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中,

步骤(5.1.2.11),遍历网格vsi+1,sj的水平方向上且在vsi+1,sj左方的网格vi,j,i=si+1,L<j<sj,调用有线形限制的向左扩展的连通性模块二,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的左边界L,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中,

步骤(5.1.2.12),对该待布线网调用有线形限制的向左扩展的连通性模块三,输入该待布线网的起点所在网格的行号si和列号sj,终点所在网格的行号ti和列号tj,布线区域的左边界L,将输出的约束表达式添加到Set中,

步骤(5.1.2.13),遍历位于起点的水平方向上且在起点右方的网格vi,j,i=si,sj<j<R,调用有线形限制的向右扩展的连通性模块一,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的右边界R,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中,

步骤(5.1.2.14),遍历网格vsi+1,sj的水平方向上且在vsi+1,sj右方的网格vi,j,i=si+1,L<j<sj,调用有线形限制的向右扩展的连通性模块二,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的右边界R,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中,

步骤(5.1.2.15),对该待布线网调用有线形限制的向右扩展的连通性模块三,输入该待布线网的起点所在网格的行号si和列号sj,终点所在网格的行号ti和列号tj,布线区域的右边界R,将输出的约束表达式添加到Set中,

步骤(5.2),遍历所述区域内的所有待布线网,对每个待布线网的端点添加热点约束,设该待布线网的编号为k,起点所在的网格为vsi,sj,终点所在的网格为vti,tj,对起点所在的网格调用热点约束模块,输入行号si和列号sj,该待布线网的编号k,将输出的约束表达式添加到Set中,对终点所在的网格调用热点约束模块,输入行号ti和列号tj,该待布线网的编号k,将输出的约束表达式添加到Set中,

步骤(5.3),遍历所述区域内的所有作为布线障碍的网格,对该遍历到的网格vi,j调用障碍约束模块,输入该网格的行号i和列号j,版图中最大的线网编号K,将输出的约束表达式添加到Set中,

步骤(6),将约束表达式集合Set中的所有约束表达式合并为一个约束表达式F,该约束表达式F为Set中所有约束表达式的连乘,使得F取值为真当且仅当Set中的每个约束表达式都可以取值为真,即其中∈是属于的意思,s∈Set表示s是Set集合中的一个约束表达式,

步骤(7),对所述的约束表达式F,利用求解器zChaff求解并还原为版图信息,完成重布线过程:

若存在可行解,则在有热点约束下已完成布线,对于每个网格,其取值K+1就代表该网格被障碍覆盖,取值0代表该网格空闲,取值为k,1<k<K表示该网格被编号为k的线网占据,

若不存在可行解,则说明该区域的热点无法消除,保留原版图区域,继续执行下一个版图区域,一直到全部区域执行完毕;

步骤(8),在版图的水平和垂直方向上偏移设定的偏移之后再进行划分区域,以便对个别落在区域边界上的未处理的热点按步骤(3)~步骤(7)进行处理;

步骤(9),计算机输出结果。

本发明的以热点的拓扑结构约束和线网连通性约束为指导,对于区域内的所有重布线网同时建立SAT约束,通过求解该约束问题完成对多条线网同时布线的过程,可以有效的控制新的可制造性热点的产生;同时,由于方法采用了基于区域的拆线重布策略,使得其效率得以保障,又通过动态边界调整和带有偏移量的两阶段拆线重布过程大大提高了版图内的热点消除比率。实验结果证明该方法可以快速有效地消除版图中的可制造性热点,与传统的针对热点的拆线重布算法相比,其收敛性更好,可以更有效地避免新热点的产生,同时保证可以找到一种存在的可行的布线方案。

附图说明

图1:由UC-Berkeley的光刻模拟工具SPLAT模拟得到的热点图形:

图1.1:锥型热点

图1.2:山型热点

图1.3:门型热点;

图2:本发明中版图信息的表示形式;

图3:本发明中热点信息的表示形式:

图3.1:锥型热点数据结构:

垂直线网段SV(p1,p2)

水平线网段SH(p1,p2)

p1,p2,p3,p4分别是SV和SH的端点,每个端点pi包含其横坐标和纵坐标pi=(xi,yi),i=1,2,3,4

线网段SV和SH分别属于不同的线网

图3.2:山型热点数据结构:

左垂直线网段SL(p1,p2)

中垂直线网段SM(p3,p4)

右垂直线网段SR(p5,p6)

水平线网段SH(p2,p6)

pi=(xi,yi),i=1,2,3,4,5,6

线网段SL,SM,SR属于同一线网,线网段SH属于另一线网;

图4:本发明的具体实现流程;

图5:基于SAT非线形限制布线方案的约束示意图:

图5.1:k为线网编号,网格vi,j是线网k的端点的情况下的约束示意图,

图5.2:k为线网编号,网格vi,j不是线网k的端点的情况下的约束示意图;

图6:SAT布线基于线形布线模式的约束示意图:

该示意图为从线网源点vsi,sj开始扩展且最初扩展方向为向下时的示意图,其中,U、L、R、B分别为布线区域的上边界、左边界、右边界和下边界,标记为×的网格点vi,j,si≤i≤R,j=sj1,为连线路径的第一个拐点;

图7:基于网格的热点图形约束条件示意图:

图7.1:山型热点约束条件:

中间垂直线与底部水平线的间距为1个网格,

左垂直线段和右垂直线段的间距为2个网格,

图7.2:锥型热点约束条件:

垂直线与水平线的间距为1个网格;

图8:基于网格的避免热点图形出现的限制条件示意图:

k1为中间垂直线网的编号,vi,j是线网k1的端点,kn为任意另一线网的编号,kn≠k1。

具体实施方式

本方法已经使用C++语言在UNIX环境下开发并实现。实现的程序以已完成详细布线的版图,通过查找热点程序统计版图中热点的数目和位置信息,最终给出热点完全消除或大大减少的新版图作为输出。

下面介绍程序的工作流程:

1.计算机初始化。

程序的输入为已经完成详细布线的版图信息和该版图中所包含的所有热点信息,其中:

所述版图表示成一个二维数组[vi,j]I×J来实现,二维数组的大小等于版图的网格数I×J,网格vi,j的大小等于一个设定的线间距加上一个设定的线宽,i表示网格的行号,j表示网格的列号,i=1,2,...,I,j=1,2,...,J,版图中的所有线网编号1,2,...,K,所述线网是由构成该线网的线网段连接而成,每个线网段是线网中不包含拐点的一段线网,线网中心线沿网格中心线走线,版图中线网的布线信息和障碍信息通过网格vi,j的取值表示,vi,j取值K+1,即vi,j=K+1,表示该网格是布线障碍,也就是当网格的取值超过了线网的最大编号K时,该网格视为布线障碍;取值0,即vi,j=0,表示网格空闲;取值k,即vi,j=k,1≤k≤K,表示该网格被编号为k的线网占据,如附图2所示。

所述的热点包括山型热点和锥型热点,所述两种类型的热点分别由一套对应的数据结构表示,数据结构中包括了构成山型或锥型热点的每个线网段两端的位置和长度信息,如附图3所示,山型热点包含四个线网段,由两个不同的线网构成,锥型热点包含两个线网段,由两个不同的线网构成。所述的热点信息是指一个由版图中所有热点构成的链表,链表的每一个元素包括热点类型,构成该热点的两个线网的编号,以及该热点所对应的所述的数据结构:山型热点或锥型热点。

2.设定功能模块

程序在计算机中设定十八个功能模块:无线形限制的端点连通性模块,无线形限制的非端点连通性模块,有线形限制的起点连通性模块,有线形限制的起点连通性模块,第一有线形限制的向上扩展的连通性模块,第二有线形限制的向上扩展的连通性模块,第三有线形限制的向上扩展的连通性模块,第一有线形限制的向下扩展的连通性模块,第二有线形限制的向下扩展的连通性模块,第三有线形限制的向下扩展的连通性模块,第一有线形限制的向左扩展的连通性模块,第二有线形限制的向左扩展的连通性模块,第三有线形限制的向左扩展的连通性模块,第一有线形限制的向右扩展的连通性模块,第二有线形限制的向右扩展的连通性模块,第三有线形限制的向右扩展的连通性模块,热点约束模块,障碍约束模块。每个功能模块给出了在不同的情况下网格需要满足的约束表达式,具体的功能如下:

无线形限制的端点连通性模块,给出了在所述线网线形未设限制的条件下,版图中包含端点的网格为了满足线网正确连通所需要满足的约束的表达式,输入为一个包含端点的网格的行号i和列号j,和该端点属于的线网的编号k,输出为该包含端点的网格对应的约束表达式:

[(vi-1,j=k)+(vi+1,j=k)+(vi,j-1=k)+(vi,j+1=k)]

·[(vi-1,j=k)+(vi+1,j=k)+(vi,j-1≠k)+(vi,j+1≠k)]

·[(vi-1,j=k)+(vi+1,j≠k)+(vi,j-1=k)+(vi,j+1≠k)]

·[(vi-1,j=k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1=k)]

·[(vi-1,j=k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1≠k)]

·[(vi-1,j≠k)+(vi+1,j=k)+(vi,j-1=k)+(vi,j+1≠k)]

·[(vi-1,j≠k)+(vi+1,j=k)+(vi,j-1≠k)+(vi,j+1=k)]

·[(vi-1,j≠k)+(vi+1,j=k)+(vi,j-1≠k)+(vi,j+1≠k)]

·[(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1=k)+(vi,j+1=k)]

·[(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1=k)+(vi,j+1≠k)]

·[(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1=k)]

·[(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1≠k)]

其中,“+”表示逻辑或的关系,“·”表示逻辑与的关系,后面的符号表示意义与此相同。

该约束表达式的推导过程如下:

该网格vi,j包含待布线网k的端点,为了使该线网能正确连通,那么端点必须有连线连接,即网格vi,j的上下左右vi-1,j,vi+1,j,vi,j-1,vi,j+1四个相邻的网格任选一个取值k,而其他3个取值不等于k,附图5.1显示了其可能的4种连接情况(i)~(vi)。对应的SAT约束表达式为:

[(vi-1,j=k)·(vi+1,j≠k)·(vi,j-1≠k)·(vi,j+1≠k)]    (i)

+[(vi-1,j≠k)·(vi+1,j=k)·(vi,j-1≠k)·(vi,j+1≠k)]    (ii)    (I)

+[(vi-1,j≠k)·(vi+1,j≠k)·(vi,j-1=k)·(vi,j+1≠k)]    (iii)

+[(vi-1,j≠k)·(vi+1,j≠k)·(vi,j-1≠k)·(vi,j+1=k)]    (iv)

要将其化简为求解器可以接受的形式,即背景技术中所述的可满足性问题的标准形式。化简过程要利用德摩根定律:其中a1,a2是布尔变量,符号是等价的意思,表示左右两个表达式完全等价。化简过程如下:

设有四个布尔变量a1,a2,a3,a4,令

用a1,a2,a3,a4替换变量vi-1,j,vi+1,j,vi,j-1,vi,j+1,那么(I)变为:

(a1·a2·a3·a4)+(a1·a2·a3·a4)+(a1·a2·a3·a4)+(a1·a2·a3·a4)

利用德摩根定律:

(ii)(a1+a2+a3+a4)·(a1+a2+a3+a4)·(a1+a2+a3+a4)·(a1+a2+a3+a4)

·(a1+a2+a3+a4)·(a1+a2+a3+a4)·(a1+a2+a3+a4)·(a1+a2+a3+a4)

·(a1+a2+a3+a4)·(a1+a2+a3+a4)·(a1+a2+a3+a4)·(a1+a2+a3+a4)

变量a1,a2,a3,a4以及它们的非组成的乘积的形式,即逻辑与的形式,一共有十六种可能,构成一个集合:

{a1·a2·a3·a4,a1·a2·a3·a4,a1·a2·a3·a4,a1·a2·a3·a4,

a1·a2·a3·a4,a1·a2·a3·a4,a1·a2·a3·a4,a1·a2·a3·a4,

a1·a2·a3·a4,a1·a2·a3·a4,a1·a2·a3·a4,a1·a2·a3·a4,

a1·a2·a3·a4,a1·a2·a3·a4,a1·a2·a3·a4,a1·a2·a3,a4,}

其中,第(i)步相当于求这个集合中几个元素的或的反集,也就等于集合中剩余元素的或。第(ii)步是运用德摩根定律得到。然后将变量a1,a2,a3,a4替换为vi-1,j,vi+1,i,vi,j-1,vi,j+1就可以得到最终的表达式。

无线形限制的非端点连通性模块,给出了在所述线网线形未设限制的条件下,版图中不包含端点的网格为了满足线网正确连通所需要满足的约束的表达式,输入为一个不包含端点的网格的行号i和列号j,和某待布线网编号k,1≤k≤K,输出为该不包含端点的网格对应的约束表达式:

[(vi,j≠k)+(vi 1,j=k)+(vi+1,j=k)+(vi,j-1=k)+(vi,j+1=k)]

·[(vi,j≠k)+(vi 1,j=k)+(vi+1,j=k)+(vi,j-1=k)+(vi,j+1≠k)]

·[(vi,j≠k)+(vi-1,j=k)+(vi+1,j=k)+(vi,j-1≠k)+(vi,j+1=k)]

·[(vi,j≠k)+(vi-1,j=k)+(vi+1,j≠k)+(vi,j-1=k)+(vi,j+1=k)]

·[(vi,j≠k)+(vi-1,j=k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1≠k)]

·[(vi,j≠k)+(vi-1,j≠k)+(vi+1,j=k)+(vi,j-1=k)+(vi,j+1=k)]

·[(vi,j≠k)+(vi-1,j≠k)+(vi+1,j=k)+(vi,j-1≠k)+(vi,j+1≠k)]

·[(vi,j≠k)+(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1=k)+(vi,j+1≠k)]

·[(vi,j≠k)+(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1=k)]

·[(vi,j≠k)+(vi-1,j≠k)+(vi+1,j≠k)+(vi,j-1≠k)+(vi,j+1≠k)]

其推导过程如下:对于不包含待布线网k的端点的网格vi,j,该网格可能被分配给线网k作为连线的中间点。如果该网格被分配给线网k作为连线的中间点,为使线网正确连通,要求其周围四个相邻的网格任选两个取值为k,另外两个取值不等于k,如附图5.2所示,显示了其可能的6种连接情况(i)~(vi)。对应的SAT约束表达式为:

(vi,j=k){[(vi-1,j=k)·(vi+1,j=k)·(vi,j-1k)·(vi,j+1k)]---(i)

+[(vi-1,j=k)·(vi+1,jk)·(vi,j-1=k)·(vi,j+1k)]---(ii)

+[(vi-1,jk)·(vi+1,j=k)·(vi,j-1=k)·(vi,j+1k)]---(iii)(I)

+[(vi-1,j=k)·(vi+1,jk)·(vi,j-1k)·(vi,j+1=k)]---(iv)

+[(vi-1,jk)·(vi+1,j=k)·(vi,j-1k)·(vi,j+1=k)]---(v)

+[(vi-1,jk)·(vi+1,jk)·(vi,j-1=k)·(vi,j+1=k)]}---(vi)

其中,符号是推出的意思。和无线形限制的端点连通性模块的推导过程类似,首先将变量vi,j,vi-1,j,vi+1,j,vi,j-1,vi,j+1替换为a1,a2,a3,a4,a5,表达式(I)变为:

a1[(a2·a3·a4·a5)+(a2·a3·a4·a5)+(a2·a3·a4·a5)

+(a2·a3·a4·a5)+(a2·a3·a4·a5)+(a2·a3·a4·a5)]

然后利用定律将推出符号变为逻辑或的形式,进一步得到:

a1+[(a2·a3·a4·a5)+(a2·a3·a4·a5)+(a2·a3·a4·a5)

+(a2·a3·a4·a5)+(a2·a3·a4·a5)+(a2·a3·a4·a5)]

对于仿照无线形限制的端点连通性模块的推导过程,可以将其化为:

(a2+a3+a4+a5)·(a2+a3+a4+a5)·(a2+a3+a4+a5)·(a2+a3+a4+a5)

·(a2+a3+a4+a5)·(a2+a3+a4+a5)·(a2+a3+a4+a5)·(a2+a3+a4+a5)

·(a2+a3+a4+a5)·(a2+a3+a4+a5)

公式(I)变为

a1+[(a2+a3+a4+a5)·(a2+a3+a4+a5)·(a2+a3+a4+a5)·(a2+a3+a4+a5)

·(a2+a3+a4+a5)·(a2+a3+a4+a5)·(a2+a3+a4+a5)·(a2+a3+a4+a5)

·(a2+a3+a4+a5)·(a2+a3+a4+a5)]

然后利用分配率将上式变为:

(a1+a2+a3+a4+a5)·(a1+a2+a3+a4+a5)·(a1+a2+a3+a4+a5)·(a1+a2+a3+a4+a5)

·(a1+a2+a3+a4+a5)·(a1+a2+a3+a4+a5)·(a1+a2+a3+a4+a5)·(a1+a2+a3+a4+a5)

·(a1+a2+a3+a4+a5)·(a1+a2+a3+a4+a5)

然后将变量a1,a2,a3,a4替换为vi-1,j,vi+1,j,vi,j-1,vi,j+1就可以得到最终的表达式。下面的推导过程仿照无线形限制的端点连通性模块和无线形限制的非端点连通性模块的推导过程。

有线形限制的起点连通性模块,给出了在所述线网线形设有限制的条件下,线网的起点为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,输出为该线网起点所在网格对应的约束表达式:

(vsi,sj=k)·[(vsi-1,sj=k)+(vsi,sj-1=k)+(vsi,sj+1=k)+(vsi+1,sj=k)]

该公式的推导过程如下:

网格vi,j包含线网k的起点vsi,sj,为使得起点保持连通性,要求其上下左右四个相邻的网格任选一个取值为k。

第一有线形限制的向上扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向上时,位于线网起点与线网第一个拐点之间的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的上边界T,该位于线网起点与线网第一个拐点之间的网格的行号i和列号j,T<i<si,j=sj,输出为对应的约束表达式:

(vi,j≠k)·{[(vi,j+1=k)·(vi-1,j≠k)]+[(vi,j+1≠k)·(vi-1,j=k)]}

该公式的推导过程如下:

如附图6所示,如果连线从起点vsi,sj开始,起初向上走线,如果走线已经到了网格vi,j,vi,j位于起点垂直方向的上方,那么vi,j可以右转或者继续向上走线,对应的约束表达式为:

[(vsi-1,j=k)·(vi,j=k)]

{[(vi,j+1=k)·(vi-1,jk)]+[(vi,j+1k)·(vi-1,j=k)]},T<i<si,j=sj

然后按照无线形限制的非端点连通性模块的公式化简过程对该公式化简得到最终形式。第一有线形限制的向下扩展的连通性模块、第一有线形限制的向左扩展的连通性模块、第一有线形限制的向右扩展的连通性模块的推导过程与该推导过程同理。

第二有线形限制的向上扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向上时,在线网走线发生第一个拐弯后,从这个拐弯到终点的路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的上边界T,连线发生第一个拐弯后到达的网格的行号i和列号j,T<i<si,j=sj+1,输出为对应的约束表达式:

[(vsi-1,sj≠k)·(vi,j≠k)]·[(vi,sj+2=k)·(vi,sj+3=k)·...·(vi,tj=k)]

·[(vm,tj=k)·(vm+1,tj=k)·...·(vM,tj=k)]

其中,m=min(ti,i),表示m等于ti和i中较小的那个数,M=max(ti,i),表示M等于ti和i中较大的那个数,即当ti>i时,M=ti,m=i,当ti<i时,M=i,m=ti,...表示连乘,后面公式中的符号...同样表示连乘。

该公式的推导过程如下:

如果从起点向上走后,发生了第一个转弯,即走线走到了附图6中所示的标记为叉的点,因为走线最多只能有两个拐点的限制,此时整个走线路径就被确定了,即先向右连接到终点的垂直方向上,然后再沿该垂直方向连接到终点,要求这个路径上的所有网格取值都为k。对应的约束表达式为:

[(vsi-1,j=k)·(vi,j=k)]{[(vi,sj+2=k)·(vi,sj+3=k)·...·(vi,tj=k)]

·[(vm,tj=k)·(vm+1,tj=k)·...·(vM,tj=k)]}

其中,m=min(ti,i),M=max(ti,i),T<i<si,j=sj+1

然后按照无线形限制的非端点连通性模块的公式化简过程对该公式化简得到最终形式。第二有线形限制的向下扩展的连通性模块、第二有线形限制的向左扩展的连通性模块、第二有线形限制的向右扩展的连通性模块的推导过程与该推导过程同理。

第三有线形限制的向上扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向上且已经扩展到了布线区域的上边界时,整个连线路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为一个线网的起点所在网格的行号si,列号sj,终点所在网格的行号ti,列号tj,布线区域的上边界T,输出为对应的约束表达式:

[(vsi-1,sj≠k)·(vT,sj≠k)]·[(vT,sj+1=k)·(Vt,sj+2=k)·...·(vT,tj=k)]

·[(vT,tj=k)·(vT+1,tj=k)·...·(vti,tj=k)]

该公式的推导过程如下:

如果起点一直向上走直到布线区域的下边界T,此时不能再向上走,而必须向右转,然后转向垂直方向走到终点。对应的约束表达式为:

[(vsi-1,sj=k)·(vT,sj=k)][(vT,sj+1=k)·(vT,sj+2=k)·...·(vT,tj=k)]

·[(vT,tj=k)·(vT+1,tj=k)·...·(vti,tj=k)]

然后按照无线形限制的非端点连通性模块的公式化简过程对该公式化简得到最终形式。第三有线形限制的向下扩展的连通性模块、第三有线形限制的向左扩展的连通性模块、第三有线形限制的向右扩展的连通性模块的推导过程与该推导过程同理。

第一有线形限制的向下扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向下时,位于线网起点与线网第一个拐点之间的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的下边界B,该位于线网起点与线网第一个拐点之间的网格的行号i和列号j,si<i<B,j=sj,输出为对应的约束表达式:

(vi,j≠k)·{[(vi,j+1=k)·(vi+1,j≠k)]+[(vi,j+1≠k)·(vi+1,j=k)]}

第二有线形限制的向下扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向下时,在线网走线发生第一个拐弯后,从这个拐弯到终点的路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,终点所在网格的行号ti,列号tj,布线区域的下边界B,连线发生第一个拐弯后到达的网格的行号i和列号j,si<i<B,j=sj+1,输出为对应的约束表达式:

[(vsi+1,sj≠k)·(vi,j≠k)]·[(vi,sj+2=k)·(vi,sj+3=k)·...·(vi,tj=k)]

·[(vm,tj=k)·(vm+1,tj=k)·...·(vM,tj=k)]

其中,m=min(ti,i),表示m等于ti和i中较小的那个数,M=max(ti,i),表示M等于ti和i中较大的那个数,即当ti>i时,M=ti,m=i,当ti<i时,M=i,m=ti。

第三有线形限制的向下扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向下且已经扩展到了布线区域的下边界时,整个连线路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,终点所在网格的行号ti,列号tj,布线区域的下边界B,输出为对应的约束表达式:

[(vsi+1,sj≠k)·(vB,sj≠k)]·[(vB,sj+1=k)·(vB,sj+2=k)·...·(vB,tj=k)]

·[(vB,tj=k)·(vB-1,tj=k)·...·(vti,tj=k)]

第一有线形限制的向左扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向左时,位于线网起点与线网第一个拐点之间的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的左边界L,该位于线网起点与线网第一个拐点之间的网格的行号i和列号j,i=si,L<j<sj,输出为对应的约束表达式:

(vi,j≠k)·{[(vi,j-1=k)·(vi+1,j≠k)]+[(vi,j-1≠k)·(vi+1,j=k)]}

第二有线形限制的向左扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向左时,在线网走线发生第一个拐弯后,从这个拐弯到终点的路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的左边界L,连线发生第一个拐弯后到达的网格的行号i和列号j,i=si+1,L<j<sj,输出为对应的约束表达式:

[(vsi,sj-1≠k)·(vi,j≠k)]·[(vsi+2,j=k)·(vsi+3,j=k)·...·(vti,j=k)]

·[(vti,m=k)·(vti,m+1=k)·...·(vti,M=k)]

其中,m=min(tj,j),表示m等于tj和j中较小的那个数,M=max(tj,j),表示M等于tj和j中较大的那个数,即当tj>j时,M=tj,m=j,当tj<j时,M=j,m=tj。

第三有线形限制的向左扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向左且已经扩展到了布线区域的左边界时,整个连线路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,终点所在网格的行号ti,列号tj,布线区域的左边界L,输出为对应的约束表达式:

[(vsi,sj-1≠k)·(vsi,L≠k)]·[(vsi+1,L=k)·(vsi+2,L=k)·...·(vti,L=k)]

·[(vti,L=k)·(vsi,L+1=k)·...·(vti,tj=k)]

第一有线形限制的向右扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向右时,位于线网起点与线网第一个拐点之间的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的右边界R,该位于线网起点与线网第一个拐点之间的网格的行号i和列号j,i=si,sj<j<R,输出为对应的约束表达式:

(vi,j≠k)·{[(vi,j+1=k)·(vi+1,j≠k)]+[(vi,j+1≠k)·(vi+1,j=k)]}

第二有线形限制的向右扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向右时,在线网走线发生第一个拐弯后,从这个拐弯到终点的路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为当前待布线网的起点所在网格的行号si,列号sj,布线区域的右边界R,连线发生第一个拐弯后到达的网格的行号i和列号j,i=si+1,sj<j<R,输出为对应的约束表达式:

[(vsi,sj+1≠k)·(vi,j≠k)]·[(vsi+2,j=k)·(vsi+3,j=k)·...·(vti,j=k)]

·[(vti,m=k)·(vti,m+1=k)·...·(vti,M=k)]

其中,m=min(tj,j),表示m等于tj和j中较小的那个数,M=max(tj,j),表示M等于tj和j中较大的那个数,即当tj>j时,M=tj,m=j,当tj<j时,M=j,m=tj。

第三有线形限制的向右扩展的连通性模块,给出了在所述线网线形设有限制的条件下,若起点最初的扩展方向为向右且已经扩展到了布线区域的右边界时,整个连线路径上的网格为了满足该线网正确连通所需要满足的约束的表达式,其中,线网线形的限制是指该线网的连线最多包含两个拐点,输入为一个线网的起点所在网格的行号si,列号sj,终点所在网格的行号ti,列号tj,布线区域的右边界R,输出为对应的约束表达式:

[(vsi,sj+1≠k)·(vsi,R≠k)]·[(vsi+1,R=k)·(vsi+2,R=k)·...·(vti,R=k)]

·[(vti,R=k)·(vti,R-1=k)·...·(vti,tj=k)]

热点约束模块,在每个可能形成热点的位置添加热点约束,限制热点的形成,输入为该位置网格所在的行号i,列号j,以及该网格所属的线网编号k,1≤k≤K,输出为对应的约束表达式:

其中,∏表示连乘。

针对SPLAT模拟得到锥型热点和山型热点图形,两种热点基于网格的约束条件如附图7所示。避免它们在版图中出现的限制条件是类似的。在一个线网的线端位置不应该出现另外一个线网与之形成垂直关系的情况,如附图8所示,叉点为一个编号为k线网的端点,如果存在了垂直方向的连线,那么要求标记为圆点的网格不被其他任何一个线网所占有。对应的约束表达式如下:

考虑方向性,即附图8顺时针旋转90°,180°,270°得到的热点图形,为了避免其产生,按照上面的思路加入相应约束。那么对于一个线网端点,避免热点产生的所有约束便是四个方向约束的交集,即:

障碍约束模块,对每个布线障碍的网格添加障碍约束,使得该网格不被任何线网所占有且不空闲,输入为该网格的行号i,列号j,版图最大的线网编号K,输出为对应的约束表达式:

vi,j=K+1

其中K+1大于最大的线网编号K,就说明该网格不被任何线网所占有,且其取值不为0,说明该网格不空闲,所以该网格一定是布线障碍。

3.版图区域划分

因为直接用SAT对初始版图建模的规模太大复杂度过高,所以需将版图划分成较小的区域进行建模,把整个所属版图划分成数个不相交但相互连接的大小由15×15~20×20个网格组成的区域,跨越多个区域的线网被由各区域边界与该线网的交点切分为多个线网段。下面的第4步到第8步就是依次遍历每个区域,对每个包含热点的区域进行拆线重布的具体过程。

4.布线区域初始化

遍历所述的所有区域,对每个包含热点的所述区域,进行拆线重布:

通过所述热点的位置信息判断当前区域是否包含没有经过拆线重布处理的热点图形,所述热点位置信息由热点中央线网段的两个端点中距离热点底部线网段较近的一个端点的位置表示,如图3中山型热点的位置由点p2表示,锥型热点的位置由p4表示。若该区域内部以及区域边界上没有热点,则检查下一个区域;若某热点恰好位于所述区域边界上,则通过对所述区域的四个边界平移1~2个网格单元使所述热点位于该区域内,然后记录新的边界,若不能使所述热点落到该区域内,则保留原区域边界,设区域的上、下、左、右边界分别为U、B、L、R。若所述区域内部包含热点,则执行拆线重布过程:

标记所述区域内部的所有热点为已经过拆线重布处理,使得下次不再处理该已经经过拆线重布的热点。拆除构成所述所有热点的线网,每一个被拆除的线网作为重布阶段的一个待布线网,被拆除的线网的端点为待布线网的端点。把所述布线区域内的其他线网设置为布线障碍。

5.添加可满足性问题的约束表达式

初始化一个约束表达式集合Set,按以下步骤建立将待布线网需要满足的约束表达式添加到Set中,其步骤如下:

首先添加线网连通性约束:遍历所述区域内的所有待布线网,对每个待布线网添加线网连通性约束,设该待布线网的编号为k,起点所在的网格为vsi,sj,终点所在的网格为vti,tj,其步骤如下:

若该待布线网的线形未设限制,遍历所有所属区域内的网格,若该遍历到的网格vi,j包含该待布线网k的端点,则调用所述的无线形限制的端点连通性模块。输入该网格所在的行号i和列号j,将输出的约束表达式添加到Set中。若该遍历到的网格不包含该待布线网k的端点,则调用所述的无线形限制的非端点连通性模块,输入该网格所在的行号i和列号j和该待布线网编号k,将输出的约束表达式添加到Set中。

若该待布线网的线形设有限制,即要求线网的连线最多包含两个拐点。

(1)对该待布线网的起点所在的网格vsi,sj调用有线形限制的起点连通性模块,输入该待布线网的起点所在网格的行号si,列号sj,将输出的约束表达式添加到Set中。

(2)若该待布线网的起点和重点所在的网格坐标满足tj>sj,即终点的横坐标大于起点的横坐标,则执行步骤(5.4.2.3),否则交换起点和终点,并将新的起点所在的网格设为vsi,sj,新的终点所在的网格设为vti,tj

(3)遍历位于起点的垂直方向上且在起点上方的网格vi,j,T<i<si,j=sj,调用有线形限制的向上扩展的连通性模块一,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的上边界T,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中。

(4)遍历位于网格vsi,sj+1的垂直方向上且在vsi,sj+1上方的网格vi,j,T<i<si,j=sj+1,调用有线形限制的向上扩展的连通性模块二,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的上边界T,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中。

(5)对该待布线网调用有线形限制的向上扩展的连通性模块三,输入该待布线网的起点所在网格的行号si和列号sj,终点所在网格的行号ti和列号tj,布线区域的上边界T,将输出的约束表达式添加到Set中。

(6)遍历位于起点的垂直方向上且在起点下方的网格vi,j,si<i<B,j=sj,调用有线形限制的向下扩展的连通性模块一,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的下边界B,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中。

(7)遍历位于网格vsi,sj+1的垂直方向上且在vsi,sj+1下方的网格vi,j,T<i<si,j=sj+1,调用有线形限制的向下扩展的连通性模块二,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的下边界B,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中。

(8)对该待布线网调用有线形限制的向下扩展的连通性模块三,输入该待布线网的起点所在网格的行号si和列号sj,终点所在网格的行号ti和列号tj,布线区域的下边界B,将输出的约束表达式添加到Set中。

(9)若该待布线网的起点和重点所在的网格坐标满足ti>si,即终点的纵坐标大于起点的纵坐标,则执行步骤(5.4.2.10),否则交换起点和终点,并将新的起点所在的网格设为vsi,sj,新的终点所在的网格设为vti,tj

(10)遍历位于起点的水平方向上且在起点左方的网格vi,j,i=si,L<j<sj,调用有线形限制的向左扩展的连通性模块一,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的左边界L,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中。

(11)遍历网格vsi+1,sj的水平方向上且在vsi+1,sj左方的网格vi,j,i=si+1,L<j<sj,调用有线形限制的向左扩展的连通性模块二,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的左边界L,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中。

(12)对该待布线网调用有线形限制的向左扩展的连通性模块三,输入该待布线网的起点所在网格的行号si和列号sj,终点所在网格的行号ti和列号tj,布线区域的左边界L,将输出的约束表达式添加到Set中。

(13)遍历位于起点的水平方向上且在起点右方的网格vi,j,i=si,sj<j<R,调用有线形限制的向右扩展的连通性模块一,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的右边界R,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中。

(14)遍历网格vsi+1,sj的水平方向上且在vsi+1,sj右方的网格vi,j,i=si+1,L<j<sj,调用有线形限制的向右扩展的连通性模块二,输入该待布线网的起点所在网格的行号si,列号sj,布线区域的右边界R,该遍历到的网格的行号i和列号j,将输出的约束表达式添加到Set中。

(15)对该待布线网调用有线形限制的向右扩展的连通性模块三,输入该待布线网的起点所在网格的行号si和列号sj,终点所在网格的行号ti和列号tj,布线区域的右边界R,将输出的约束表达式添加到Set中。

然后添加热点约束:遍历所述区域内的所有待布线网,对每个待布线网的端点添加热点约束,因为只有在线网的端点位置才有可能产生新的热点。设该待布线网的编号为k,起点所在的网格为vsi,sj,终点所在的网格为vti,tj,对起点所在的网格调用热点约束模块,输入行号si和列号sj,该待布线网的编号k,将输出的约束表达式添加到Set中,对终点所在的网格调用热点约束模块,输入行号ti和列号tj,该待布线网的编号k,将输出的约束表达式添加到Set中。

然后添加障碍约束:遍历所述区域内的所有作为布线障碍的网格,对该遍历到的网格vi,j调用障碍约束模块,输入该网格的行号i和列号j,版图中最大的线网编号K,将输出的约束表达式添加到Set中。

6.合并约束表达式

将约束表达式集合Set中的所有约束表达式合并为一个约束表达式F,使得该约束表达式可以直接通过求解器求解。该约束表达式F为Set中所有约束表达式的连乘,使得F取值为真当且仅当Set中的每个约束表达式都可以取值为真,即其中∈是属于的意思,s∈Set表示s是Set集合中的一个约束表达式。

7.利用求解器zChaff求解约束表达式并还原为版图信息。

对第6步中的约束表达式F,利用求解器zChaff求解并还原为版图信息。

若存在可行解,则在有热点约束下已完成布线,对于每个网格,其取值K+1就代表该网格被障碍覆盖,取值0代表该网格空闲,取值为k,1<k<K表示该网格被编号为k的线网占据,将新得到的该区域替换原版图的该区域;若不存在可行解,则说明该区域的热点无法消除,保留原版图区域。

继续执行下一个版图区域,一直到全部区域执行完毕。

8.第二阶段的热点检查和拆线重布

经过以上步骤,第一阶段的热点检查和拆线重布已经完成,版图中的热点已大大减少,但是还需要对个别跨在区域边界上没有得到处理的热点进行进一步的处理。重新对整个版图进行划分,与第2步有所不同的是,区域划分并非从版图的边界处开始,而是在水平和垂直方向上偏移一定的偏移量后再进行划分,程序中取偏移量为布线区域的一半大小,使得第一阶段遗留的热点恰好落在区域的中间区域。然后转第3步。

9.输出结果

如下表所示便是程序在12个包含热点图形的版图上运行后的结果,每一列分别表示版图的大小(以网格数目为单位),线网数目,平均布线密度,初始的热点数目,第一阶段和第二阶段的运行时间以及结束时剩余的热点数目,最终热点消除的比例。可以看出,我们的方法在较短的时间内消除了版图中的绝大部分热点,消除比例基本都在90%以上。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号