考虑通孔的基于不均匀网格的多层布线方法

文档序号:6332067阅读:240来源:国知局
专利名称:考虑通孔的基于不均匀网格的多层布线方法
技术领域
本发明涉及一种超大规模集成电路物理设计技术领域。
背景技术
目前,集成电路制造工艺已经可以支持多层互连线结构的芯片制造,各层互连线 由金属实现,层之间的连接通过通孔工艺实现。相应的集成电路设计及电子设计自动化 (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,并判断点η是否在终止点 集合中;是,结束搜索,否,继续下面的步骤;7. 4对点η进行扩展,并对扩展后得到的点χ进行判断若点χ在待扩展点的链表中,比较点χ的不同路径的扩展代价,若该扩展代价小于 待扩展点的链表中的扩展代价,用该扩展代价更新待扩展点的链表中的扩展代价,并将具 有新的扩展代价的点X转移到链表中;若点χ在封闭链表中,比较点χ的不同路径的扩展代价,若该扩展代价小于封闭链 表中的扩展代价,用该扩展代价更新封闭链表中的扩展代价,并将点X放入待扩展点的链 表中;若点χ既不在待扩展点的链表中,也不在封闭链表中;求解点χ的扩展代价,并将 点X放入待扩展点的链表中;7. 5将点η放入到封闭列表中;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是布线层数。(6)设置三维不均勻网格阵列网格的允许扩展方向。6. 1根据线宽和线间距设置同层扩展的允许扩展方向;遍历步骤(2)得到的障碍列表obsList,在横坐标集合xset中搜索依据线宽和线 间距约束扩展的障碍边界的左边界和右边界,在纵坐标集合yset中搜索依据线宽和线间 距约束扩展的障碍边界的上边界和下边界,设置位于左边界上的网格点不可向右扩展,位 于右边界上的网格点不可向左扩展;位于上边界的网格点不可向下扩展,位于下边界上的 网格点不可向上扩展,并设置由该边界所围成矩形内部的所有网格点为不合法网格点。6. 2根据通孔设计规则约束设置跨层扩展的允许扩展方向;遍历步骤(2)得到的障碍列表obsList,在横坐标集合xset中搜索依据通孔大小 和通孔间距扩展的障碍边界的左边界和右边界,在纵坐标集合yset中搜索依据通孔大小 和通孔间距扩展的障碍边界的上边界和下边界,设置由上述左边界,右边界,上边界和下边 界所围成矩形内部的网格点不能向相邻层扩展,并设置相邻层在对应区域内的网格不能向 该层扩展。(7)采用k*搜索算法对三维不均勻网格阵列进行布线路径的搜索;在搜索过程开始时,将起始点集合S中的所有点按照该点到终止点集合T中点的 最短距离有序地插入待扩展点的链表中,A*算法停止的条件是当前搜索到的网格在终止点 集合T中。然后,将搜索到的路径进行保存。在多层布线模式中,网格点除了向同层相邻的 网格点扩展之外还可以向相邻层扩展。A*搜索算法的具体实现步骤如下7. 1创建待扩展点的链表,保存所有已生成而未扩展的点;以及封闭链表,记录已 访问过的点;7. 2将起始点集合中的所有点按照该点到终止点集合中点的最短距离有序地列入 待扩展点的链表中;7. 3在上述待扩展点的链表中读取扩展代价最小的点n,并判断点η是否在终止点 集合中;是,结束搜索,否,继续下面的步骤;7. 4对点η进行扩展,并对扩展后得到的点χ进行判断
若点χ在待扩展点的链表中,比较点χ的不同路径的扩展代价,若该扩展代价小于 待扩展点的链表中的扩展代价,用该扩展代价更新待扩展点的链表中的扩展代价,并将点X 放入待扩展点的链表中;若点X在封闭链表中,比较点X的不同路径的扩展代价,若该扩展代价小于封闭链 表中的扩展代价,用该扩展代价更新封闭链表中的扩展代价,并将点X放入待扩展点的链 表中;若点χ既不在待扩展点的链表中,也不在封闭链表中;求解点χ的扩展代价,并将 点X放入待扩展点的链表中;7. 5将点η放入到封闭列表中;7. 6按照扩展代价将待扩展点的链表中的各点进行排序,重复步骤7. 3 7. 6。(8)输出搜索结果;如果搜索成功,输出搜索到的路径;否则返回布线失败。下面通过本发明的一具体实施例,对本发明的实现过程作进一步地说明。本实施例是采用本发明所述考虑通孔的基于不均勻网格的多层布线方法,使用 C++语言在LINUX/UNIX环境下开发实现的。本实施例的实现程序是以布线区域内的障碍 信息、待布线网信息以及工艺信息为输入;输出为搜索到的布线路径。该程序的具体执行流 程(1)程序读入布线信息程序读入不局限于以配置文件形式提供的布线区域大小、布线区域内的障碍信 息、待布线网信息和工艺信息。其中,待布线网信息包括该待布线网的可用布线层,布线 区域大小和布线模式,即该线网可以在哪几层金属层上布线,布线区域的最大边界,以及 点到点模式或模块到模块模式。若布线模式为点到点模式,布线信息要提供布线的起点 和终点;否则提供布线起始模块和终止模块,起始模块和终止模块均为直角多边形,由多 边形所在的布线层号和顶点坐标表示。工艺信息主要包括该布线层层数sizeZ,布线区 域允许的最小线宽值lineW[sizeZ],通孔直径大小viaWtsizeZ],允许最小的线到线间距 值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所示);若该障碍为通孔障碍,将其上边界,下边界,左边界,右边界分别 按照距离1^1谓2/2+1切\进行扩展(如图5所示)。然后,将扩展障碍的左边界和右边界 对应的横坐标添加到xset中,扩展障碍的上边界和下边界对应的纵坐标添加到yset中。3. 3依据通孔大小和通孔间距约束扩展障碍边界遍历由步骤(2)得到的障碍列表obsList,设当前遍历到的障碍所在的层号为z, 若该障碍为非通孔障碍,将其上边界,下边界,左边界,右边界分别按照距离ViaWz/2+ltovz 进行扩展(如图6所示);若该障碍为通孔障碍,将其上边界,下边界,左边界,右边界分别 按照距离¥化12/2+对0\进行扩展(如图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[sizeXXsizeYXsizeZ],其中SizeX是数组的列数,sizeY是数组的行数,sizeZ是布线 层数。横坐标集合xset中的一个元素为布线区域内的一个横坐标,对应于一个布线层内 的一条纵向延长线,集合xset中的所有元素对应一个布线层内的多条纵向延长线。同样, 纵坐标集合yset中的所有元素对应一个布线层内的多条横向延长线。多条纵向延长线和 多条横向延长线相交,将一个布线层划分为一个不均勻二维网格阵列,将该不均勻网格映射到所有层中,则形成一个三维不均勻网格阵列,如图9所示,每一个网格对应三维数组 Info[sizeXXsizeYXsizeZ]的一个元素,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)输出搜索结果如果布线成功,输出连线路径,否则,输出布线失败。本发明所述考虑通孔的基于不均勻网格的多层布线方法,根据已有的布局结果和 工艺信息,将布线区域划分成三维不均勻网格阵列,然后,基于已设置的三维不均勻网格阵 列的允许扩展方向,利用路径搜索方法完成布线。本发明能够处理不同布线层的不同线宽 和最小间距,同时满足通孔的设计规则约束,解决了现有集成电路多层布线存在的问题。以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任何熟悉本 技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在 本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。
权利要求
一种考虑通孔的基于不均匀网格的多层布线方法,其特征在于,包括以下步骤(1)读入布线区域内的障碍信息、待布线网信息和工艺信息;(2)依据上述障碍信息建立并规范障碍列表;(3)扩展障碍列表中各障碍的边界;(4)设置起始点集合和终止点集合;(5)构造三维不均匀网格阵列;(6)设置三维不均匀网格阵列的允许扩展方向;(7)基于上述允许扩展方向,采用A*算法对三维不均匀网格进行布线路径搜索;(8)输出搜索路径。
2.根据权利要求1所述考虑通孔的基于不均勻网格的多层布线方法,其特征在于,步 骤(1)中,所述待布线网信息包括该待布线网的可用布线层信息,布线区域大小信息以及 起始点和终止点信息或起始模块和终止模块信息;所述工艺信息包括待布线网的布线层层数,布线区域允许的最小线宽值,各布线层通 孔直径大小,允许最小的线到线间距值,允许最小的线到通孔间距值,允许最小的通孔到通 孔间距值。
3.根据权利要求1所述考虑通孔的基于不均勻网格的多层布线方法,其特征在于,步 骤(2)中,所述障碍列表中的每个列表元素是由该障碍所在布线层层号,顶点坐标,以及该 障碍是通孔或非通孔来表示,
4.根据权利要求1所述考虑通孔的基于不均勻网格的多层布线方法,其特征在于,步 骤(2)的具体实现步骤如下2. 1根据步骤(1)中所述的障碍信息建立障碍列表;2. 2遍历障碍列表,调用多边形到矩形的转化程序将每一个多边形障碍转化为至少一 个矩形障碍;2.3删除障碍列表中存储的原多边形障碍,将转化得到的矩形障碍添加到障碍列表中。
5.根据权利要求1或2所述考虑通孔的基于不均勻网格的多层布线方法,其特征在于, 步骤(3)具体实现如下3.1初始化横坐标集合和纵坐标集合;3. 2遍历步骤(2)得到的障碍列表,将非通孔矩形障碍的每一个边界分别按照“线宽 /2+线间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;将通孔矩形障碍的每一 个边界按照“线宽/2+线到通孔的间距”的距离进行扩展,得出垂直扩展边界和水平扩展边 界;3. 3遍历步骤(2)得到的障碍列表,将非通孔矩形障碍的每一个边界分别按照“通孔直 径/2+线到通孔间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界;将通孔矩形障 碍的每一个边界分别按照“通孔直径/2+通孔到通孔的间距”的距离进行扩展,得出垂直扩 展边界和水平扩展边界;3. 4将(3. 2)和(3. 3)步中的所有垂直扩展边界的横坐标加入到横坐标集合中,所有水 平扩展边界的纵坐标加入到纵坐标集合中。
6.根据权利要求1或2所述考虑通孔的基于不均勻网格的多层布线方法,其特征在于, 步骤(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将横坐标集合中各横坐标对应的垂直线与终止矩形链表中每个矩形模块的上边 界和下边界的交点,纵坐标集合中各纵坐标对应的水平线与终止矩形链表中每个矩形模块 的左边界和右边界的交点,以及横坐标集合中各横坐标对应的垂直线和纵坐标集合中的各 纵坐标的水平线在终止模块内部的交点添加到终止点集合中。
7.根据权利要求1或2所述考虑通孔的基于不均勻网格的多层布线方法,其特征在于, 所述的三维不均勻网格阵列表示为由步骤(3)所述的横坐标集合,所述的纵坐标集合,以 及所述布线层层数构成的三维数组。
8.根据权利要求1或2所述考虑通孔的基于不均勻网格的多层布线方法,其特征在于, 步骤(6)具体实现如下`6. 1设置同层扩展的允许扩展方向;遍历步骤(2)得到的障碍列表,若该矩形障碍是非通孔障碍,设置三维不均勻网格阵 列中所有在该矩形障碍按照“线宽/2+线间距”扩展的左,右,上,下边界上的网格点,分别 不可向右,左,下,上扩展,并设置由该左,右,上,下边界所构成的矩形内部的所有网格点为 不合法网格点;若该障碍是通孔障碍,设置三维不均勻网格阵列中所有在该障碍按照“通孔 直径/2+线到通孔间距”扩展的左,右,上,下边界上的网格点,分别不可向右,左,下,上扩 展,并设置由该左,右,上,下边界所构成的矩形内部的所有网格点为不合法网格点; 6. 2设置跨层扩展的允许扩展方向;遍历步骤(2)得到的障碍列表,若该矩形障碍是非通孔障碍,设置三维不均勻网格阵 列中所有在该障碍按照“线宽/2+线到通孔间距”扩展的左,右,上,下边界所构成的矩形内 部的网格点不能向相邻层的网格扩展,并设置相邻层在对应区域内的网格点不能向该层扩 展;若该障碍是通孔障碍,设置三维不均勻网格阵列中所有在该障碍按照“通孔直径/2+通 孔到通孔间距”扩展的左,右,上,下边界所构成的矩形内部的网格点不能向相邻层的网格 扩展,并设置相邻层在对应区域内的网格点不能向该层扩展。
9.根据权利要求1所述考虑通孔的基于不均勻网格的多层布线方法,其特征在于,步骤(7) A*算法进行路径搜索的具体实现步骤如下'7. 1创建待扩展点的链表,保存所有已生成而未扩展的点;以及封闭链表,记录已访问 过的点;'7. 2将起始点集合中的所有点按照该点到终止点集合中点的最短距离有序地列入待扩 展点的链表中;'7. 3在上述待扩展点的链表中读取扩展代价最小的点n,并判断点η是否在终止点集合 中;是,结束搜索,否,继续下面的步骤;'7. 4对点η进行扩展,并对扩展后得到的点χ进行判断若点χ在待扩展点的链表中,比较点χ的不同路径的扩展代价,若该扩展代价小于待扩 展点的链表中的扩展代价,用该扩展代价更新待扩展点的链表中的扩展代价,并将具有新 的扩展代价的点χ转移到链表中;若点χ在封闭链表中,比较点χ的不同路径的扩展代价,若该扩展代价小于封闭链表中 的扩展代价,用该扩展代价更新封闭链表中的扩展代价,并将点χ放入待扩展点的链表中; 若点χ既不在待扩展点的链表中,也不在封闭链表中;求解点χ的扩展代价,并将点χ 放入待扩展点的链表中;'7. 5将点η放入到封闭列表中;'7. 6按照扩展代价将待扩展点的链表中的各点进行排序,重复步骤7. 3 7. 6。
10.根据权利要求1所述考虑通孔的基于不均勻网格的多层布线方法,其特征在于,步 骤(8)依据步骤(7)的搜索结果;搜索成功,输出搜索到的路径,搜索失败,输出布线失败。
全文摘要
本发明公开一种考虑通孔的基于不均匀网格的多层布线方法,主要是为了解决现有集成电路多层布线存在的困难而设计。本发明依据读入的障碍信息建立并规范障碍列表;然后,分别依据工艺信息线宽和线间距约束以及通孔大小和通孔间距约束扩展障碍边界,同时设置起始点集合和终止点集合,构造三维不均匀网格阵列;最后,基于已设置的三维不均匀网格阵列的允许扩展方向,采用A*算法进行路径搜索,并输出搜索路径。本发明同时支持点到点布线模式和模块到模块布线模式,通过将点或模块统一转化为点的集合,点的集合中各点的选取保证了在多层搜索中能够找到最短路径,此外,本发明通过构造三维不均匀网格阵列有效的解决了现有集成电路多层布线存在的问题。
文档编号G06F17/50GK101957876SQ20101028203
公开日2011年1月26日 申请日期2010年9月15日 优先权日2010年9月15日
发明者周强, 姚海龙, 杨帆, 蔡懿慈 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1