基于并行计算的大规模集成电路通道布线系统
技术领域
本发明属于集成电路设计领域,尤其是属于互连线线宽在65nm及以下的集成电路制造工艺下的集成电路设计优化的技术范畴。
背景技术
集成电路是由设计者借助于电子设计自动化(EDA)工具设计出集成电路版图,交付集成电路制造商,通过电路掩膜制备(Mask)、以及对晶片(Wafer)进行氧化、掺杂、光刻等一系列的制作工艺将电路掩膜转移到晶片上,从而实现其电路功能。对于数字电路设计来说,版图设计流程包括行为级综合,逻辑综合,物理设计和版图优化等步骤。其中,物理设计是最为耗时,对芯片性能影响最大的步骤,它又分为布图规划,布局,时钟树综合,布线等步骤。通道布线是指在布线过程中,总体布线确定线网拓扑结构和布线层分配之后,详细布线之前在布线单元行内进行走线通道分配的阶段。
在芯片制造中,目前主流的紫外线光刻线宽度是65nm/45nm,并正在朝着28nm/22nm的节点发展。由于特征尺寸的减小,芯片上可容纳晶体管数量相应增加,电路设计的问题规模和复杂度也随之不断提高,这使得传统的布线工具必须具备处理更大规模复杂问题的能力。另一方面,在65nm及以下的制造工艺节点下,金属互连线上的时延已经占到了整个电路时延的百分之七十以上,互连线之间的串扰问题成为了影响芯片时延性能的一个重要因素。因此,传统的布线工具在处理这些制造工艺的电路设计时,必须考虑串扰优化。
发明内容
针对上述现有技术的不足,本发明的目的在于提供一种基于并行计算的大规模集成电路通道布线的方法。该方法提出了一种分布式计算的框架,能够将不同布线层上不同布线单元行内的通道布线问题划分成各自独立的子问题,通过并行计算的方式进行求解,从而达到对原问题求解的加速。同时,在求解每一个子问题的时候,通过时延和串扰估计模型,计算并优化关键路径上的线网走线上的时延。
本发明的另一个目的在于提供了一种基于并行计算的大规模集成电路通道布线系统。
为解决上述技术问题,本发明采用如下技术方案:
一种基于并行计算的大规模集成电路通道布线的方法,将不同层上的通道布线问题划分成每个布线单元行内的通道布线子问题,再将所述通道布线子问题抽象成一系列的布线单元内部的线性分配问题进行求解;基于分布式计算框架,对于待处理的所述通道布线子问题,通过多线程并行处理;对于所述的每一个布线单元内部的线性分配问题,通过对拥挤度,时延及串扰参数的建模,在所述线性分配问题中通过最小化分配费用来优化这些目标。
一种基于并行计算的大规模集成电路通道布线系统,其特征在于,包括以下模块:文件读取模块、多线程并行模块、布线单元行数据生成模块、线性分配问题构造模块、线性分配问题求解模块和通道分配后优化模块;
所述文件读取模块基于OpenAccess数据平台,使用内置的lef2oa和def2oa命令将输入的LEF/DEF文件转换为OpenAccess内部数据结构,转换为OpenAccess内部数据结构之后,对于标准单元、单元实例、布线层及布线资源这些静态数据,直接使用OpenAccess的数据接口,对于互连线和通孔这些需要修改更新的动态数据,进一步将这些信息存放于所述的构造好的OpenAccess内部数据结构中,以便进行后续的操作;所述LEF/DEF是工业界标准的版图信息和工艺信息描述格式;
在所述多线程并行模块中将布图区域在水平和垂直方向划分成若干布线区域,对于同一走线方向的不同布线层上的布线区域,将在同一线程中进行处理,当前工作的线程自底向上依次处理不同的布线层上每一个布线单元行中的通道布线问题;
在所述布线单元行数据生成模块中将每一布线单元行中的通道布线问题划分成一组按顺序排列的布线单元中通道布线子问题进行求解,首先按照布线单元的大小,将总体布线之后的全局走线划分成一系列相互连接的走线段,线性分配问题处理的对象就是这些单元内部的走线段,同时将布线资源、标准单元、布线障碍、预布线信息从OpenAccess数据库中读取并转换为OpenAccess内部数据结构,同时,根据单元行内线网对之间的平行走线长度,估算它们之间的串扰值;
在所述线性分配问题构造模块中对于每一个布线单元,从走线段到走线通道的线性分配问题,待分配的对象为单元内部的走线段,分配的容器为不同的走线通道,在最终的分配方案中,每一个走线段被分配且仅被分配给某一个走线通道,对于第i个走线段和第j个走线通道,其分配费用Cij由以下方法确定:
a.若所述第i个走线段对应的走线起始于该布线单元,则所述第i个走线段默认的走线通道是单元中心的走线通道mid,所述第j个走线通道对应的分配费用为所述第j个走线通道减去所述单元中心的走线通道mid的绝对值,若不然,在前一个布线单元中,所述第i个走线段的前一走线段分配至第k个走线通道,则所述第j个走线通道对应的分配费用为所述第j个走线通道减去所述第k个走线通道的绝对值;
b.若所述第j个走线通道上存在布线障碍,或者与所述第i个走线段不同线网的预布线,那么所述第j个走线通道的分配费用将加上相应的惩罚权重;
c.若在前一个布线单元中,从所述第k个走线通道到所述第j个走线通道之间的通道上被分配有另外线网的走线,那么如果把所述第i个走线段分配到所述第j个走线通道,该走线段将与其他走线相交叉,从而产生拥挤区域,因此,所述第j个走线通道的分配费用将加上相应的惩罚权重;
d.若所述第i个走线段属于关键时延线网,并且在前一个布线单元中,所述第j-1个走线通道或第j+1个走线通道上被分配有其他线网的走线段,那么将所述第i个走线段分配到所述第j个走线通道上将有可能与其他线网相邻,产生串扰,因此,所述第j个走线通道的分配费用将被加上相应的惩罚权重;
e.若所述第i个走线段属于非关键时延线网,并且在前一布线单元中,另一与之有较大串扰值的线网有走线段分配至所述第j-1个走线通道或第j+1个走线通道,那么所述第j个走线通道的分配费用将被加上相应的惩罚权重,通过上述五部分的权重,最终确定所述分配费用Cij的分配费用;所述i、j、k为正整数,Cij为分配费用,mid为单元中心的走线通道;
在所述线性分配问题求解模块中得到线性分配问题的解,确定最终的走线道分配方案;
在所述通道分配后优化模块中在确定每个单元通道分配方案之后,对于相邻的具有较大串扰值的线网走线段,通过动态规划的方法,推移其他相邻走线,得到新的分配方案,对于相邻单元之间,处于不同走线道上同一线网走线段,对连接点的位置进行优化,保证没有重叠的连接线段。
上述技术方案具有如下有益效果:
本发明提出了一种基于并行计算的大规模集成电路通道布线系统,在上述通道布线框架中,提出了互连串扰优化的方法。本发明能够快速有效的处理超大规模的集成电路通道布线问题,同时能够解决互连线线宽在65nm及以下的工艺节点出现的互连串扰问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图对本专利进行详细说明。
附图说明
图1为通道布线问题示意图。
图2为多线程通道布线示意图。
图3为本发明输入输出示意图。
图4为本发明模块框架示意图。
图5为多线程框架示意图。
图6为单元内通道布线问题示意图。
图7为通道分配后时延优化示意图。
图8为走线段连接点位置优化示意图。
图9为本发明程序流程图。
具体实施方式
下面结合附图对本发明的优选实施例进行详细介绍。
本实施例设计了一种基于并行计算的大规模集成电路通道布线的方法,将不同层上的通道布线问题划分成每个布线单元行内的通道布线子问题,再将这些子问题抽象成一系列的布线单元内部的线性分配问题。该问题待分配的对象为处于布线单元内部的不同线网的布线段,分配的容器为不同的走线通道,如图1所示。该方法基于分布式计算框架,对于待处理的通道布线子问题,通过多线程并行处理,如图2所示。对于每一个布线单元内部的线性分配问题,该方法通过对拥挤度,时延,串扰等参数的建模,在线性分配问题中通过最小化分配费用来优化这些目标。
首先,结合图3对本发明得到输入输出进行说明。输入包括包含总体布线版图信息的DEF文件和包含工艺信息的LEF文件,输出是包含通道布线版图信息的DEF文件。LEF/DEF是工业界标准的版图信息和工艺信息描述格式。通过调用OpenAccess(OA)数据平台提供的接口,进行数据/程序的交互以及输入输出的转换。
然后,结合图4对本发明进行详细阐述。
(1)文件读取模块1
基于OA数据平台,使用内置的lef2oa和def2oa命令将输入的LEF/DEF文件转换为OA内部的数据结构。转换为OA的数据结构之后,对于标准单元,单元实例,布线层,布线资源等静态数据,该发明直接使用OA的数据接口。对于互连线,通孔等该发明需要修改更新的动态数据,进一步将这些信息存放于该发明构造好的内部数据结构中,以便进行后续的操作。
(2)多线程并行框架模块2
本发明将布图区域在水平和垂直方向划分成若干布线区域,对于同一走线方向的不同布线层上的布线区域,将在同一线程中进行处理,如图5所示。当前工作的线程自底向上依次处理不同的布线层上每一个布线单元行中的通道布线问题。这样每一个工作线程所访问的数据量都是均衡的,工作负载相对平衡,能够最大效率的利用并行处理器的工作能力。
(3)布线单元行数据生成模块3
本发明将每一布线单元行中的通道布线问题划分成一组按顺序排列的布线单元中通道布线子问题进行求解。首先按照布线单元的大小,将总体布线之后的全局走线划分成一系列相互连接的走线段。线性分配问题处理的对象就是这些单元内部的走线段,如图6所示。同时本发明将布线资源,标准单元,布线障碍,预布线信息从OA数据库中读取并转换为内部数据结构。同时,本发明根据单元行内线网对之间的平行走线长度,估算它们之间的串扰值。
(4)线性分配问题构造模块4
对于每一个布线单元,本发明构造从走线段到走线通道的线性分配问题,待分配的对象为单元内部的走线段,分配的容器为不同的走线通道。在最终的分配方案中,每一个走线段被分配且仅被分配给某一个走线通道。对于走线段i和走线通道j,其分配费用Cij由以下方法确定:
在所述线性分配问题构造模块(4)中对于每一个布线单元,从走线段到走线通道的线性分配问题,待分配的对象为单元内部的走线段,分配的容器为不同的走线通道,在最终的分配方案中,每一个走线段被分配且仅被分配给某一个走线通道,对于第i个走线段和第j个走线通道,其分配费用Cij由以下方法确定:
a.若所述第i个走线段对应的走线起始于该布线单元,则所述第i个走线段默认的走线通道是单元中心的走线通道mid,所述第j个走线通道对应的分配费用为所述第j个走线通道减去所述单元中心的走线通道mid的绝对值,若不然,在前一个布线单元中,所述第i个走线段的前一走线段分配至第k个走线通道,则所述第j个走线通道对应的分配费用为所述第j个走线通道减去所述第k个走线通道的绝对值;
b.若所述第j个走线通道上存在布线障碍,或者与所述第i个走线段不同线网的预布线,那么所述第j个走线通道的分配费用将加上相应的惩罚权重;
c.若在前一个布线单元中,从所述第k个走线通道到所述第j个走线通道之间的通道上被分配有另外线网的走线,那么如果把所述第i个走线段分配到所述第j个走线通道,该走线段将与其他走线相交叉,从而产生拥挤区域,因此,所述第j个走线通道的分配费用将加上相应的惩罚权重;
d.若所述第i个走线段属于关键时延线网,并且在前一个布线单元中,所述第j-1个走线通道或第j+1个走线通道上被分配有其他线网的走线段,那么将所述第i个走线段分配到所述第j个走线通道上将有可能与其他线网相邻,产生串扰,因此,所述第j个走线通道的分配费用将被加上相应的惩罚权重;
e.若所述第i个走线段属于非关键时延线网,并且在前一布线单元中,另一与之有较大串扰值的线网有走线段分配至所述第j-1个走线通道或第j+1个走线通道,那么所述第j个走线通道的分配费用将被加上相应的惩罚权重,通过上述五部分的权重,最终确定所述分配费用Cij的分配费用;所述i、j、k为正整数,Cij为分配费用,mid为单元中心的走线通道。
(5)线性分配问题求解模块5
本发明在匈牙利算法的基础上,针对该线性分配问题的特点,编写了自己的线性分配问题求解模块。通过该模块,得到线性分配问题的解,确定最终的走线道分配方案。
(6)单元行通道分配后优化模块6
在确定每个单元通道分配方案之后,对于相邻的具有较大串扰值的线网走线段,通过动态规划的方法,推移其他相邻走线,得到新的分配方案,如图7所示。对于相邻单元之间,处于不同走线道上同一线网走线段,对连接点的位置进行优化,保证没有重叠的连接线段,如图8所示。
进一步的,本实施例现结合图9对其进行详细阐述:
采用45nm工艺的一个测试用例总体布线后LEF/DEF版图输出作为实例,用本发明的方法对其进行通道布线。该测试用例具有6层金属布线层M1-M6,其中M1/M2为单元Pin所在层,M1到M5为单倍走线层,线宽和线间距为70nm,每个布线单元中具有8个走线通道。M6为双倍走线层,线宽和线间距为140nm,每个布线单元中具有4个走线通道。M1/M3/M5为垂直方向,M2/M4/M6为水平方向。:
步骤1)版图文件和工艺信息文件的读入
待处理的版图文件为test.def,工艺信息和标准单元库文件为tech45.lef,基于OpenAccess数据平台,使用命令lef2oa和def2oa将DEF/LEF文件信息转化为OA的数据结构,生成了/test/test/layout的版图视图和/tech45的单元库。通过调用OA提供的数据接口函数可以从这些目录中读取所需要的版图数据和布线工艺信息。之后将这些数据和信息转换存储本发明自定义的数据结构中。
步骤2)生成工作线程
按照12个布线单元行为一组,将M1/M3/M5垂直划分成若干布线区域,将M2/M4/M6水平划分成若干布线区域。工作线程1处理M1/M3/M5的第一个布线区域,工作线程2处理M2/M4/M6的第一个布线区域,以此类推。布线区域存储于公共的处理池中,当前空闲的工作线程从处理池中取得它要工作的布线区域,并从处理池中删除。
步骤3)布线单元行数据生成
对当前待处理的布线区域,依次处理其中不同金属层上的布线单元行。首先计算并生成各层上的走线通道数据,将金属走线由具有大小位置信息的矩形图形抽象成具有起始终止点的对应于某一走线通道的线图形;对于布线层M1/M2,读取其中的单元Pin位置信息并分配到相应的走线通道上,同时,根据Pin的大小位置信息,重新计算与该Pin相连的金属走线的起始终止点;将布线单元行中的布线障碍和预布线分配到相应的走线通道上;最后,根据布线层工艺电容值和同一单元行中并行走线的长度,计算线网之间串扰值的大小。
步骤4)线性分配问题构造
根据所提出的方法,为布线单元内每一个走线段计算到每一条走线通道的费用值,并记录在费用表中。
步骤5)线性分配问题求解
求解该线性分配问题,得到当前费用表所对应的最优解。
步骤6)通道分配后优化
保持通道分配后走线段的顺序,按照如下方法构造解决串扰的动态规划问题:若走线段i放在通道j的费用为C,且走线段i+1与走线段i的线网具有较大串扰值,那么走线段i+1放在通道j的费用为C加上相邻惩罚权重。求解该动态规划问题使得具有较大串扰值的走线段尽量的分开。对于相邻的走线段,按照顺序依次确定其连接点的位置。
以上对本发明实施例进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制,凡依本发明设计思想所做的任何改变都在本发明的保护范围之内。