CN101957876B - 考虑通孔的基于不均匀网格的多层布线方法 - Google Patents
考虑通孔的基于不均匀网格的多层布线方法 Download PDFInfo
- Publication number
- CN101957876B CN101957876B CN 201010282035 CN201010282035A CN101957876B CN 101957876 B CN101957876 B CN 101957876B CN 201010282035 CN201010282035 CN 201010282035 CN 201010282035 A CN201010282035 A CN 201010282035A CN 101957876 B CN101957876 B CN 101957876B
- Authority
- CN
- China
- Prior art keywords
- point
- obstacle
- hole
- rectangle
- expansion
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 239000004744 fabric Substances 0.000 claims description 30
- 238000007789 sealing Methods 0.000 claims description 18
- 230000009466 transformation Effects 0.000 claims description 8
- 230000008602 contraction Effects 0.000 claims description 5
- 238000003860 storage Methods 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 230000015572 biosynthetic process Effects 0.000 claims description 2
- 230000001131 transforming effect Effects 0.000 claims description 2
- 238000013461 design Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 239000012141 concentrate Substances 0.000 description 3
- 239000002184 metal Substances 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 230000007480 spreading Effects 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)基于上述允许扩展方向,采用A*算法对三维不均匀网格进行布线路径搜索;
(8)输出搜索路径。
其中,步骤(1)中,所述待布线网信息包括该待布线网的可用布线层信息,布线区域大小信息以及起始点和终止点信息或起始模块和终止模块信息;
所述工艺信息包括待布线网的布线层层数,布线区域允许的最小线宽值,各布线层通孔直径大小,允许最小的线到线间距值,允许最小的线到通孔间距值,允许最小的通孔到通孔间距值。
步骤(2)中,所述障碍列表中的每个列表元素是由该障碍所在布线层层号,顶点坐标,以及该障碍是通孔或非通孔来表示,
进一步地,步骤(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)具体实现如下:
4.1初始化起始点集合和终止点集合;
4.2若布线模式为点到点模式,将布线起点添加到起始点集中,将布线终点添加到终止点集中;若布线模式为模块到模块模式,进行步骤4.2.1~4.2.6;
4.2.1调用多边形到矩形的转化程序分别将起始模块和终止模块转化为至少一个矩形模块,并将转化后的矩形模块分别添加到起始矩形链表和终止矩形链表中;
4.2.2分别遍历起始矩形链表和终止矩形链表,读取各矩形模块的左边界,右边界,下边界和上边界,并依据所述的工艺信息将每一个边界分别按照“线宽/2”的距离进行收缩,得出垂直收缩边界和水平收缩边界;
4.2.3将垂直收缩边界的横坐标添加到横坐标集合中,将水平收缩边界的纵坐标添加到纵坐标集合中;
4.2.4分别对纵坐标集合和横坐标集合中的坐标进行排序并去重;
4.2.5将横坐标集合中各横坐标对应的垂直线分别与起始矩形链表中每个矩形模块的上边界和下边界的交点,纵坐标集合中各纵坐标对应的水平线分别与起始矩形链表中每个矩形模块的左边界和右边界的交点,以及横坐标集合中各横坐标对应的垂直线和纵坐标集合中的各纵坐标对应的水平线在起始模块内部的交点添加到起始点集合中;
4.2.6将横坐标集合中各横坐标对应的垂直线与终止矩形链表中每个矩形模块的上边界和下边界的交点,纵坐标集合中各纵坐标对应的水平线与终止矩形链表中每个矩形模块的左边界和右边界的交点,以及横坐标集合中各横坐标对应的垂直线和纵坐标集合中的各纵坐标的水平线在终止模块内部的交点添加到终止点集合中。
其中,本发明所述的三维不均匀网格阵列表示为由步骤(3)所述的横坐标集合,所述的纵坐标集合,以及所述布线层层数构成的三维数组。
进一步地,步骤(6)具体实现如下:
6.1设置同层扩展的允许扩展方向;
遍历步骤(2)得到的障碍列表,若矩形障碍是非通孔障碍,设置三维不均匀网格阵列中所有在该非通孔障碍按照“线宽/2+线间距”扩展的左,右,上,下边界上的网格点,分别不可向右,左,下,上扩展,并设置由该左,右,上,下边界所构成的矩形内部的所有网格点为不合法网格点;若矩形障碍是通孔障碍,设置三维不均匀网格阵列中所有在该通孔障碍按照“通孔直径/2+线到通孔间距”扩展的左,右,上,下边界上的网格点,分别不可向右,左,下,上扩展,并设置由该左,右,上,下边界所构成的矩形内部的所有网格点为不合法网格点;
6.2设置跨层扩展的允许扩展方向;
遍历步骤(2)得到的障碍列表,若矩形障碍是非通孔障碍,设置三维不均匀网格阵列中所有在该非通孔障碍按照“线宽/2+线到通孔间距”扩展的左,右,上,下边界所构成的矩形内部的网格点不能向相邻层的网格扩展,并设置相邻层在对应区域内的网格点不能向该层扩展;若矩形障碍是通孔障碍,设置三维不均匀网格阵列中所有在该通孔障碍按照“通孔直径/2+通孔到通孔间距”扩展的左,右,上,下边界所构成的矩形内部的网格点不能向相邻层的网格扩展,并设置相邻层在对应区域内的网格点不能向该层扩展。
进一步地,步骤(7)A*算法进行路径搜索的具体实现步骤如下:
7.1创建待扩展点的链表,保存所有已生成而未扩展的点;以及封闭链表,记录已访问过的点;
7.2将起始点集合中的所有点按照该点到终止点集合中点的最短距离有序地列入待扩展点的链表中;
7.3在上述待扩展点的链表中读取扩展代价最小的点n,并判断点n是否在终止点集合中;是,结束搜索,否,继续下面的步骤;
7.4对点n进行扩展,并对扩展后得到的点x进行判断:
若点x在待扩展点的链表中,比较点x的不同路径的扩展代价,若该扩展代价小于待扩展点的链表中的扩展代价,用该扩展代价更新待扩展点的链表中的扩展代价,并将具有新的扩展代价的点x转移到链表中;
若点x在封闭链表中,比较点x的不同路径的扩展代价,若该扩展代价小于封闭链表中的扩展代价,用该扩展代价更新封闭链表中的扩展代价,并将点x放入待扩展点的链表中;
若点x既不在待扩展点的链表中,也不在封闭链表中;求解点x的扩展代价,并将点x放入待扩展点的链表中;
7.5将点n放入到封闭列表中;
7.6按照扩展代价将待扩展点的链表中的各点进行排序,重复步骤7.3~7.6。
进一步地,步骤(8)依据步骤(7)的搜索结果;搜索成功,输出搜索到的路径,搜索失败,输出布线失败。
本发明所述考虑通孔的基于不均匀网格的多层布线方法不仅根据线宽和线间距对障碍边界进行扩展,同时还根据通孔大小和通孔间距对障碍边界进行了扩展,并基于上述扩展结果构造出了一三维不均匀网格阵列。此外,本发明在路径搜索前,还分别设置同层扩展的允许扩展方向和跨层扩展的允许扩展方向,使得搜索结果满足设计规则。
本发明具有以下几点有益的效果:
1、本发明可以处理不同布线层的不同线宽和最小线间距,同时可以满足通孔的设计规则约束。
2、本发明同时支持点到点布线模式和模块到模块布线模式,将点或者模块统一转化为点集,点集中点的选取保证在多层搜索中可以找到最优路径。
3、本发明可使用C++语言并用面向对象思想设计和实现,具有较强的平台通用性,可以在不同的平台上运行。
附图说明
图1为基于隐式连接图的布线方法;
图2为基于网块的布线方法图;
图3为本发明考虑通孔的基于不均匀网格的多层布线方法的流程图;
图4为本发明所述非通孔障碍根据线宽和线间距约束扩展边界的示意图;
图5为本发明所述通孔障碍根据线宽和线间距约束扩展边界的示意图;
图6为本发明所述非通孔障碍根据通孔大小和通孔间距约束扩展边界的示意图;
图7为本发明所述通孔障碍根据通孔大小和通孔间距约束扩展边界的示意图;
图8为本发明起始点模块或终止点模块转化为点集的示意图;
图9为本发明所述三维不均匀网格阵列的一具体实施例示意图。
具体实施方式
下面结合说明书附图对本发明的具体实施方式做详细描述。
如图3所示,本发明考虑通孔的基于不均匀网格的多层布线方法的流程图。图中所示本发明的具体实施步骤如下:
(1)读入布线区域内的障碍信息、待布线网信息和工艺信息。
所述的待布线网信息包括该待布线网的可用布线层信息,布线区域大小信息,以及起始点和终止点信息或起始模块和终止模块信息;其中,待布线网的可用布线层信息由用户指定输入。工艺信息主要包括该布线层层数,布线区域允许的最小线宽值,通孔直径大小,允许最小的线到线间距值,允许最小的线到通孔间距值,允许最小的通孔到通孔间距值。
(2)建立并规范障碍列表。
2.1依据读入的障碍信息建立障碍列表obsList,其中,所有障碍的形状均为直角多边形,由该直角多边形所在的布线层层号和多边形的顶点坐标表示,同时障碍还包括一个表示其是否是通孔的属性:通孔或非通孔。
2.2规范障碍列表obsList,即遍历已建立的障碍列表obsList,调用多边形到矩形的转化程序将每一个多边形障碍都转化为矩形障碍;然后,删除障碍列表中存储的原多边形障碍,将转化得到的矩形障碍添加到障碍列表中。
(3)扩展障碍边界。
3.1初始化横坐标集合和纵坐标集合;
3.2根据线宽和线间距约束扩展障碍边界;
遍历步骤(2)得到的障碍列表obsList,将非通孔矩形障碍的每一个边界分别按照“线宽/2+线间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;将通孔矩形障碍的每一个边界分别按照“线宽/2+线到通孔的间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;
3.3根据通孔大小和间距约束扩展障碍边界;
遍历步骤(2)得到的障碍列表obsList,将非通孔矩形障碍的每一个边界分别按照“通孔直径/2+线到通孔间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;将通孔矩形障碍的每一个边界分别按照“通孔直径/2+通孔到通孔的间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;
3.4将(3.2)和(3.3)步中的所有垂直扩展边界的横坐标加入到横坐标集合xset中,所有水平扩展边界的纵坐标加入到纵坐标集合yset中。
(4)设置起始点集合和终止点集合。
4.1初始化起始点集合S和终止点集合T;
4.2若布线模式为点到点模式,则将布线起点加入起始点集中,将布线终点加入终止点集中;若布线模式为模块到模块模式,进行如下步骤;
首先,调用多边形到矩形的转化程序分别将起始模块和终止模块转化为至少一个矩形模块,并分别将各矩形模块相应地添加到起始矩形链表和终止矩形链表中;然后对链表中的每个矩形模块的边界分别按照“线宽/2”的距离进行收缩,得到垂直收缩边界和水平收缩边界;
然后,将垂直收缩边界的横坐标加入到横坐标集合中,水平收缩边界的纵坐标加入到纵坐标集合中,对横坐标集合和纵坐标集合重新排序并去重;
最后,将横坐标集合中各横坐标对应的垂直线分别与起始矩形链表中每个矩形的上边界和下边界的交点,纵坐标集合中各纵坐标对应的水平线分别与起始矩形链表中每个矩形的左边界和右边界的交点,以及横坐标集合中各横坐标对应的垂直线和纵坐标集合中的各纵坐标对应的水平线在起始模块内部的交点添加到起始点集合中;同理,将横坐标集合中各横坐标对应的垂直线与终止矩形链表中每个矩形的上边界和下边界的交点,纵坐标集合中各纵坐标对应的水平线与终止矩形链表中每个矩形的左边界和右边界的交点,以及横坐标集合中各横坐标对应的垂直线和纵坐标集合中的各纵坐标的水平线在终止模块内部的交点添加到终止点集合中。
(5)构造三维不均匀网格阵列。
三维不均匀网格阵列表示为由步骤(3)得到的横坐标集合xset和纵坐标集合yset,以及布线层数构造的三维数组Info[sizeX×sizeY×sizeZ],其中sizeX是数组的列数,sizeY是数组的行数,sizeZ是布线层数。
(6)设置三维不均匀网格阵列网格的允许扩展方向。
6.1根据线宽和线间距设置同层扩展的允许扩展方向;
遍历步骤(2)得到的障碍列表obsList,在横坐标集合xset中搜索依据线宽和线间距约束扩展的障碍边界的左边界和右边界,在纵坐标集合yset中搜索依据线宽和线间距约束扩展的障碍边界的上边界和下边界,设置位于左边界上的网格点不可向右扩展,位于右边界上的网格点不可向左扩展;位于上边界的网格点不可向下扩展,位于下边界上的网格点不可向上扩展,并设置由该边界所围成矩形内部的所有网格点为不合法网格点。
6.2根据通孔设计规则约束设置跨层扩展的允许扩展方向;
遍历步骤(2)得到的障碍列表obsList,在横坐标集合xset中搜索依据通孔大小和通孔间距扩展的障碍边界的左边界和右边界,在纵坐标集合yset中搜索依据通孔大小和通孔间距扩展的障碍边界的上边界和下边界,设置由上述左边界,右边界,上边界和下边界所围成矩形内部的网格点不能向相邻层扩展,并设置相邻层在对应区域内的网格不能向该层扩展。
(7)采用A*搜索算法对三维不均匀网格阵列进行布线路径的搜索;
在搜索过程开始时,将起始点集合S中的所有点按照该点到终止点集合T中点的最短距离有序地***待扩展点的链表中,A*算法停止的条件是当前搜索到的网格在终止点集合T中。然后,将搜索到的路径进行保存。在多层布线模式中,网格点除了向同层相邻的网格点扩展之外还可以向相邻层扩展。A*搜索算法的具体实现步骤如下:
7.1创建待扩展点的链表,保存所有已生成而未扩展的点;以及封闭链表,记录已访问过的点;
7.2将起始点集合中的所有点按照该点到终止点集合中点的最短距离有序地列入待扩展点的链表中;
7.3在上述待扩展点的链表中读取扩展代价最小的点n,并判断点n是否在终止点集合中;是,结束搜索,否,继续下面的步骤;
7.4对点n进行扩展,并对扩展后得到的点x进行判断:
若点x在待扩展点的链表中,比较点x的不同路径的扩展代价,若该扩展代价小于待扩展点的链表中的扩展代价,用该扩展代价更新待扩展点的链表中的扩展代价,并将点x放入待扩展点的链表中;
若点x在封闭链表中,比较点x的不同路径的扩展代价,若该扩展代价小于封闭链表中的扩展代价,用该扩展代价更新封闭链表中的扩展代价,并将点x放入待扩展点的链表中;
若点x既不在待扩展点的链表中,也不在封闭链表中;求解点x的扩展代价,并将点x放入待扩展点的链表中;
7.5将点n放入到封闭列表中;
7.6按照扩展代价将待扩展点的链表中的各点进行排序,重复步骤7.3~7.6。
(8)输出搜索结果;
如果搜索成功,输出搜索到的路径;否则返回布线失败。
下面通过本发明的一具体实施例,对本发明的实现过程作进一步地说明。
本实施例是采用本发明所述考虑通孔的基于不均匀网格的多层布线方法,使用C++语言在LINUX/UNIX环境下开发实现的。本实施例的实现程序是以布线区域内的障碍信息、待布线网信息以及工艺信息为输入;输出为搜索到的布线路径。该程序的具体执行流程:
(1)程序读入布线信息
程序读入不局限于以配置文件形式提供的布线区域大小、布线区域内的障碍信息、待布线网信息和工艺信息。其中,待布线网信息包括该待布线网的可用布线层,布线区域大小和布线模式,即该线网可以在哪几层金属层上布线,布线区域的最大边界,以及点到点模式或模块到模块模式。若布线模式为点到点模式,布线信息要提供布线的起点和终点;否则提供布线起始模块和终止模 块,起始模块和终止模块均为直角多边形,由多边形所在的布线层号和顶点坐标表示。工艺信息主要包括该布线层层数sizeZ,布线区域允许的最小线宽值lineW[sizeZ],通孔直径大小viaW[sizeZ],允许最小的线到线间距值ltol[sizeZ],允许最小的线到通孔间距值ltov[sizeZ],允许最小的通孔到通孔间距值vtov[sizeZ],这些大小和间距信息均为数组,数组的大小等于sizeZ,下标表示对应的布线层层号。
(2)建立障碍列表obsList,并将其中的每一个多边形障碍都转化为矩形障碍;
程序根据步骤(1)读入的信息建立布线过程所必须的数据结构,主要包括障碍列表obsList,其中所有障碍的形状均为直角多边形,由该直角多边形所在的布线层层号和直角多边形的顶点坐标表示,每个顶点由其横坐标和纵坐标表示,同时障碍还包括一个表示其是否是通孔的属性:即通孔或非通孔属性。然后,调用多边形到矩形的转化程序将障碍列表中所有的直角多边形障碍转化为多个矩形障碍,同时保留相应的是否是通孔的属性。
(3)扩展障碍边界
3.1初始化横坐标集合xset和纵坐标集合yset。
3.2依据线宽和线间距约束扩展障碍边界:
遍历由步骤(2)得到的障碍列表obsList,设当前遍历到的障碍所在的层号为z,若该障碍为非通孔障碍,将其上边界,下边界,左边界,右边界分别按照距离lineWz/2+ltolz进行扩展(如图4所示);若该障碍为通孔障碍,将其上边界,下边界,左边界,右边界分别按照距离lineWz/2+ltovz进行扩展(如图5所示)。然后,将扩展障碍的左边界和右边界对应的横坐标添加到xset中,扩展障碍的上边界和下边界对应的纵坐标添加到yset中。
3.3依据通孔大小和通孔间距约束扩展障碍边界:
遍历由步骤(2)得到的障碍列表obsList,设当前遍历到的障碍所在的层号 为z,若该障碍为非通孔障碍,将其上边界,下边界,左边界,右边界分别按照距离viaWz/2+ltovz进行扩展(如图6所示);若该障碍为通孔障碍,将其上边界,下边界,左边界,右边界分别按照距离viaWz/2+vtovz进行扩展(如图7所示)。然后,将扩展障碍的左边界和右边界对应的横坐标添加到xset中,扩展障碍的上边界和下边界对应的纵坐标添加到yset中。
(4)设置布线起始点集合和终止点集合:
4.1初始化起始点集合S和终止点集合T。
4.2若布线模式为点到点模式,则将布线起点加入起始点集中,将布线终点加入终止点集中;
4.3若布线模式为模块到模块模式:
4.3.1将起始模块和终止模块通过多边形到矩形的转化程序分别转化至少一个矩形模块,并分别将各矩形模块相应地添加到起始矩形链表sList和终止矩形链表tList中。
4.3.2初始化一个点集P,分别将步骤(4.3.1)得到的起始矩形链表sList和终止矩形链表tList赋给矩形链表list,调用下面步骤(4.3.3)~(4.3.4)将矩形链表list转化为点集P,然后分别将P赋值给相应的起始点集S和终止点集T。
4.3.3遍历矩形链表list,从当前遍历的矩形的属性中读取矩形的左边界left,右边界right,下边界bottom,上边界top。然后,将left+width/2和right-width/2依次添加到横坐标集合中,将bottom+width/2和top-width/2依次添加到纵坐标集合中,其中width由步骤(1)读入。
4.3.4将矩形边界上和矩形内部的网格点加入到点集中:
步骤(3)得到的横坐标集合xset和纵坐标集合yset中横坐标对应的垂直线和各纵坐标对应的水平线相交得到一系列网格点,将位于矩形模块内部的网格点加入到点集P中;并将横坐标集合xset中各横坐标对应的垂直线与矩形模型的上下边界的交点加入到P中,将纵坐标集合yset中的纵坐标对应的水平线与 矩形左右边界的交点加入P中,如图8所示,图中黑色的点2都加入到点集P中,矩形框1为起始点矩形模块。
依上述步骤设置布线起始点集合和终止点集合的目的是,由于同层扩展扩展到矩形模块时首先扩展到矩形模块边界,而跨层扩展有可能直接扩展到模块的内部,所以位于模块边界上和内部的点都要加入点集中。
(5)构造三维不均匀网格
根据步骤(3)得到的横坐标集合xset和纵坐标集合yset,以及布线层数构造三维数组Info[sizeX×sizeY×sizeZ],其中sizeX是数组的列数,sizeY是数组的行数,sizeZ是布线层数。横坐标集合xset中的一个元素为布线区域内的一个横坐标,对应于一个布线层内的一条纵向延长线,集合xset中的所有元素对应一个布线层内的多条纵向延长线。同样,纵坐标集合yset中的所有元素对应一个布线层内的多条横向延长线。多条纵向延长线和多条横向延长线相交,将一个布线层划分为一个不均匀二维网格阵列,将该不均匀网格映射到所有层中,则形成一个三维不均匀网格阵列,如图9所示,每一个网格对应三维数组Info[sizeX×sizeY×sizeZ]的一个元素,sizeX等于xset中元素的个数,sizeY等于yset中元素的个数。
(6)设置网格的允许扩展方向
6.1根据线宽和线间距设置同层扩展的允许扩展方向
遍历障碍列表obsList,在xset中搜索按照步骤(3)中3.1扩展的左右边界,在yset中搜索根据步骤(3)中3.1扩展的上下边界,设置位于左边界上的网格点为不可向右扩展,位于右边界上的网格点不可向左扩展;位于上边界的网格点不可向下扩展,位于下边界上的网格点不可向上扩展,并设置由该边界所围成矩形内部的所有网格点为不合法网格点。
6.2根据通孔设计规则约束设置跨层扩展的允许扩展方向
在xset中搜索按照步骤(3)中3.2扩展的左右边界,在yset中搜索根据步骤(3)中3.2扩展的上下边界,设置由该边界所围成矩形内部的网格点不能向 相邻层扩展,并设置相邻层在对应区域内的网格不能向该层扩展。
(7)基于上述允许扩展方向,采用A*算法对三维不均匀网格进行布线路径搜索
采用A*搜索算法对三维不均匀网格进行布线路径的搜索,在搜索过程开始时,要将起始点集中的所有点按照该点到终止点集中点的最短距离有序地***待扩展点的链表中,A*算法停止的条件是当前搜索到的网格在终止点集T中。并将搜索到的路径进行保存。在多层布线模式中,网格点除了向同层相邻的网格点扩展之外还可以向相邻层扩展。
(8)输出搜索结果
如果布线成功,输出连线路径,否则,输出布线失败。
本发明所述考虑通孔的基于不均匀网格的多层布线方法,根据已有的布局结果和工艺信息,将布线区域划分成三维不均匀网格阵列,然后,基于已设置的三维不均匀网格阵列的允许扩展方向,利用路径搜索方法完成布线。本发明能够处理不同布线层的不同线宽和最小间距,同时满足通孔的设计规则约束,解决了现有集成电路多层布线存在的问题。
以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。
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)设置起始点集合和终止点集合,具体实现如下:
4.1初始化起始点集合和终止点集合;
4.2若布线模式为点到点模式,将布线起点添加到起始点集合中,将布线终点添加到终止点集合中;若布线模式为模块到模块模式,进行步骤4.2.1~4.2.6;
4.2.1调用多边形到矩形的转化程序分别将起始模块和终止模块转化为至少一个矩形模块,并将转化后的矩形模块分别添加到起始矩形链表和终止矩形链表中;
4.2.2分别遍历起始矩形链表和终止矩形链表,读取各矩形模块的左边界,右边界,下边界和上边界,并依据所述的工艺信息将每一个边界分别按照“线宽/2”的距离进行收缩,得出垂直收缩边界和水平收缩边界;
4.2.3将垂直收缩边界的横坐标添加到横坐标集合中,将水平收缩边界的纵坐标添加到纵坐标集合中;
4.2.4分别对纵坐标集合和横坐标集合中的坐标进行排序并去重;
4.2.5将横坐标集合中各横坐标对应的垂直线分别与起始矩形链表中每个矩形模块的上边界和下边界的交点,纵坐标集合中各纵坐标对应的水平线分别与起始矩形链表中每个矩形模块的左边界和右边界的交点,以及横坐标集合中各横坐标对应的垂直线和纵坐标集合中的各纵坐标对应的水平线在起始模块内部的交点添加到起始点集合中;
4.2.6将横坐标集合中各横坐标对应的垂直线与终止矩形链表中每个矩形模块的上边界和下边界的交点,纵坐标集合中各纵坐标对应的水平线与终止矩形链表中每个矩形模块的左边界和右边界的交点,以及横坐标集合中各横坐标对应的垂直线和纵坐标集合中的各纵坐标的水平线在终止模块内部的交点添加到终止点集合中;
(5)构造三维不均匀网格阵列;
(6)设置三维不均匀网格阵列的允许扩展方向,具体实现如下:
6.1设置同层扩展的允许扩展方向;
遍历步骤(2)得到的障碍列表,若矩形障碍是非通孔障碍,设置三维不均匀网格阵列中所有在该非通孔障碍按照“线宽/2+线间距”扩展的左,右,上,下边界上的网格点,分别不可向右,左,下,上扩展,并设置由该左,右,上,下边界所构成的矩形内部的所有网格点为不合法网格点;若矩形障碍是通孔障碍,设置三维不均匀网格阵列中所有在该通孔障碍按照“通孔直径/2+线到通孔间距”扩展的左,右,上,下边界上的网格点,分别不可向右,左,下,上扩展,并设置由该左,右,上,下边界所构成的矩形内部的所有网格点为不合法网格点;
6.2设置跨层扩展的允许扩展方向;
遍历步骤(2)得到的障碍列表,若矩形障碍是非通孔障碍,设置三维不均匀网格阵列中所有在该非通孔障碍按照“线宽/2+线到通孔间距”扩展的左,右,上,下边界所构成的矩形内部的网格点不能向相邻层的网格扩展,并设置相邻层在对应区域内的网格点不能向该层扩展;若矩形障碍是通孔障碍,设置三维不均匀网格阵列中所有在该通孔障碍按照“通孔直径/2+通孔到通孔间距”扩展的左,右,上,下边界所构成的矩形内部的网格点不能向相邻层的网格扩展,并设置相邻层在对应区域内的网格点不能向该层扩展;
(7)基于上述允许扩展方向,采用A*算法对三维不均匀网格进行布线路径搜索;
(8)输出搜索路径;
其中,步骤(1)中,所述待布线网信息包括该待布线网的可用布线层信息,布线区域大小信息以及起始点和终止点信息或起始模块和终止模块信息;
所述工艺信息包括待布线网的布线层层数,布线区域允许的最小线宽值,各布线层通孔直径大小,允许最小的线到线间距值,允许最小的线到通孔间距值,允许最小的通孔到通孔间距值;
步骤(2)中,所述障碍列表中的每个列表元素是由该障碍所在布线层层号,顶点坐标,以及该障碍是通孔或非通孔来表示;
步骤(5)中,所述的三维不均匀网格阵列表示为由步骤(3)所述的横坐标集合,所述的纵坐标集合,以及所述布线层层数构成的三维数组。
2.根据权利要求1所述考虑通孔的基于不均匀网格的多层布线方法,其特征在于,步骤(7)A*算法进行路径搜索的具体实现步骤如下:
7.1创建待扩展点的链表,保存所有已生成而未扩展的点;以及封闭链表,记录已访问过的点;
7.2将起始点集合中的所有点按照该点到终止点集合中点的最短距离有序地列入待扩展点的链表中;
7.3在上述待扩展点的链表中读取扩展代价最小的点n,并判断点n是否在终止点集合中;是,结束搜索,否,继续下面的步骤;
7.4对点n进行扩展,并对扩展后得到的点x进行判断:
若点x在待扩展点的链表中,比较点x的不同路径的扩展代价,若该扩展代价小于待扩展点的链表中的扩展代价,用该扩展代价更新待扩展点的链表中的扩展代价,并将具有新的扩展代价的点x转移到链表中;
若点x在封闭链表中,比较点x的不同路径的扩展代价,若该扩展代价小于封闭链表中的扩展代价,用该扩展代价更新封闭链表中的扩展代价,并将点x放入待扩展点的链表中;
若点x既不在待扩展点的链表中,也不在封闭链表中;求解点x的扩展代价,并将点x放入待扩展点的链表中;
7.5将点n放入到封闭列表中;
7.6按照扩展代价将待扩展点的链表中的各点进行排序,重复步骤7.3~7.6。
3.根据权利要求1所述考虑通孔的基于不均匀网格的多层布线方法,其特征在于,步骤(8)依据步骤(7)的搜索结果;搜索成功,输出搜索到的路径,搜索失败,输出布线失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010282035 CN101957876B (zh) | 2010-09-15 | 2010-09-15 | 考虑通孔的基于不均匀网格的多层布线方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010282035 CN101957876B (zh) | 2010-09-15 | 2010-09-15 | 考虑通孔的基于不均匀网格的多层布线方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101957876A CN101957876A (zh) | 2011-01-26 |
CN101957876B true CN101957876B (zh) | 2012-12-19 |
Family
ID=43485204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010282035 Expired - Fee Related CN101957876B (zh) | 2010-09-15 | 2010-09-15 | 考虑通孔的基于不均匀网格的多层布线方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101957876B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663161B (zh) * | 2012-03-16 | 2014-07-02 | 苏州芯禾电子科技有限公司 | 一种射频集成电路三角网格剖分的方法 |
CN102637227B (zh) * | 2012-03-29 | 2013-10-23 | 武汉大学 | 基于最短路径的土地资源评价因子作用域划分方法 |
CN102867095B (zh) * | 2012-09-20 | 2015-03-04 | 清华大学 | 一种总线布线方法 |
US8701073B1 (en) * | 2012-09-28 | 2014-04-15 | Taiwan Semiconductor Manufacturing Co., Ltd. | System and method for across-chip thermal and power management in stacked IC designs |
CN103235849B (zh) * | 2013-04-18 | 2016-01-20 | 清华大学 | 电流驱动的集成电路自动布线方法及装置 |
CN107168697B (zh) | 2017-04-22 | 2020-11-24 | 华南理工大学 | 图形化编程软件的连线自动避障优化方法 |
CN107808061B (zh) * | 2017-11-20 | 2021-01-19 | 北京华大九天软件有限公司 | 一种支持正交与斜向走线的双向跨障碍布线方法 |
CN107908883A (zh) * | 2017-11-20 | 2018-04-13 | 北京华大九天软件有限公司 | 一种异形版图中点到线的跨障碍布线方法 |
CN111125993B (zh) * | 2019-12-30 | 2022-05-24 | 北京华大九天科技股份有限公司 | 一种满足最小Cut数量约束的布线方法 |
CN111291528B (zh) * | 2020-01-21 | 2023-06-16 | 杭州广立微电子股份有限公司 | 一种用于不同绕线层间的3d绕线方法及*** |
CN112685991B (zh) * | 2020-12-22 | 2022-11-01 | 北京华大九天科技股份有限公司 | 一种满足约束的布线方法 |
CN113219389B (zh) * | 2021-05-07 | 2023-04-14 | 上海联影医疗科技股份有限公司 | 磁共振射频模式确定方法、设备及可读存储介质 |
CN113591430B (zh) * | 2021-08-04 | 2022-05-24 | 北京华大九天科技股份有限公司 | 检测版图布线线网违例的方法 |
CN116011386B (zh) * | 2023-01-31 | 2024-07-09 | 本源科仪(成都)科技有限公司 | 版图自动布线方法、装置、存储介质及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963827A (zh) * | 2006-12-08 | 2007-05-16 | 清华大学 | 基于多步长迷宫算法的模拟集成电路自动布线方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3208014B2 (ja) * | 1994-07-20 | 2001-09-10 | 三菱電機株式会社 | 配線経路調査装置および配線経路調査方法 |
-
2010
- 2010-09-15 CN CN 201010282035 patent/CN101957876B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963827A (zh) * | 2006-12-08 | 2007-05-16 | 清华大学 | 基于多步长迷宫算法的模拟集成电路自动布线方法 |
Non-Patent Citations (2)
Title |
---|
谢满德,马琪,严晓浪.基于V型框架的多层无网格布线算法.《浙江大学学报(工学版)》.2006,第40卷(第5期), * |
闫海霞,李卓远,周强,洪先龙.结合垂直通孔分配的层次式三维混合布局算法.《计算机辅助设计与图形学学报》.2007,第19卷(第10期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN101957876A (zh) | 2011-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101957876B (zh) | 考虑通孔的基于不均匀网格的多层布线方法 | |
CN101980216A (zh) | 基于网块的快速多层布线方法 | |
CN101916317B (zh) | 基于无网格模型的集成电路模块到模块的布线方法 | |
CN112034836B (zh) | 一种改进a*算法的移动机器人路径规划方法 | |
US20030121018A1 (en) | Subgrid detailed routing | |
CN101944149B (zh) | 基于无网格模型的集成电路点到点的布线方法 | |
CN110795908B (zh) | 偏差驱动的总线感知总体布线方法 | |
US7340711B2 (en) | Method and apparatus for local preferred direction routing | |
Chiang et al. | Global routing based on Steiner min-max trees | |
CN102346795B (zh) | 电工电子类虚拟实验快速自动布线方法 | |
CN112685991B (zh) | 一种满足约束的布线方法 | |
CN111339726A (zh) | 考虑电压转换速率的X结构Steiner树构造方法 | |
CN111368493A (zh) | 一种基于稀疏网格的自动版图布线生成方法 | |
CN111080786A (zh) | 基于bim的室内地图模型构建方法及装置 | |
CN101174278A (zh) | 交互版图工具中的最短路径实时查找算法 | |
CN104063558A (zh) | 基于线性规划的大规模集成电路通道布线方法 | |
CN104318025A (zh) | 八角结构Steiner最小树下的VLSI绕障布线器 | |
CN102902347B (zh) | 一种片上***的低功耗电压岛划分方法 | |
US20170206298A1 (en) | Method for analog circuit placement | |
CN112800547B (zh) | 电动汽车电机控制器的布局优化方法、装置及存储介质 | |
CN104573263A (zh) | 基于***块的无网格模拟电路的布线方法 | |
Sato et al. | MIRAGE-A simple-model routing program for the hierarchical layout design of IC masks | |
HAYASHI et al. | A hybrid hierarchical global router for multi-layer VLSI's | |
CN111222298B (zh) | 一种pcb设计中自动添加散热开孔的方法和*** | |
CN115661372B (zh) | 基于Grasshopper的景观渐变铺装参数化建模方法及*** |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121219 Termination date: 20150915 |
|
EXPY | Termination of patent right or utility model |