基于云计算平台的大规模集成电路布线系统
技术领域
本发明属于集成电路设计领域,尤其是属于互连线线宽在65nm及以下的集成电路制造工艺下的集成电路设计优化的技术范畴。
背景技术
集成电路是由设计者借助于电子设计自动化(EDA)工具设计出集成电路版图,交付集成电路制造商,通过电路掩膜制备(Mask)、以及对晶片(Wafer)进行氧化、掺杂、光刻等一系列的制作工艺将电路掩膜转移到晶片上,从而实现其电路功能。对于数字电路设计来说,版图设计流程包括行为级综合,逻辑综合,物理设计和版图优化等步骤。其中,物理设计是最为耗时,对芯片性能影响最大的步骤,它又分为布图规划,布局,时钟树综合,布线等步骤。详细布线是布线的一个子过程,它是在确定线网拓扑结构之后,构造并形成金属布线层上的互连走线和金属通孔,并满足所有的当前工艺节点下所有设计规则要求的步骤。详细布线是整个物理设计过程中耗时最长的步骤。
在芯片制造中,目前主流的紫外线光刻线宽度是65nm/45nm,并正在朝着28nm/22nm的节点发展。由于特征尺寸的减小,芯片上可容纳晶体管数量相应增加,电路设计的问题规模和复杂度也随之不断提高;另一方面,65nm及以下的制造工艺节点,出现了金属互连线之间串扰耦合,复杂的设计规则检查,布线后可制造性优化等新问题。传统的布线工具,由于计算能力和计算资源的限制,已经很难满足处理这些大规模复杂的问题的要求。目前,对于一个百万门级的电路设计,工业界主流的布线工具通常需要十几个小时甚至更长时间完成一次详细布线和设计规则检查修正过程。
云计算是近年来出现的一种基于互联网的计算方式,通过共享的软硬件资源和信息为用户提供计算资源。通过将计算分布在大量的分布式计算机群上,根据需求访问计算机和存储系统,用户能够无限制的获取,使用和扩展所需要的计算资源。提高计算效率,降低运行成本。
发明内容
针对上述现有技术的不足,本发明的目的在于提供一种基于云计算平台的大规模集成电路布线的方法,该方法提出了一种分布式计算的框架,能够将集成电路布线问题按照线网和区域划分成局部的布线的子问题,通过分布式计算的方式进行求解并在终端统一显示布线结果,从而使得该技术能够运用在部署于计算机群上的云端。
本发明的另一个目的在于提供了一种基于云计算平台的大规模集成电路布线系统。
为解决上述技术问题,本发明采用如下技术方案:
一种基于云计算平台的大规模集成电路布线的方法,在详细布线和设计规则检查修正过程中按照区域将布线问题划若干分成局部的子问题,再所述的些子问题分布到云端的计算机群中进行求解;将布线数据划分成全局共享的静态数据和需要局部更新的动态数据,对于所述静态数据,在所指定若干的计算机上创建相应的数据存储;对于所述动态数据,唯一的主计算机将创建相应的数据存储并跟底层数据库进行交互更新,同时与从计算机之间进行待处理的布局区域内的动态数据的交互更新。
一种基于云计算平台的大规模集成电路布线系统,其包括以下模块:文件读取模块、数据转换模块、数据查询模块、云框架模块、详细布线模块和设计规则检查修正模块;
所述文件读取模块基于OpenAccess数据平台,使用内置的lef2oa和def2oa命令将输入的LEF/DEF文件转换为OpenAccess文件系统,所述文件读取模块运行在OpenAccess数据平台上,开始布线之前,主计算机初始化OpenAccess数据库,等待工作命令;所述LEF/DEF是工业界标准的版图信息和工艺信息描述格式;
在数据转换模块中在OpenAccess平台之上建立数据模型,将布线数据划分为静态数据和动态数据;所述静态数据为在布线过程中保持不变的数据,包括标准单元库、布线网表、布线资源、单元实例、设计规则和时延参数表,通过调用OpenAccess数据接口从数据库中进行访问;所述动态数据为布线模块在布线过程中进行创建,修改和删除的数据,包括金属布线、通孔和违反设计规则标记;在布线之前,从OpenAccess数据库中读取这些数据,并在内存中建立相应的拷贝;在布线过程中,所述详细布线模块会动态的访问修改拷贝中的内容;在某一布线子过程结束之后,将这些数据写回到OpenAccess数据库进行同步更新;
在数据查询模块中提供了对于某一布线区域内所需要的静态和动态数据快速查找的功能;在读取并转换布线数据之后,为所述静态数据和所述动态数据分别建立基于RangeTree的查找树形结构,所述RangTree的查找树形结构将布图区域划分成宽度相同的Slice结构,在每一个Slice结构之内,分别为相应的布线数据建立IntervalTree查找树;对于所述静态数据,建立的查找树包括标准单元实例查找树,布线障碍查找树,电源/地预布线和引脚查找树;对于所述动态数据,在每一布线层上建立金属线查找树,通孔查找树,违反设计规则标记查找树;同时布线子过程也根据需要在工作区域内部建立临时的局部查找树;
在所述云框架模块中包括初始化子模块,任务处理子模块和数据交互子模块。
a.所述初始化子模块:在从OpenAccess数据库中读取并转换布线数据之后,所述主计算机在内存中建立静态和动态数据查找树;然后根据用户的要求,在云端获取相应的计算资源;在确定可使用的从计算机之后,所述主计算机一次性的将布图需要的静态数据发往各个从计算机;所述从计算机接收静态数据并在内存中建立存放这些数据的OpenAccess数据库,并在此之上建立静态数据查找树。
b.所述任务处理子模块:对于用户输入的布线命令,所述主计算机根据规则对布线网表和布线区域进行划分;对于详细布线中产生走线的子过程,按照区域面积进行划分;对于设计规则检查修正子过程,不同线网线间距的检查按照区域中包含的几何图形数量划分,同一线网形状大小检查按照线网划分。划分成同一集合的线网或某一区域形成一个独立的工作任务,送往所述从计算机进行任务执行。
c.所述数据交互子模块:对于某一工作任务,所述主计算机通过所述动态数据查找树,从内存中读取当前线网集合或是布线区域内部的动态数据,然后将这些数据发往相应的从计算机;所述从计算机首先从本地的静态数据查找树中读取工作任务需要的静态数据,在接受到从所述主计算机发过来的动态数据之后,为这些数据建立临时的局部线网/区域的数据查找树;布线子过程通过局部查找树获取相应的数据;在布线子过程完成之后,所述从计算机将新产生的动态数据发回到所述主计算机,所述主计算机将接收到的动态数据写回到内存中并更新动态数据查找树;在某一命令全部执行完毕之后,所述主计算机将内存中的动态数据写回到本地的OpenAccess数据库中;
在所述详细布线模块中对某一布线区域,根据总体布线的结果,确定每个线网跟该区域相交的边界点,这些边界点和区域内部的单元引脚作为详细布线需要连接的端点;根据布线层和布线资源的信息,将布线区域抽象成一个三维的网格结构,所述网格结构上的每两个相邻网格点之间的连接对应于一段金属走线或一个金属通孔;在详细布线开始之前,通过布线障碍,预布线等信息对网格点进行0/1标注,表示该网格点是否可以走线;然后依次处理每条线网按照走线长度费用最小的目标进行初始布线,在前一条线网布线完成之后,根据其走线拓扑对网格点重新标注下一条线网可用的布线资源;
在所有的线网初始布线完成之后,调用所述设计规则检查修正模块(6)进行设计规则检查,标注违反设计规则的走线和线网,按照违反设计规则的面积和数量对线网进行排序,按照先后顺序拆分重布线网;重复该过程直到满足所有的设计规则或是找不到更优的结果;
如果当前区域中仍有存在违反设计规则的线网,调用所述设计规则检查修正模块进行线网拓扑的修正,直到满足设计规则或找不到合理的修正方案;
如果上述步骤完成之后,仍然有违反设计规则的区域,所述从计算机发送请求给所述主计算机,调整布线区域大小,重新发送动态数据到所述从计算机,进行新一轮的布线;
在所述设计规则检查修正模块中对某一布线区域中的布线结果,首先将属于同一线网的金属走线和通孔在每一布线层上合并成多边形的数据表示;然后根据每一条设计规则,在每一布线层上检查该多边形图形是否满足设计规则的要求;
对于不满足要求的线网,首先根据设计规则,构造满足设计规则要求的几何形状,该几何形状可以是当前几何形状增加或者删除一部分走线得到,然后根据该几何形状产生属于该线网的新的走线集合;如果上述操作无法解决所有的设计规则冲突,则在违反设计规则的区域产生禁止布线标识,调用详细布线模块进行该区域的拆分重布过程,直到设计规则满足或是找不到满足要求的布线结果为止。
上述技术方案具有如下有益效果:
本发明提出了一种基于云计算平台的大规模集成电路布线系统,能够快速有效的处理65nm及以下工艺的超大规模的集成电路详细布线和设计规则检查问题。同时该方法提出了一种新的详细布线的数据组织方式,能够最大限度的降低云端计算机之间数据传输流量,在提高计算效率的同时,并不会额外增加机群间的通信成本。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图对本专利进行详细说明。
附图说明
图1为云框架示意图
图2为数据交互示意图
图3为本发明输入输出示意图
图4为本发明模块框架示意图
图5为数据结构示意图
图6为数据交互子模块示意图
图7为本发明程序流程图。
具体实施方式
下面结合附图对本发明的优选实施例进行详细介绍。
本实施例设计了一种基于云计算平台的大规模集成电路布线的方法,在详细布线和设计规则检查修正过程中按照区域将布线问题划分成局部的子问题,再将这些子问题分布到云端的计算机群中进行求解,如图1所示。该方法提出并实现了一套适用于云计算布线的数据结构和数据组织方式,将布线数据划分成全局共享的静态数据和需要局部更新的动态数据,对于静态数据,在所指定若干的计算机上创建相应的数据存储;对于动态数据,唯一的主计算机将创建相应的数据存储并跟底层数据库进行交互,同时将待处理的布局区域内的动态数据发往各个从计算机,从计算机完成布线计算之后,将结果发回至主计算机,再由主计算机增量式的对数据库中内容进行更新,如图2所示。
首先,结合图3对本发明的输入输出进行说明。输入包括包含单元位置,布线区域等版图信息的DEF文件和包含工艺信息的LEF文件,输出是包含布线结果信息的DEF文件。LEF/DEF是工业界标准的版图信息和工艺信息描述格式。通过调用OpenAccess(OA)数据平台提供的接口,进行数据输入输出的转换和交互。
然后,结合图4对本发明进行详细阐述。由于本方法是基于云计算平台,因此布线过程在一组机器上完成,包括一台主计算机和其余的从计算机。
(1)文件读取模块1
基于OA数据平台,使用内置的lef2oa和def2oa命令将输入的LEF/DEF文件转换为OA文件系统。该方法运行在OA数据平台上,开始布线之前,主计算机初始化OA数据库,等待工作命令。
(2)数据转换模块2
在OA平台之上建立数据模型,将布线数据划分为静态数据和动态数据,如图5所示。静态数据包括标准单元库,布线网表,布线资源,单元实例和时延参数表等在布线过程中保持不变的数据,这些数据通过调用OA数据接口进行访问;动态数据包括设计规则,金属布线,通孔,违反设计规则标记等布线模块在布线过程中进行创建,修改和删除的数据。在布线之前,从OA数据库中读取这些数据,并在内存中建立相应的拷贝。在布线过程中,布线模块会动态的访问修改拷贝中的内容。在某一布线子过程结束之后,将这些数据写回到OA数据库进行同步更新。
(3)数据查询模块3
本发明提供了对于某一布线区域内所需要的静态/动态数据快速查找的功能。在读取并转换布线数据之后,为静态数据和动态数据分别建立基于RangeTree的查找树形结构。RangTree树将布图区域划分成宽度相同的Slice结构,在每一个Slice之内,分别为相应的布线数据建立IntervalTree查找树。这样对于给定的布图区域,能够在很短时间内得到与之相重叠的Slice,并从其中的IntervalTree中得到需要的布线数据。对于静态数据,建立的查找树包括标准单元实例查找树,布线障碍查找树,电源/地预布线和引脚查找树;对于动态数据,在每一布线层上建立金属线查找树,通孔查找树,违反设计规则标记查找树。同时布线子过程也会根据需要在工作区域内部建立临时的局部查找树。
(4)云框架模块4
云框架模块包括初始化子模块,任务处理子模块和数据交互子模块。
a.初始化子模块:在从OA数据库中读取并转换布线数据之后,主计算机在内存中建立静态和动态数据查找树。然后根据用户的要求,在云端获取相应的计算资源。在确定可使用的从计算机之后,主计算机一次性的将布图需要的静态数据发往各个从计算机。从计算机接收静态数据并在内存中建立存放这些数据的OA数据库,并在此之上建立静态数据查找树。
b.任务处理子模块:对于用户输入的布线命令,主计算机根据规则对布线网表和布线区域进行划分。对于详细布线中产生走线的子过程,按照区域大小进行划分;对于设计规则检查修正子过程,不同线网线间距的检查按照区域中包含的几何图形数量划分,同一线网形状大小检查按照线网划分。划分成同一集合的线网或某一区域形成一个独立的工作任务,送往从计算机执行。从计算机根据工作任务,调用相应的详细布线,设计规则检查或是设计规则修正模块进行任务执行。
c.数据交互子模块:对于某一工作任务,主计算机通过动态数据查找树,从内存中读取当前线网集合或是布线区域内部的动态数据,然后将这些数据发往相应的从计算机。从计算机首先从本地的静态数据查找树中读取工作任务需要的静态数据,在接受到从主计算机发过来的动态数据之后,为这些数据建立临时的局部线网/区域的数据查找树。布线子过程通过局部查找树获取相应的数据。在布线子过程完成之后,从计算机将新产生的动态数据发回到主计算机,主计算机将接收到的动态数据写回到内存中并更新动态数据查找树。在某一命令全部执行完毕之后,主计算机将内存中的动态数据写回到本地的OA数据库中,如图6所示。
(5)详细布线模块5
对某一布线区域,根据总体布线的结果,确定每个线网跟该区域相交的边界点,这些边界点和区域内部的单元引脚作为详细布线需要连接的端点。根据布线层和布线资源的信息,将布线区域抽象成一个三维的网格结构。网格上的每两个相邻网格点之间的连接对应于一段金属走线或一个金属通孔。在详细布线开始之前,通过布线障碍,预布线等信息对网格点进行0/1标注,表示该网格点是否可以走线。然后依次处理每条线网按照走线长度费用最小的目标进行初始布线,在前一条线网布线完成之后,根据其走线拓扑对网格点重新标注下一条线网可用的布线资源。
在所有的线网初始布线完成之后,调用设计规则检查模块进行设计规则检查,标注违反设计规则的走线和线网。按照违反设计规则的面积和数量对线网进行排序,按照先后顺序拆分重布线网。重复该过程直到满足所有的设计规则或是找不到更优的结果。
如果当前区域中仍有存在违反设计规则的线网,调用设计规则修正模块进行线网拓扑的修正,直到满足设计规则或找不到合理的修正方案。
如果上述步骤完成之后,仍然有违反设计规则的区域,从计算机发送请求给主计算机,调整布线区域大小,重新发送动态数据到从计算机,进行新一轮的布线。
(6)设计规则检查修正模块6
对某一布线区域中的布线结果,首先将属于同一线网的金属走线和通孔在每一布线层上合并成多边形的数据表示。然后根据每一条设计规则,在每一布线层上检查该多边形图形是否满足设计规则的要求。
对于不满足要求的线网,首先根据设计规则,构造满足设计规则要求的几何形状,该几何形状可以是当前几何形状增加或者删除一部分走线得到,然后根据该几何形状产生属于该线网的新的走线集合;如果上述操作无法解决所有的设计规则冲突,则在违反设计规则的区域产生KEEPOUT标识,调用详细布线模块进行该区域的拆分重布过程,直到设计规则满足或是找不到满足要求的布线结果为止。
进一步的,现结合图7对其进行详细阐述:
采用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的单元库。
步骤2)主计算机数据初始化和数据转换
用户指定布线版图和单元库之后,主计算机通过OA数据结构,从OA文件系统中读取相应信息到内存中,产生OA数据库。之后从OA模块中读取版图上的通道布线结果,基于该发明的数据结构,在内存中创建设计规则,初始走线段和预布线等内容的OA之外的数据拷贝。在每个布线层上构造生成RangeTree查找树并将走线段添加到相应金属层的查找树中。分别为整个布图区域构造生成标准单元,布线障碍和电源/地预布线的查找树。
步骤3)从计算机数据初始化
主计算机获取指定的一组从计算机之后,将OA文件系统中的单元库和版图视图中的静态数据信息发送给从计算机。从计算机通过得到的数据构造只包含静态数据的OA数据库,构造生成与主计算机上相同的静态数据的查找树,从而实现对静态数据的本地访问。
步骤4)任务处理前主计算机/从计算机数据交互
主计算机根据需要处理的详细布线或是设计规则检查修正任务,生成对应的工作区域。通过动态查找树获得属于该区域内部和边界上的动态数据,再将这些数据以规定好的格式通过数据流的方式发送给从计算机。从计算机将接收到的数据流翻译成并记录下原始的动态数据,再通过本地的静态查找树找出当前工作区域中的静态数据,之后合并动态数据和静态数据,为其创建统一的临时局部查找树。
步骤5)详细布线
从计算机从临时的局部查找树中获取走线段,单元引脚和布线障碍等信息,将这些信息转换成详细布线模块内部的数据结构,在此基础上计算布线资源,构造详细布线三维网格。搜索得到该区域的详细布线结果,更新临时局部查找树。
步骤6)设计规则检查修正
从计算机读取局部查找树中的信息,构造版图上属于同一线网的多边形,依次检查每条设计规则。对违反设计规则的图形,用增加/删除走线和拆分重布的方法解决冲突,并将结果写回到临时局部查找树中。
步骤7)任务处理后主计算机/从计算机数据交互
从计算机从临时局部查找树中读取布线后的动态数据,以数据流的方式发送回主计算机。主计算机翻译构造出该区域中需要更新的动态数据之后,在动态查找树中将布线之前的区域内和边界数据删除,再将新的动态数据加入到动态查找树中。
步骤8)主计算机数据更新和输出
在布线过程完成之后,主计算机将OA数据库中内存里的动态查找树中存放的金属线,通孔,违反设计规则标识等数据拷贝写回到OA数据库中。再通过OA的提供的命令输出DEF文件。
以上对本发明实施例进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制,凡依本发明设计思想所做的任何改变都在本发明的保护范围之内。