CN101980216B - 基于网块的快速多层布线方法 - Google Patents
基于网块的快速多层布线方法 Download PDFInfo
- Publication number
- CN101980216B CN101980216B CN2010105097594A CN201010509759A CN101980216B CN 101980216 B CN101980216 B CN 101980216B CN 2010105097594 A CN2010105097594 A CN 2010105097594A CN 201010509759 A CN201010509759 A CN 201010509759A CN 101980216 B CN101980216 B CN 101980216B
- Authority
- CN
- China
- Prior art keywords
- expanded
- block
- wiring
- obstacle
- network block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000004888 barrier function Effects 0.000 claims description 48
- 230000000875 corresponding effect Effects 0.000 claims description 36
- 238000010586 diagram Methods 0.000 description 15
- 238000003491 array Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开一种基于网块的快速多层布线方法,主要是为了提高集成电路多层布线的效率而设计。本发明,首先,根据读入的布线区域内的障碍信息建立并规范障碍列表,扩展障碍列表中各障碍的边界,从而构造出三维不均匀网格阵列,并标记出布线起始点和终止点;然后,设置三维不均匀网格阵列的允许扩展方向,将具有相同扩展方向的网格合并为一个一个矩形,称为“网块”;最后,采用A*算法对在由网块构成的三维不均匀网格阵列上搜索出最短布线路径。本发明能够有效的提高集成电路多层布线的效率,且本发明的方法程序实现较为简单。
Description
技术领域
本发明涉及一种超大规模集成电路物理设计技术领域,尤其涉及一种基于网块的集成电路多层布线方法。
背景技术
集成电路制造工艺已经可以支持多层互连线结构的芯片制造,各层互连线由金属实现,层之间的连接通过通孔工艺实现。相应的集成电路设计及电子设计自动化(EDA)工具需要支持多层互连结构的版图设计。目前的多层详细布线大都采用无网格布线模式来提高布线效率,相对有网格模式速度有了很大的提升,但随着集成电路规模的不断增大,布线效率仍然需要进一步提高。
集成电路布线根据布线区域的表示以及走线位置是否受限制分为两类模型:有网格布线模型和无网格布线模型。无网格布线相对于有网格布线处理变线宽更加方便,并且布线速度更快。目前基于无网格模型的布线算法主要有以下两类:
基于隐式连接图的布线方法。在布线开始前,将每个障碍按照“线宽/2+线间距”的距离进行扩展,然后延长障碍的扩展边界直到遇到下一个障碍。把各个延长线的交点表示为结点,则整个版图形成了一个图。因为结点并没有在计算机中显示地构造出来,而是通过保存横向延长线和纵向延长线的坐标间接表示结点的,所以是一种隐式的连接图。然后采用某种方法寻找最短路径,如图1所示。
基于网块的布线方法。该方法将整个布线区域划分为一个个矩形区域,称为“网块”,一个网块为一个障碍网块,或者空白网块。障碍网块是不能走线的区域,空白网块是可以走线的区域,并采用角勾链数据结构对网块进行管理。然后采用某种方法寻找一条由空白网块连成的路径,如图2所示。
基于隐式连接图的无网格布线方法通过将无网格布线环境转化为一个隐式连接图,可以直接调用传统的布线算法进行布线,直观易行且数据表示和维护简单。但是当障碍数目较多时,障碍边界扩展得到的横向延长线和纵向延长线也会较多,导致搜索速度变慢。在极端情况下,延长线之间的间距甚至小于有网格布线中的一个网格大小时,效率会低于有网格的效率。此外,因为延长线交点并没有实际构造出来,因此在搜索时检查该交点是否可扩展这个操作无法在常熟时间内完成,也在一定程度上影响了算法速度。
基于网块的布线方法是在一个网块构成的区域中寻找布线路径。该方法相对于基于隐式连接图的方法速度略有提高,但是因为网块的大小位置不能用一个简单的数据结构表示,寻找相邻的网块也无法简单的通过一步操作来实现,在该方法中采用了角勾链结构存储,角勾链结构对于寻找相邻网块比较方便,但是仍然无法在常数时间内完成,并且维护该结构也需要一定的时间代价。
发明内容
为了克服上述的缺陷,本发明提供一种能够有效提高集成电路多层布线效率的基于网块的快速多层布线方法。
为达到上述目的,本发明所述基于网块的快速多层布线方法,包括以下步骤:
(1)读入布线区域内的障碍信息、待布线网信息和工艺信息;
(2)依据上述障碍信息建立并规范障碍列表;
(3)扩展障碍列表中各障碍的边界;
(4)构造三维不均匀网格阵列;
(5)标记布线起始点和终止点;
(6)设置三维不均匀网格阵列的允许扩展方向;
(7)将具有相同属性的网格合并为网块;
(8)采用A*算法对网块进行布线路径搜索;
(9)输出搜索路径。
其中,步骤(1)中,所述待布线网信息包括该待布线网的可用布线层信息,布线区域大小信息以及起始点和终止点信息或起始模块和终止模块信息;
所述工艺信息包括待布线网的布线层层数,布线区域允许的最小线宽值,各布线层通孔直径大小,允许最小的线到线间距值,允许最小的线到通孔间距值,允许最小的通孔到通孔间距值。
进一步地,步骤(2)的具体实现步骤如下:
2.1根据步骤(1)中所述的障碍信息建立障碍列表;
2.2遍历障碍列表,调用多边形到矩形的转化程序将每一个多边形障碍转化为至少一个矩形障碍,同时保留相应的是否是通孔的属性;
2.3删除障碍列表中存储的原多边形障碍,将转化得到的矩形障碍添加到障碍列表中。
进一步地,步骤(3)具体实现如下:
3.1初始化横坐标集合和纵坐标集合;
3.2遍历步骤(2)得到的障碍列表,将非通孔矩形障碍的每一个边界分别按照“线宽/2+线间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;将通孔矩形障碍的每一个边界按照“线宽/2+线到通孔的间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;
3.3遍历步骤(2)得到的障碍列表,将非通孔矩形障碍的每一个边界分别按照“通孔直径/2+线到通孔间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;将通孔矩形障碍的每一个边界分别按照“通孔直径/2+通孔到通孔的间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;
3.4将(3.2)和(3.3)步中的所有垂直扩展边界的横坐标加入到横坐标集合中,所有水平扩展边界的纵坐标加入到纵坐标集合中。
其中,步骤(4)所述的三维不均匀网格阵列表示为由步骤(3)所述的横坐标集合,所述的纵坐标集合,以及所述布线层层数构成的三维网格数组。
进一步地,步骤(5)具体实现如下:
5.1若布线模式为点到点模式,将布线起点对应的步骤(4)所述的三维网格数组中元素的属性设置为起点,将布线终点对应的三维网格数组元素的属性设为终点。
5.2若布线模式为模块到模块模式,调用多边形到矩形的转化程序将起始模块和终止模块分别转化为起始矩形链表和终止矩形链表,然后,分别遍历起始矩形链表和终止矩形链表,将与起始矩形内部和矩形边界上的点相对应的所述的三维网格数组中的元素的属性设为起点,将与终止矩形内部和矩形边界上的点相对应的所述的三维网格数组中的元素的属性设为终点。
进一步地,步骤(6)具体实现如下:
6.1设置同层扩展的允许扩展方向;
遍历步骤(2)得到的障碍列表,若该矩形障碍是非通孔障碍,设置三维不均匀网格阵列中所有在该矩形障碍按照“线宽/2+线间距”扩展的左,右,上,下边界上的网格点,分别不可向右,左,下,上扩展,并设置由该左,右,上,下边界所构成的矩形内部的所有网格点为不合法网格点;若该障碍是通孔障碍,设置三维不均匀网格阵列中所有在该障碍按照“通孔直径/2+线到通孔间距”扩展的左,右,上,下边界上的网格点,分别不可向右,左,下,上扩展,并设置由该左,右,上,下边界所构成的矩形内部的所有网格点为不合法网格点;
6.2设置跨层扩展的允许扩展方向;
遍历步骤(2)得到的障碍列表,若该矩形障碍是非通孔障碍,设置三维不均匀网格阵列中所有在该障碍按照“线宽/2+线到通孔间距”扩展的左,右,上,下边界所构成的矩形内部的网格点不能向相邻层的网格扩展,并设置相邻层在对应区域内的网格点不能向该层扩展;若该障碍是通孔障碍,设置三维不均匀网格阵列中所有在该障碍按照“通孔直径/2+通孔到通孔间距”扩展的左,右,上,下边界所构成的矩形内部的网格点不能向相邻层的网格扩展,并设置相邻层在对应区域内的网格点不能向该层扩展。
进一步地,步骤(7)将具有相同属性的网格合并为网块的具体实现步骤如下:
7.1遍历用于表示三维不均匀网格阵列的三维网格数组,按照水平方向优先的策略将具有相同属性的网格合并为一个网块,并将网格的属性赋给其所属的网块,该属性包括允许扩展方向和起点终点属性;其中,属性是否相同,按照下面的步骤7.1.2-7.1.4来确定:
7.1.2若网格点都是不合法网格点,认为其属性相同;
7.1.3若网格都是合法网格点,且网格的允许扩展方向相同,且网格的起点终点属性相同时,认为其属性相同;
7.1.4除上述两种外的其他情况,均认为属性不相同。
7.2将属性为起点的网块添加到布线起始网块链表中,将属性为终点的网块添加到布线终止网块链表中。
进一步地,步骤(8)A*算法进行路径搜索的具体实现步骤如下:
8.1定义起始网块和终止网块的各顶点的扩展代价以及起始网块和终止网块的扩展代价;
8.2创建待扩展网块链表,按照扩展代价由小到大的顺序保存所有已访问而未扩展的网块;
8.3遍历步骤(7)所述的起始网块链表,计算每个扩展块相应的扩展代价,并将其插入到待扩展网块链表中;
8.4判断所述待扩展网块链表中是否有待扩展网块,是,继续以下步骤,否,结束搜索并输出搜索失败;
8.5读取待扩展网块链表中扩展代价最小的网块,记为当前待扩展块,并判断当前待扩展块是否在终止网块链表中;是,结束搜索,并输出搜索成功,否,继续以下步骤;
8.6遍历当前待扩展块允许的扩展方向,寻找出各允许扩展方向上与当前待扩展块相邻的所有网块,并将其插入到相邻网块列表中;
8.7遍历相邻网块列表,计算当前遍历到的网块的四个顶点的扩展代价是否变小,是,该网块需再进行扩展,进行下一步骤,否,该网块不需再进行扩展,将该网块从相邻网块列表中删除;
8.8遍历相邻网块列表,如果当前遍历到的网块已经在待扩展网块链表中,则将该网块从待扩展网块链表中删除,然后调用分裂模块对当前遍历到的网块进行分裂,并将分裂后得到的网块添加到网块集合中;
8.9计算网块集合中各网块的扩展代价,并将其按照计算得到的扩展代价插入到待扩展网块链表的适当位置,返回步骤8.4。
进一步地,步骤(9)输出搜索路径的步骤如下:
9.1读取步骤(8)中搜索到的在终止网块链表中的当前待扩展网块;
9.2将当前待扩展网块的四个顶点中扩展代价最小的一个顶点(x,y,z)添加到布线路径中;
9.3若该顶点的父网块在其左边,则将点(当前待扩展网块的左边界,y,z)添加到布线路径中;
若该顶点的父网块在其右边,则将点(当前待扩展网块的右边界,y,z)添加到布线路径中;
若该顶点的父网块在其下边,则将点(x,当前待扩展网块的下边界,z)添加到布线路径中;
若该顶点的父网块在其上边,则将点(x,当前待扩展网块的上边界,z)添加到布线路径中;
若该顶点的父网块位于下层,则将点(x,y,z-1)添加到布线路径中;
若该顶点的父网块位于上层,则将点(x,y,z+1)添加到布线路径中;
其中,顶点从哪个网块扩展过来的,该网块即为该顶点的父网块;
9.4将父网块作为当前待扩展网块,判断当前待扩展模块是否在起始链表中,是,输出布线路径,否,继续执行步骤9.2~9.4。
本发明为了提高集成电路多层布线的效率,提出了一种新的基于网块的快速多层布线方法。该方法首先根据设计规则划分三维不均匀网格,并设置网格的允许扩展方向;然后,将具有相同扩展方向的网格合并为一个网块;最后,在由网块构成图上利用最短路径搜索算法搜索布线路径。此外,本发明方法可使用C++语言基于面向对象思想设计和实现,具有较强的平台通用性,可以在不同的平台上运行。
附图说明
图1为基于隐式连接图的布线方法;
图2为基于网块的布线方法图;
图3为本发明基于网块的快速多层布线方法的流程图;
图4为本发明所述非通孔障碍根据线宽和线间距约束扩展边界的示意图;
图5为本发明所述通孔障碍根据线宽和线间距约束扩展边界的示意图;
图6为本发明所述非通孔障碍根据通孔大小和通孔间距约束扩展边界的示意图;
图7为本发明所述通孔障碍根据通孔大小和通孔间距约束扩展边界的示意图;
图8为本发明所述三维不均匀网格阵列的一具体实施例示意图;
图9为本发明扩展方向为同层扩展水平方向时的分裂模型示意图;
图10为本发明扩展方向为同层扩展垂直方向时的分裂模型示意图;
图11为本发明扩展方向为跨层扩展方向时的分裂模型示意图。
具体实施方式
下面结合说明书附图对本发明的具体实施方式做详细描述。
如图3所示本发明所述基于网块的快速多层布线方法的流程图。其流程如下:
(1)读入布线区域内的障碍信息、待布线网信息和工艺信息
所述待布线网信息包括该待布线网的可用布线层信息,布线区域大小信息以及起始点和终止点信息或起始模块和终止模块信息;
所述工艺信息包括待布线网的布线层层数,布线区域允许的最小线宽值,各布线层通孔直径大小,允许最小的线到线间距值,允许最小的线到通孔间距值,允许最小的通孔到通孔间距值。
(2)依据上述障碍信息建立并规范障碍列表
2.1根据步骤(1)中所述的障碍信息建立障碍列表;
2.2遍历障碍列表,调用多边形到矩形的转化程序将每一个多边形障碍转化为至少一个矩形障碍,同时保留相应的是否是通孔的属性;
2.3删除障碍列表中存储的原多边形障碍,将转化得到的矩形障碍添加到障碍列表中。
(3)扩展障碍列表中各障碍的边界
3.1初始化横坐标集合和纵坐标集合;
3.2遍历步骤(2)得到的障碍列表,将非通孔矩形障碍的每一个边界分别按照“线宽/2+线间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;将通孔矩形障碍的每一个边界按照“线宽/2+线到通孔的间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;
3.3遍历步骤(2)得到的障碍列表,将非通孔矩形障碍的每一个边界分别按照“通孔直径/2+线到通孔间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;将通孔矩形障碍的每一个边界分别按照“通孔直径/2+通孔到通孔的间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;
3.4将(3.2)和(3.3)步中的所有垂直扩展边界的横坐标加入到横坐标集合中,所有水平扩展边界的纵坐标加入到纵坐标集合中。
(4)构造三维不均匀网格阵列
所述的三维不均匀网格阵列可表示为由步骤(3)所述的横坐标集合,所述的纵坐标集合,以及所述布线层层数构成的三维网格数组。
(5)标记布线起始点和终止点
5.1若布线模式为点到点模式,将布线起点对应的步骤(4)所述的三维网格数组中元素的属性设置为起点,将布线终点对应的三维网格数组元素的属性设为终点。
5.2若布线模式为模块到模块模式,调用多边形到矩形的转化程序将起始模块和终止模块分别转化为起始矩形链表和终止矩形链表,然后,分别遍历起始矩形链表和终止矩形链表,将与起始矩形内部和矩形边界上的点相对应的所述的三维网格数组中的元素的属性设为起点,将与终止矩形内部和矩形边界上的点相对应的所述的三维网格数组中的元素的属性设为终点。
(6)设置三维不均匀网格阵列的允许扩展方向
6.1设置同层扩展的允许扩展方向;
遍历步骤(2)得到的障碍列表,若该矩形障碍是非通孔障碍,设置三维不均匀网格阵列中所有在该矩形障碍按照“线宽/2+线间距”扩展的左,右,上,下边界上的网格点,分别不可向右,左,下,上扩展,并设置由该左,右,上,下边界所构成的矩形内部的所有网格点为不合法网格点;若该障碍是通孔障碍,设置三维不均匀网格阵列中所有在该障碍按照“通孔直径/2+线到通孔间距”扩展的左,右,上,下边界上的网格点,分别不可向右,左,下,上扩展,并设置由该左,右,上,下边界所构成的矩形内部的所有网格点为不合法网格点;
6.2设置跨层扩展的允许扩展方向;
遍历步骤(2)得到的障碍列表,若该矩形障碍是非通孔障碍,设置三维不均匀网格阵列中所有在该障碍按照“线宽/2+线到通孔间距”扩展的左,右,上,下边界所构成的矩形内部的网格点不能向相邻层的网格扩展,并设置相邻层在对应区域内的网格点不能向该层扩展;若该障碍是通孔障碍,设置三维不均匀网格阵列中所有在该障碍按照“通孔直径/2+通孔到通孔间距”扩展的左,右,上,下边界所构成的矩形内部的网格点不能向相邻层的网格扩展,并设置相邻层在对应区域内的网格点不能向该层扩展。
(7)将具有相同属性的网格合并为网块
7.1遍历用于表示三维不均匀网格阵列的三维网格数组,按照水平方向优先的策略将具有相同属性的网格合并为一个网块,并将网格的属性赋给其所属的网块,其中赋给的属性包括允许扩展方向和起点终点属性;其中,属性是否相同,按照下面的步骤7.1.2-7.1.4来确定:
7.1.2若网格点都是不合法网格点,认为其属性相同;
7.1.3若网格点都是合法网格点,且网格的允许扩展方向相同,且网格的起点终点属性相同时,认为其属性相同;
7.1.4除上述两种外的其他情况,均认为属性不相同。
7.2将属性为起点的网块添加到布线起始网块链表中,将属性为终点的网块添加到布线终止网块链表中。
(8)采用A*算法对网块进行布线路径搜索
8.1定义起始网块和终止网块的各顶点的扩展代价;
8.2创建待扩展网块链表,有序的保存所有已访问而未扩展的网块;
8.3遍历步骤(7)所述的起始网块链表,计算每个扩展块相应的扩展代价,并将其按照计算的扩展代价的大小插入到待扩展网块链表的适当位置;
8.4判断所述待扩展网块链表中是否有待扩展网块,是,继续以下步骤,否结束搜索并输出搜索失败;
8.5读取待扩展网块链表中扩展代价最小的网块,记为当前待扩展块,并判断当前待扩展块是否在终止网块链表中;是,结束搜索,并输出搜索成功,否,继续以下步骤;
8.6遍历当前待扩展块允许的扩展方向,寻找出各允许扩展方向上与当前待扩展块相邻的所有网块,并将其插入到相邻网块列表中;
8.7遍历相邻网块列表,计算当前遍历到的网块的四个顶点的扩展代价是否变小,是,该网块需再进行扩展,进行下一步骤,否,该网块不需再进行扩展,将该网块从相邻网块列表中删除;
8.8遍历相邻网块列表,若当前遍历到的网块已在待扩展网块链表中,则将其从待扩展网块链表中删除,然后调用分裂模块对当前遍历到的网块进行分裂,并将分裂后得到的网块添加到网块集合中;
8.9计算网块集合中各网块的扩展代价,并将其按照计算的扩展代价的大小插入到待扩展网块链表的适当位置,返回步骤8.4。
(9)输出搜索路径。
9.1读取步骤(8)中搜索到的在终止网块链表中的当前待扩展网块;
9.2将当前待扩展网块的四个顶点中扩展代价最小的一个顶点(x,y,z)添加到布线路径中;
9.3若该顶点的父网块在其左边,则将点(当前待扩展网块的左边界,y,z)添加到布线路径中;
若该顶点的父网块在其右边,则将点(当前待扩展网块的右边界,y,z)添加到布线路径中;
若该顶点的父网块在其下边,则将点(x,当前待扩展网块的下边界,z)添加到布线路径中;
若该顶点的父网块在其上边,则将点(x,当前待扩展网块的上边界,z)添加到布线路径中;
若该顶点的父网块位于下层,则将点(x,y,z-1)添加到布线路径中;
若该顶点的父网块位于上层,则将点(x,y,z+1)添加到布线路径中;
9.4将父网块作为当前待扩展网块,判断当前待扩展模块是否在起始链表中,是,输出布线路径,否,继续执行步骤9.2~9.4。
本发明所述的基于网块的快速多层布线方法已经使用C++语言在LINUX/UNIX环境下开发并实现。程序实现以布线区域大小、布线区域的障碍信息、待布线网信息以及工艺信息为输入,使用该方法对待布线网实施布线,程序的输出为搜索到的布线路径。
下面介绍程序的工作流程:
(1)程序读入布线信息
程序读入不局限于以配置文件形式提供的布线区域大小、布线区域内的障碍信息、待布线网信息和工艺信息。其中,
待布线网信息包括该待布线网的可用布线层,即该线网可以在哪层金属层上布线,以及布线模式:点到点或模块到模块模式。若布线模式为点到点,布线信息要提供布线的起点和终点;否则提供布线起始模块和终止模块,起始模块和终止模块均为直角多边形,由多边形的顶点坐标表示;
工艺信息主要包括该布线层层数sizeZ,布线区域允许的最小线宽值lineW[sizeZ],通孔直径大小viaW[sizeZ],允许最小的线到线间距值ltol[sizeZ],允许最小的线到通孔间距值ltov[sizeZ],允许最小的通孔到通孔间距值vtov[sizeZ],这些大小和间距信息均为数组,数组的大小等于sizeZ,下标表示对应的布线层层号。
(2)建立障碍列表并规范障碍列表
程序根据步骤(1)读入的信息建立布线过程所必须的数据结构,主要包括障碍列表obsList,其中所有障碍的形状均为直角多边形,由该多边形所在的布线层层号和多边形的顶点坐标表示,每个顶点由其横坐标和纵坐标表示,同时障碍还包括一个表示其是否是通孔的属性,即通孔或非通孔属性。然后调用多边形到矩形的转化程序将障碍列表中所有的直角多边形障碍转化为多个矩形障碍,同时保留相应的是否是通孔的属性。其中,多边形到矩形的转化程序可见文献A Polygon-to-Rectangle Conversion Algorithm,IEEE,1983作者Kevin D.Gourley,Douglas M.Green。
(3)扩展障碍边界
3.1根据线宽和线间距约束扩展障碍边界
初始化横坐标集合xset和纵坐标集合yset。遍历由步骤(2)得到的障碍列表obsList,设当前遍历到的障碍所在的层号为z,若该障碍为非通孔障碍,将其边界分别按照距离lineWz/2+ltolz进行扩展,如图4所示;若该障碍为通孔障碍,将其边界分别按照距离lineWz/2+ltovz进行扩展,如图5所示。将扩展障碍的左右边界加入到xset中,扩展障碍的上下边界加入到yset中。
3.2根据通孔大小和间距约束扩展障碍边界
遍历由步骤(2)得到的障碍列表obsList,设当前遍历到的障碍所在的层号为z,若该障碍为非通孔障碍,将其边界分别按照距离viaWz/2+ltovz进行扩展,如图6所示;若该障碍为通孔障碍,将其边界分别按照距离viaWz/2+vtovz进行扩展,如图7所示。将扩展障碍的左右边界加入到xset中,扩展障碍的上下边界加入到yset中。
(4)构造三维不均匀网格阵列
根据xset和yset构造三维网格数组Info[sizeX×sizeY×sizez],其中sizeX是数组的列数,sizeY是数组的行数,sizeZ是布线层数:集合xset中的一个元素为布线区域内的一个横坐标,对应于一个布线层内的一条纵向延长线,集合xset中的所有元素对应一个布线层内的多条纵向延长线。同样,集合yset中的所有元素对应一个布线层内的多条横向延长线。多条纵向延长线和多条横向延长线相交,将一个布线层划分为一个不均匀二维网格阵列,将该不均匀网格映射到所有层中,则形成一个三维不均匀网格阵列,如图8所示。每一个网格对应三维网格数组Info[sizeX×sizeY×sizeZ]的一个元素,sizeX等于xset中元素的个数,sizeY等于yset中元素的个数。
(5)标记布线起始点和终止点
若布线模式为点到点模式,将布线起点对应的三维网格数组Info中的元素的属性设置为起点,将布线终点对应的三维网格数组元素的属性设为终点。
若布线模式为模块到模块模式,调用多边形到矩形的转化程序将起始模块和终止模块分别转化为起始矩形链表和终止矩形链表。然后分别遍历起始模块和终止模块对应的起始矩形链表和终止矩形链表,将矩形内部和矩形边界上的点对应的三维网格数组元素的属性相应的设为起点或终点。
(6)设置三维不均匀网格的允许扩展方向
6.1根据线宽和线间距设置同层扩展的允许扩展方向
遍历障碍列表obsList,在xset中搜索按照步骤3.1扩展的左右边界,在yset中搜索根据步骤3.1扩展的上下边界,设置位于左边界上的网格点设为不可向右扩展,位于右边界上的网格点设为不可向左扩展;位于上边界的网格点设为不可向下扩展,位于下边界上的网格点设为不可向上扩展,并设置由该边界所围成矩形内部的所有网格点为不合法网格点。
6.2根据通孔设计规则约束设置跨层扩展的允许扩展方向
在xset中搜索按照步骤3.2扩展的左右边界,在yset中搜索根据步骤3.2扩展的上下边界,设置由该边界所围成矩形内部的网格点不能向相邻层扩展,并设置相邻层在对应区域内的网格不能向该层扩展。
(7)将具有相同属性的网格合并为网块
遍历三维网格数组Info,按照水平方向优先的策略将具有相同属性的网格合并为尽可能大的矩形,这些矩形称为“扩展块”,其中,属性是否相同按照下面两个步骤来确定:如果网格点都是不合法网格点,认为其属性相同;若网格点是合法网格点,且网格的允许扩展方向相同,且网格的起点终点属性相同时,认为其属性相同;其他情况均属于属性不相同的情况。同时将网格的属性赋值给它所属于的网块,其中,赋给的属性包括允许扩展方向和起点终点属性。
将属性为起点的网块添加到布线起始网块链表中,将属性为终点的网块添加到布线终止网块链表中。
(8)A*搜索算法对网块进行布线路径的搜索
搜索过程为从起始网块到终止网块的扩展过程。每个网块为一个矩形,包含四个顶点。每个顶点定义各自的扩展代价如下:
costG:表示从起始网块链表到该顶点的实际路径长度,其数值等于起始网块链表中任一网块的任意顶点到该顶点的最短路径长度。
costH:表示从该顶点到终止网块链表的路径长度估计值,其数值等于该顶点到终止网块链表中任一网块的任意顶点的最短路径长度。
costF:costG和costH之和。
每个网块在最开始时,四个顶点的costG、costH和costF都初始化为一个很大的正整数值,在程序中,采用计算机所能表示的最大正整数221-1来代替。而该网块的costF为四个顶点最小的costF。扩展过程是按照优先扩展costF较小的网块的原则进行的。具体步骤如下:
8.1构造一个保存待扩展的网块的有序链表openlist,遍历起始网块链表,计算每个扩展块相应的扩展代价,按照代价从小到大的顺序插入openlist中。之后进入循环中,循环终止的条件是openlist中没有元素,或者openlist中的第一个元素在终止网块链表中。循环内部的操作是:
8.2取出openlist中的第一个元素作为当前要扩展的网块,记作current。遍历current按照步骤6设置的允许的扩展方向,寻找在各允许方向上与current相邻的所有网块,记为nextList。
8.3预计算该步扩展是否有意义:遍历nextList,当前遍历到的网块为next。遍历next的四个顶点,当前遍历到的顶点为nV,预计算nV顶点的扩展代价costG。计算过程如下:遍历current的四个顶点,当前遍历到的顶点为cV,令tmpG等于cV的costG与cV点和nV的距离之和。若tmpG的最小值比nV的costG小,那么从current到next的扩展是有意义的,否则该步扩展没有意义,将next从nextList中删除。
8.4进行扩展:遍历nextList,当前遍历到的网块为next。按照该步扩展方向调用相应的分裂模型对next进行分裂,如图9~11所示:如果扩展方向是同层扩展水平方向,即向左或者向右,则根据current和next水平方向上重合的部分将next分裂成至多三个子网块,如图9;如果扩展方向是同层扩展垂直方向,即向上或者向下,则根据current和next垂直方向上重合的部分将next分裂成至多三个子网块,如图10;如果扩展方向是跨层向相邻层扩展,则根据current和next跨层方向上重合的部分将next分裂成至多五个子网块,如图11;其中灰色的是重合部分,注意重合的部分一定位于next的内部。分裂得到的网块集合为nextSet。
8.5遍历nextSet,分别计算每个网块的四个顶点的扩展代价costG,其计算过程同步骤(8.3),令每个顶点的costG等于最小的tmpG即可。costH和costF按照定义进行计算。并记录该顶点是从哪个网块扩展来的,即记录该顶点的父网块。然后更新网块的costF为四个顶点中最小的costF。如果该网块不在openList中,那么将该网块按照costF从小到大的顺序插入openList中;否则,按照该网块的costF大小将其调整到合适的位置,这是因为网块的代价已经重新计算发生了改变,要维持openlist的有序性必须做出合适的调整。
如果步骤8.2~8.5所述的循环停止是因为openList为空,那么说明没有扩展到终止网块链表,布线失败。
如果步骤8.2~8.5所述的循环的停止是因为openlist中的第一个元素为终止网块,记该网块为current,输出布线成功。
(9)输出搜索路径
根据扩展方向设置布线路径,具体如下:
9.1读取步骤(8)搜索出的在所述终止网块中的current,将current四个顶点中costF最小扩展代价的一个顶点minV添加到布线布线路径中。然后循环下述过程直到current为起始网块:读取minV是从哪个网块扩展过来的,这个网块称为“父网块”,这部分信息在步骤(8.5)的扩展过程中已记录下来。
9.2设minV的坐标为(x,y,z),若父网块位于current的左边,则将点(current的左边界,y,z)添加到布线路径中;
若父网块位于右边,则将点(current的右边界,y,z)添加到布线路径中;
若父网块位于下边,则将点(x,current的下边界,z)添加到布线路径中;
若父网块位于上边,则将点(x,current的上边界,z)添加到布线路径中;
若父网块位于下层,则将点(x,y,z-1)添加到布线路径中;
若父网块位于上层,则将点(x,y,z+1)添加到布线路径中。
9.3将父网块赋值给current,current四个顶点中costF最小扩展代价的一个顶点赋值给minV,继续同步骤9.1~9.3执行。
以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。
Claims (3)
1.一种基于网块的快速多层布线方法,其特征在于,包括以下步骤:
(1)读入布线区域内的障碍信息、待布线网信息和工艺信息,
其中,所述待布线网信息包括该待布线网的可用布线层信息,布线区域大小信息以及起始点和终止点信息或起始模块和终止模块信息;
所述工艺信息包括待布线网的布线层层数,布线区域允许的最小线宽值,各布线层通孔直径大小,允许最小的线到线间距值,允许最小的线到通孔间距值,允许最小的通孔到通孔间距值;
(2)依据上述障碍信息建立并规范障碍列表,具体实现步骤如下:
2.1根据步骤(1)中所述的障碍信息建立障碍列表;
2.2遍历障碍列表,调用多边形到矩形的转化程序将每一个多边形障碍转化为至少一个矩形障碍,同时保留相应的是否是通孔的属性;
2.3删除障碍列表中存储的原多边形障碍,将转化得到的矩形障碍添加到障碍列表中;
(3)扩展障碍列表中各障碍的边界,具体实现如下:
3.1初始化横坐标集合和纵坐标集合;
3.2遍历步骤(2)得到的障碍列表,将非通孔矩形障碍的每一个边界分别按照“线宽/2+线间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;将通孔矩形障碍的每一个边界按照“线宽/2+线到通孔的间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;
3.3遍历步骤(2)得到的障碍列表,将非通孔矩形障碍的每一个边界分别按照“通孔直径/2+线到通孔间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;将通孔矩形障碍的每一个边界分别按照“通孔直径/2+通孔到通孔的间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;
3.4将(3.2)和(3.3)步中的所有垂直扩展边界的横坐标加入到横坐标集合中,所有水平扩展边界的纵坐标加入到纵坐标集合中;
(4)构造三维不均匀网格阵列,该三维不均匀网格阵列表示为由步骤(3)所述的横坐标集合,所述的纵坐标集合,以及所述布线层层数构成的三维网格数组;
(5)标记布线起始点和终止点;
(6)设置三维不均匀网格阵列的允许扩展方向;
(7)将具有相同属性的网格合并为网块,具体实现如下:
7.1遍历用于表示三维不均匀网格阵列的三维网格数组,按照水平方向优先的策略将具有相同属性的网格合并为一个网块,并将网格的属性赋给其所属的网块,该属性包括允许扩展方向和起点终点属性;其中,属性是否相同,按照下面的步骤7.1.2-7.1.4来确定:
7.1.2若网格点都是不合法网格点,认为其属性相同;
7.1.3若网格都是合法网格点,且网格的允许扩展方向相同,且网格的起点终点属性相同时,认为其属性相同;
7.1.4除上述两种外的其他情况,均认为属性不相同;
7.2将属性为起点的网块添加到布线起始网块链表中,将属性为终点的网块添加到布线终止网块链表中;
(8)采用A*算法对网块进行布线路径搜索,具体实现步骤如下:
8.1定义起始网块和终止网块的各顶点的扩展代价以及起始网块和终止网块的扩展代价;
8.2创建待扩展网块链表,按照扩展代价由小到大的顺序保存所有已访问而未扩展的网块;
8.3遍历步骤(7)所述的起始网块链表,计算每个扩展块相应的扩展代价,并将其插入到待扩展网块链表中;
8.4判断所述待扩展网块链表中是否有待扩展网块,是,继续以下步骤,否,结束搜索并输出搜索失败;
8.5读取待扩展网块链表中扩展代价最小的网块,记为当前待扩展块,并判断当前待扩展块是否在终止网块链表中;是,结束搜索,并输出搜索成功,否,继续以下步骤;
8.6遍历当前待扩展块允许的扩展方向,寻找出各允许扩展方向上与当前待扩展块相邻的所有网块,并将其插入到相邻网块列表中;
8.7遍历相邻网块列表,计算当前遍历到的网块的四个顶点的扩展代价是否变小,是,该网块需再进行扩展,进行下一步骤,否,该网块不需再进行扩展,将该网块从相邻网块列表中删除;
8.8遍历相邻网块列表,如果当前遍历到的网块已经在待扩展网块链表中,则将该网块从待扩展网块链表中删除,然后调用分裂模块对当前遍历到的网块进行分裂,并将分裂后得到的网块添加到网块集合中;
8.9计算网块集合中各网块的扩展代价,并将其按照计算得到的扩展代价插入到待扩展网块链表的适当位置,返回步骤8.4;
(9)输出搜索路径,具体实现步骤如下:
9.1读取步骤(8)中搜索到的在终止网块链表中的当前待扩展网块;
9.2将当前待扩展网块的四个顶点中扩展代价最小的一个顶点(x,y,z)添加到布线路径中;
9.3若该顶点的父网块在其左边,则将点(当前待扩展网块的左边界,y,z)添加到布线路径中;
若该顶点的父网块在其右边,则将点(当前待扩展网块的右边界,y,z)添加到布线路径中;
若该顶点的父网块在其下边,则将点(x,当前待扩展网块的下边界,z)添加到布线路径中;
若该顶点的父网块在其上边,则将点(x,当前待扩展网块的上边界,z)添加到布线路径中;
若该顶点的父网块位于下层,则将点(x,y,z-1)添加到布线路径中;
若该顶点的父网块位于上层,则将点(x,y,z+1)添加到布线路径中;
其中,顶点从哪个网块扩展过来的,该网块即为该顶点的父网块;
9.4将父网块作为当前待扩展网块,判断当前待扩展模块是否在起始链表中,是,输出布线路径,否,继续执行步骤9.2~9.4。
2.根据权利要求1所述基于网块的快速多层布线方法,其特征在于,步骤(5)具体实现如下:
5.1若布线模式为点到点模式,将布线起点对应的步骤(4)所述的三维网格数组中元素的属性设置为起点,将布线终点对应的三维网格数组元素的属性设为终点;
5.2若布线模式为模块到模块模式,调用多边形到矩形的转化程序将起始模块和终止模块分别转化为起始矩形链表和终止矩形链表,然后,分别遍历起始矩形链表和终止矩形链表,将与起始矩形内部和矩形边界上的点相对应的所述的三维网格数组中的元素的属性设为起点,将与终止矩形内部和矩形边界上的点相对应的所述的三维网格数组中的元素的属性设为终点。
3.根据权利要求1或2所述基于网块的快速多层布线方法,其特征在于,步骤(6)具体实现如下:
6.1设置同层扩展的允许扩展方向;
遍历步骤(2)得到的障碍列表,若该矩形障碍是非通孔障碍,设置三维不均匀网格阵列中所有在该矩形障碍按照“线宽/2+线间距”扩展的左,右,上,下边界上的网格点,分别不可向右,左,下,上扩展,并设置由该左,右,上,下边界所构成的矩形内部的所有网格点为不合法网格点;若该障碍是通孔障碍,设置三维不均匀网格阵列中所有在该障碍按照“通孔直径/2+线到通孔间距”扩展的左,右,上,下边界上的网格点,分别不可向右,左,下,上扩展,并设置由该左,右,上,下边界所构成的矩形内部的所有网格点为不合法网格点;
6.2设置跨层扩展的允许扩展方向;
遍历步骤(2)得到的障碍列表,若该矩形障碍是非通孔障碍,设置三维不均匀网格阵列中所有在该障碍按照“线宽/2+线到通孔间距”扩展的左,右,上,下边界所构成的矩形内部的网格点不能向相邻层的网格扩展,并设置相邻层在对应区域内的网格点不能向该层扩展;若该障碍是通孔障碍,设置三维不均匀网格阵列中所有在该障碍按照“通孔直径/2+通孔到通孔间距”扩展的左,右,上,下边界所构成的矩形内部的网格点不能向相邻层的网格扩展,并设置相邻层在对应区域内的网格点不能向该层扩展。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105097594A CN101980216B (zh) | 2010-10-18 | 2010-10-18 | 基于网块的快速多层布线方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105097594A CN101980216B (zh) | 2010-10-18 | 2010-10-18 | 基于网块的快速多层布线方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101980216A CN101980216A (zh) | 2011-02-23 |
CN101980216B true CN101980216B (zh) | 2012-11-28 |
Family
ID=43600718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105097594A Active CN101980216B (zh) | 2010-10-18 | 2010-10-18 | 基于网块的快速多层布线方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101980216B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064992B (zh) * | 2011-10-20 | 2016-08-24 | 台达电子企业管理(上海)有限公司 | 一种基于有向网格点的布线存储结构及其布线方法 |
CN102663161B (zh) * | 2012-03-16 | 2014-07-02 | 苏州芯禾电子科技有限公司 | 一种射频集成电路三角网格剖分的方法 |
CN102867095B (zh) * | 2012-09-20 | 2015-03-04 | 清华大学 | 一种总线布线方法 |
CN104573263B (zh) * | 2015-01-23 | 2018-03-02 | 武汉理工大学 | 基于分裂块的无网格模拟电路的布线方法 |
CN105631118B (zh) * | 2015-12-25 | 2019-12-27 | 深圳市紫光同创电子有限公司 | 可编程逻辑器件图形绘制方法及装置 |
CN107491598B (zh) * | 2017-07-28 | 2020-02-11 | 清华大学 | 大规模微流控生物芯片快速布线方法及设备 |
CN107908883A (zh) * | 2017-11-20 | 2018-04-13 | 北京华大九天软件有限公司 | 一种异形版图中点到线的跨障碍布线方法 |
CN111368493B (zh) * | 2018-12-26 | 2023-03-14 | 杭州广立微电子股份有限公司 | 一种基于稀疏网格的自动版图布线生成方法 |
CN111062180B (zh) * | 2019-11-08 | 2023-07-18 | 深圳市紫光同创电子有限公司 | 一种fpga布线方法及装置 |
CN112685991B (zh) * | 2020-12-22 | 2022-11-01 | 北京华大九天科技股份有限公司 | 一种满足约束的布线方法 |
CN112818626B (zh) * | 2021-02-26 | 2022-08-23 | 北京华大九天科技股份有限公司 | 一种基于多重掩膜版的版图布线方法 |
CN112883682B (zh) * | 2021-03-15 | 2022-04-29 | 北京华大九天科技股份有限公司 | 集成电路的总体布线方法及设备和存储介质 |
CN113283209B (zh) * | 2021-05-24 | 2023-01-31 | 海光信息技术股份有限公司 | 互连线设计方法及装置、芯片、电子设备和计算机可读存储介质 |
CN113486484B (zh) * | 2021-07-19 | 2023-07-18 | 杭州群核信息技术有限公司 | 一种网格布线方法、装置及存储介质 |
CN115168528B (zh) * | 2022-08-26 | 2023-03-17 | 北京国科恒通科技股份有限公司 | 一种设备线路图的生成方法、装置、设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3208014B2 (ja) * | 1994-07-20 | 2001-09-10 | 三菱電機株式会社 | 配線経路調査装置および配線経路調査方法 |
CN1963827A (zh) * | 2006-12-08 | 2007-05-16 | 清华大学 | 基于多步长迷宫算法的模拟集成电路自动布线方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5233761B2 (ja) * | 2009-03-12 | 2013-07-10 | 富士通株式会社 | 配線経路作成支援方法、配線経路作成支援プログラム、及び配線経路作成支援装置 |
-
2010
- 2010-10-18 CN CN2010105097594A patent/CN101980216B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3208014B2 (ja) * | 1994-07-20 | 2001-09-10 | 三菱電機株式会社 | 配線経路調査装置および配線経路調査方法 |
CN1963827A (zh) * | 2006-12-08 | 2007-05-16 | 清华大学 | 基于多步长迷宫算法的模拟集成电路自动布线方法 |
Non-Patent Citations (2)
Title |
---|
JP特许第3208014号B2 2001.09.10 |
Yao Hailong等."Full-Chip Scalable Routing Framework Considering Congestion and Performance".《半导体学报》.2006,第27卷(第7期),1201-1208页. * |
Also Published As
Publication number | Publication date |
---|---|
CN101980216A (zh) | 2011-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101980216B (zh) | 基于网块的快速多层布线方法 | |
CN101957876B (zh) | 考虑通孔的基于不均匀网格的多层布线方法 | |
CN110795908B (zh) | 偏差驱动的总线感知总体布线方法 | |
US6507941B1 (en) | Subgrid detailed routing | |
CN111368493B (zh) | 一种基于稀疏网格的自动版图布线生成方法 | |
JPH08227428A (ja) | プリント基板cad装置 | |
CN112685991B (zh) | 一种满足约束的布线方法 | |
US8930869B2 (en) | Method, program, and apparatus for aiding wiring design | |
US20100332193A1 (en) | Method of Multi-segments Modeling Bond Wire Interconnects with 2D Simulations in High Speed, High Density Wire Bond Packages | |
CN112818626B (zh) | 一种基于多重掩膜版的版图布线方法 | |
CN114386356A (zh) | 芯片设计的布线方法及装置、设备、存储介质 | |
CN114970439A (zh) | 自动布线方法、装置、计算机设备、存储介质 | |
CN101944149A (zh) | 基于无网格模型的集成电路点到点的布线方法 | |
CN111814235A (zh) | 车位排布优化和多边形简化方法、装置、设备和存储介质 | |
CN104318025A (zh) | 八角结构Steiner最小树下的VLSI绕障布线器 | |
CN105069228A (zh) | 一种在spare cell上加入spare via的方法 | |
Ho et al. | Crosstalk-and performance-driven multilevel full-chip routing | |
CN111125993A (zh) | 一种满足最小Cut数量约束的布线方法 | |
CN111783203A (zh) | 基于bim的楼板外轮廓体生成方法、装置、设备及介质 | |
CN106874543B (zh) | 版图的lef图形处理方法 | |
JPH0421910B2 (zh) | ||
US9830416B2 (en) | Method for analog circuit placement | |
CN112989749A (zh) | 一种集成电路版图布线中引脚访问方法及装置 | |
US6978433B1 (en) | Method and apparatus for placement of vias | |
CN115983190A (zh) | 一种满足多重掩膜约束的集成电路版图布线方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |