基于无网格模型的集成电路模块到模块的布线方法

文档序号:6608069阅读:323来源:国知局
专利名称:基于无网格模型的集成电路模块到模块的布线方法
技术领域
本发明涉及一种超大规模集成电路物理设计技术领域,尤其涉及一种基于无网格 模型的集成电路模块到模块的布线方法。
背景技术
随着集成电路的规模越来越大、集成度越来越高,专用集成电路(ASIC, Application Specific Integrated Circuit)已经向系统集成的方向发展,这类系统在一 个芯片上集成了数字电路、模拟电路以及数模混合电路。数字电路的集成规模已经到达了 百万门级,对设计工具的效率和速度是很大的挑战。模拟电路和数模混合电路的设计规模 比数字电路规模要小很多,但是其设计复杂性非常高,需要考虑更多的电路性能,满足更多 的设计约束,因而对设计自动化以及工具开发带来一定的难度。目前的数字电路设计工具已经成为了一个系统化的工具,可以实现从高层次综合 到低层次版图布局布线设计的自动化过程。在布线设计过程中,数字电路一般需经过总体 布线和详细布线两个阶段来完成。总体布线指导布线的大致走向并减小详细布线的规模。 详细布线在每个总体布线网格(区域)中完成布线的具体的连线和几何位置。近几年很多 布线器在详细布线中采用无网格布线来提高布线效率。与之相比,模拟电路设计基本上多 采用手工设计的方法进行版图编辑。模拟集成电路设计规模较小、电路性能要求高,布线设 计过程中,通常直接采用详细布线。为了满足模拟电路的性能要求,模拟电路布线的线宽变 化很大,无网格模型处理变线宽有着得天独厚的优势,适合模拟电路自动布线算法开发。集成电路布线算法根据布线区域的表示以及走线位置是否受限制分为两类模型 有网格布线模型(如图1所示)和无网格布线模型(如图2所示)。在有网格的布线模型 中,整个布线区域划分为等距离的方形网格,并规定走线位置只能在网格上;在无网格的布 线模型中,走线可以放置在空间区域中满足设计规则及连通性的任意位置。无网格布线相对于有网格布线对不同线宽和不同线间距的布线问题处理非常方 便,即连线的线宽和线间距不是固定而是可变的;同时无网格布线的布线效率也比有网格 模型高很多。但是无网格模型在管理布线区域和布线资源方面非常复杂,首先,无网格模型 的数据结构非常复杂,布线资源和已布线网不能简单地用一个网格点或者一个网格点阵来 表示,往往需要比较复杂的描述;其次,无网格模型在表示和处理模拟电路的性能要求和各 种约束条件方面比较复杂。在实际的版图设计中,布线的“源点,,和“目标点,,通常会是具有一定面积的几何 图形,而不是一个点。将源点和目标点视为具有一定面积的模块,即几何图形,布线过程就 变成了模块到模块的布线。对于模块到模块的布线,目前学术界已经有一些研究论文发表,主要是通过将模 块转化为一个包含有限个点的点集,从而将模块到模块的布线转化为点集到点集的布线来 完成布线过程的。但是现有研究主要针对有网格的布线模型,在有网格的布线模型中,模 块到点集的转化过程是比较容易实现的,只需要将模块覆盖的所有网格点加入到点集中即可。但是在无网格的布线模型中,可以认为一个模块内部有无穷多个点,选取哪些点作为布 线的起始和终止点就需要考虑布线目标和可能的走线路径,简单地选取一两个点来代表一 个模块,很可能导致最终的布线结果不能获得最短路径。对无网格模型的模块到模块的布 线方法的研究目前还没有见到有相关报道。

发明内容
针对上述问题,本发明提供一种能够快速找到布线最短路径的,且布线效率高的 基于无网格模型的集成电路模块到模块的布线方法。为达到上述目的,本发明所述基于无网格模型的集成电路模块到模块的布线方 法,包括以下步骤(1)读入布线区域内的障碍信息、待布线网信息和工艺信息;(2)依据上述障碍信息建立障碍列表;(3)将障碍列表中的每一个多边形障碍都转化为矩形障碍;(4)将障碍列表中的每个矩形障碍的边界进行扩展;(5)依据步骤⑷构造二维不均勻网格阵列;(6)将起始模块和终止模块分别转化为起始点集和终止点集;(7)采用k*算法进行路径搜索;(8)输出搜索结果。进一步地,步骤(1)中,所述待布线网信息包括该待布线网的起始模块和终止模 块;所述工艺信息包括该布线区域的最小线宽和最小线间距。进一步地,步骤(2)中,所述障碍列表中的每个列表元素由该障碍的顶点坐标表
7J\ ο进一步地,步骤(3)的具体实现步骤如下3. 1遍历障碍列表,调用多边形到矩形的转化程序将每一个多边形障碍都转化为 矩形障碍;3. 2将障碍列表中存储的原多边形障碍删除,并将转化得到的矩形障碍添加到障 碍列表中。进一步地,步骤(4)具体包括以下步骤4. 1遍历步骤(3)得到的障碍列表,从当前遍历的障碍列表中读取矩形障碍的左 边界,右边界,下边界和上边界,并依据步骤(1)读入的工艺信息将每一个障碍边界按照 “线宽/2+线间距”的距离进行扩展;4. 2将左边界和右边界的扩展边界添加到横坐标集合中,将下边界和上边界的扩 展边界添加到纵坐标集合中。进一步地,步骤(6)具体包括以下步骤6. 1调用多边形到矩形的转化程序分别将起始模块和终止模块转化为至少一个矩 形模块,并分别添加到起始矩形链表和终止矩形链表中;6. 2分别遍历起始矩形链表和终止矩形链表,从当前遍历的矩形的属性中读取矩 形的左边界,右边界,下边界和上边界,并依据步骤(1)读入的工艺信息将每一个边界按照 “线宽/2”的距离进行收缩;
6. 3将左边界和右边界的收缩边界列入到纵坐标集合中更新其内存储的纵坐标, 将下边界和上边界的收缩边界列入到横坐标集合中更新其内存储的横坐标;6. 4分别对更新后纵坐标集合和横坐标集合中的坐标进行排序,并分别对纵坐标 集合和横坐标集合去重;6. 5将横坐标集合中与各横坐标对应的垂直线与起始模块和终止模块的上下边界 的交点分别列入到起始点集合和终止点集合中,将纵坐标集合中与各纵坐标对应的水平线 与起始模块和终止模块的左右边界的交点分别列入到起始点集合和终止点集合中。进一步地,步骤(7) A*算法进行路径搜索的具体实现步骤如下7. 1创建待扩展点的链表,保存所有已生成而未考察的点;以及封闭链表,记录已 访问过的点;7. 2将起始点集合中的所有点按照该点到终止点集合中点的最短距离有序地列入 待扩展点的链表中;7. 3在上述待扩展点的链表中读取估价值最小的点n,并判断点η是否是终止点集 合中;是,结束搜索,不是,继续下面的步骤;7. 4对点η进行扩展,并对扩展后得到的点χ进行判断若点χ在待扩展点的链表中,比较点χ的不同路径的估价值,若该估价值小于待扩 展点的链表中的估价值,用该估价值更新待扩展点的链表中的估价值;若点χ在封闭链表中,比较点χ的不同路径的估价值,若该估价值小于封闭链表中 的估价值,用该估价值更新封闭链表中的估价值,并将点X放入待扩展点的链表中;若点χ既不在待扩展点的链表中,也不在封闭链表中;求解点χ的估价值,并将点 X放入待扩展点的链表中;7. 5将点η放入到封闭列表中;7. 6按照估价值将待扩展点的链表中的各点进行排序,重复步骤7. 3 7. 6。进一步地,步骤(8)依据步骤(7)的搜索结果;搜索成功,输出搜索到的路径,搜索 失败,输出布线失败。本发明在已有的基于隐式连接图的无网格布线算法的基础上,提出了一种基于无 网格模型的集成电路模块到模块的布线方法。本发明有以下几点有益的效果(1)本发明提出了一种将布线起始模块和布线终止模块分别转化为起始点集和终 止点集的方法。该方法可以灵活处理任意的直角多边形,并在满足可以找到最短路径的前 提下使点集中点的数目尽可能少。(2)本发明提出了一种将模块到模块的布线转化为点集到点集的布线的方法。该 方法通过对点集中点的允许扩展方向进行设置,使得布线结果不会出现违反设计规则的情 况。(3)本发明提出了一种基于Α*算法的路径搜索方法。该方法通过将起始点集中的 所有点全部有序地插入到待扩展点的链表中,实现了同时从多点开始的快速并行路径搜索 过程,确保无网格布线方法的效率。


图1为模拟集成电路自动布线有网格布线模型;
图2为模拟集成电路自动布线无网格布线模型;图3为无网格模型的基于隐式连接图的布线方法图;图4为无网格模型的基于网块的布线方法图;图5为本发明所述基于无网格模型的集成电路模块到模块的布线方法的程序实 现流程图;图6为不均勻二维网格阵列的一实施例示意图;图7为本发明所述基于无网格模型的集成电路模块到模块的布线方法的模块到 点集的转化示意图。
具体实施例方式下面结合说明书附图对本发明的具体实施方式
做详细描述。目前基于无网格模型的布线算法主要有以下两类一、基于隐式连接图的布线方法。在布线开始前,将每个障碍按照“线宽/2+线间 距”的距离进行扩展,然后延长障碍的扩展边界直到遇到下一个障碍。把各个延长线的交点 表示为节点,则整个版图形成了一个图,即为不均勻二维网格阵列。因为节点并没有在计算 机中显示地构造出来,而是通过保存横向延长线和纵向延长线的坐标间接表示节点的,所 以是一种隐式的连接图。然后采用某种方法寻找最短路径,如图3所示。二、基于网块的布线方法。该方法将整个布线区域划分为一个个矩形区域,称为 “网块”,一个网块为一个障碍网块,或者空白网块。障碍网块是不能走线的区域,空白网块 是可以走线的区域,并采用角勾链数据结构对网块进行管理。然后采用某种方法寻找一条 由空白网块连成的路径,如图4所示。本发明适用于基于隐式连接图的无网格布线模型。本发明所述基于无网格模型的 集成电路模块到模块的布线方法已经使用了 C++语言在LINUX/UNIX环境下进行了开发和 实现。程序实现以布线区域的障碍信息、待布线网信息以及工艺信息为输入,使用该方法对 待布线网实施布线,程序的输出为搜索到的布线路径。下面结合图5详细描述本发明所述基于无网格模型的集成电路模块到模块的布 线方法的程序实现过程。详细步骤如下(1)程序读入不局限于以配置文件形式提供的布线区域内的障碍信息、待布线网 信息和工艺信息。其中,待布线网信息包括该待布线网的起始模块sModule和终止模块 tModule,起始模块和终止模块为直角多边形,由多边形的顶点坐标表示;工艺信息主要包 括该布线区域允许的最小线宽值width和允许的最小线间距值spacing。(2)程序根据步骤(1)读入的信息建立布线过程所必须的数据结构,主要包括障 碍列表ObsList ;其中,所有障碍模块的形状均为直角多边形,由多边形的顶点坐标表示, 每个顶点由其横坐标和纵坐标表示。(3)遍历由步骤(2)得到的障碍列表obsList,调用多边形到矩形的转化程序将每 个直角多边形障碍模块转化为多个矩形障碍模块,然后将原障碍模块从障碍列表ObsList 中删除,并将转化得到的矩形障碍模块加入到障碍列表中。其中,多边形到矩形的转化 fMj^nTJaL^iK A Polygon-to-Rectangle Conversion Algorithm, IEEE, 1983 ## Kevin D. Gourley, Douglas M. Green。
7
(4)采用基于隐式连接图的无网格布线方法中的隐式连接图的构造方法,即将每 个矩形障碍边界按照“width/2+spacing”的距离进行扩展,直至扩展到每一个障碍与其相 邻的其他障碍相遇。然后,将所有矩形障碍模块的垂直扩展边界的横坐标加入到横坐标集 合xset中,所有矩形障碍模块的水平扩展边界的纵坐标加入到纵坐标集合yset中,即构成 了二维不均勻网格阵列(如图6所示)。图6中的黑色框体为矩形障碍模块。(5)调用多边形到矩形的转化程序将起始模块sModule转化为多个矩形模块,添 加到起始矩形链表sList中;调用多边形到矩形的转化程序将终止模块tModule转化为多 个矩形模块,添加到终止矩形链表tList中。若起始模块和终止模块的形状均为直角多边 形,程序直接处理直角多边形存在着较大的困难。因此本发明通过一个直角多边形到多个 矩形的转化程序的处理,将模块转化为多个不相交且将多边形完全覆盖的矩形。(6)更新步骤(4)得到的横坐标集合xset和纵坐标集合yset,并将起始模块和终 止模块分别转化为起始点集S和终止点集T,具体实现步骤如下6. 1将步骤(5)得到的起始矩形链表sList赋给矩形链表list,初始化一个点集 P。6. 2遍历步骤(6. 1)得到的矩形链表list,具体实现步骤如下6. 2. 1从当前遍历的矩形链表list的属性中读取矩形的左边界left,右边界 right,下边界bottom,上边界top。6. 2. 2将left+width/2和right-width/2依次添加到横坐标集合xset中,更新横 坐标集合xset ;将bottom+width/2和top-width/2依次添加到纵坐标集合yset中,更新 纵坐标集合yset ;其中width由步骤(1)读入。6. 2. 3分别对横坐标集合xset和纵坐标集合yset中的坐标进行排序并去重。因 为起始模块和终止模块已经转化为了一系列矩形,最短路径可能连接到矩形的四个顶点 上。但是考虑到设计规则的约束,连线的中心线不能直接连接到顶点,而是需要连接到矩形 的四条边上距离顶点半线宽的点,这些点的横坐标对应的垂直线和纵坐标所对应的水平线 上可能存在连线,所以也需要加入到xset和yset中。6. 2. 4将矩形边界上的网格点加入到点集中遍历步骤(6.2.2)得到的横坐标 集合xset,设当前遍历到的坐标为X,如果χ位于矩形的左边界和右边界之间,则将点(X, bottom)和点(x, top)加入到步骤(6. 1)初始化的点集P中。遍历步骤(6. 2. 2)得到的 纵坐标集合yset,设当前遍历到的坐标为y,如果y位于矩形的下边界和上边界之间,将点 (left,y)和点(right,y)加入到步骤(6. 1)加入到点集P中。如图7所示,黑色的点都加 入点集P中。6. 3将点集P中的各点赋给起始点集S。6. 4将步骤(5)得到的终止矩形链表tList赋给矩形链表list,清空点集P,重新 执行步骤(6. 2),然后将得到的点集P中的各点赋给终止点集T。(7)采用A*搜索算法进行布线路径的搜索,在搜索过程开始时,要将起始点集中的 所有点按照该点到终止点集中点的最短距离有序地插入待扩展点的链表中,A*算法停止的 条件是当前搜索到的网格在终止点集T中。并将搜索到的路径进行保存。因为最先扩展到 的终点一定是距离起始点集最近的点,所以不会出现最终连线穿越终止模块的情况。(8)如果搜索成功,输出搜索到的路径;否则,返回布线失败。
8
A*搜索算法即求解最短路径的算法,是应用了估价函数的一种启发式搜索。求解 从初始点到目的点的一个最短路径(或加权代价)的可行解,对于一个还不是目的点的点, 对它的评价可以从两个方面进行评价第一,离目的点有多近,越近越好;第二,离起始点 有多远,越近越好。A*算法流程如下创建两个表,OPEN表保存所有已生成而未考察的节点,CLOSED表中记录已访问过 的节点。While (OPEN ! = NULL){从OPEN表中取估价值f最小的节点η ;i f (η 节点==目标节点)break ;

else
{
if(X in OPEN)比较两个X的估价值f
if(X的估价值小于OPEN表的估价值f)
更新OPEN表中的估价值;
if(X in CLOSE)比较两个X的估价值f
if (X的估价值小于CLOSE表的估价值) 更新CLOSE表中的估价值; 把X节点放入OPEN ; if (X not in both) 求X的估价值;
将X插入OPEN表中;
}
将η节点插入CLOSE表中; 按照估价值f将OPEN表中的节点排序;
Il同一个节点的两个不同路径 的估价值
//取最小路径的估价值 Il同一个节点的两个不同路径 的估价值
取最小路径的估价值
/实际上是比较OPEN表内各节 点估价值f的大小,从最小路 径的节点向下进行。
本发明所述基于无网格模型的集成电路模块到模块的布线方法,不仅适用于模拟 线路布线,也可以用于数字电路布线。 以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任何熟悉本 技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在 本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。
9
权利要求
一种基于无网格模型的集成电路模块到模块的布线方法,其特征在于,包括以下步骤(1)读入布线区域内的障碍信息、待布线网信息和工艺信息;(2)依据上述障碍信息建立障碍列表;(3)将障碍列表中的每一个多边形障碍都转化为矩形障碍;(4)将障碍列表中的每个矩形障碍的边界进行扩展;(5)依据步骤(4)构造二维不均匀网格阵列;(6)将起始模块和终止模块分别转化为起始点集和终止点集;(7)采用A*算法进行路径搜索;(8)输出搜索结果。
2.根据权利要求1所述基于无网格模型的集成电路模块到模块的布线方法,其特征在 于,步骤(1)中,所述待布线网信息包括该待布线网的起始模块和终止模块;所述工艺信息 包括该布线区域的最小线宽和最小线间距。
3.根据权利要求1所述基于无网格模型的集成电路模块到模块的布线方法,其特征在 于,步骤(2)中,所述障碍列表中的每个列表元素由该障碍的顶点坐标表示。
4.根据权利要求1所述基于无网格模型的集成电路模块到模块的布线方法,其特征在 于,步骤(3)的具体实现步骤如下3. 1遍历障碍列表,调用多边形到矩形的转化程序将每一个多边形障碍都转化为矩形 障碍;3.2将障碍列表中存储的原多边形障碍删除,并将转化得到的矩形障碍添加到障碍列 表中。
5.根据权利要求1或2所述基于无网格模型的集成电路模块到模块的布线方法,其特 征在于,步骤(4)具体包括以下步骤4.1遍历步骤(3)得到的障碍列表,从当前遍历的障碍列表中读取矩形障碍的左边界, 右边界,下边界和上边界,并依据步骤(1)读入的工艺信息将每一个障碍边界按照“线宽 /2+线间距”的距离进行扩展;4. 2将左边界和右边界的扩展边界添加到横坐标集合中,将下边界和上边界的扩展边 界添加到纵坐标集合中。
6.根据权利要求1或2所述基于无网格模型的集成电路模块到模块的布线方法,其特 征在于,步骤(6)具体包括以下步骤6. 1调用多边形到矩形的转化程序分别将起始模块和终止模块转化为至少一个矩形模 块,并分别添加到起始矩形链表和终止矩形链表中;6. 2分别遍历起始矩形链表和终止矩形链表,从当前遍历的矩形的属性中读取矩形的 左边界,右边界,下边界和上边界,并依据步骤(1)读入的工艺信息将每一个边界按照“线 宽/2”的距离进行收缩;6. 3将左边界和右边界的收缩边界列入到纵坐标集合中更新其内存储的纵坐标,将下 边界和上边界的收缩边界列入到横坐标集合中更新其内存储的横坐标;6. 4分别对更新后纵坐标集合和横坐标集合中的坐标进行排序,并分别对纵坐标集合 和横坐标集合去重;`6.5将横坐标集合中与各横坐标对应的垂直线与起始模块和终止模块的上下边界的交 点分别列入到起始点集合和终止点集合中,将纵坐标集合中与各纵坐标对应的水平线与起 始模块和终止模块的左右边界的交点分别列入到起始点集合和终止点集合中。
7.根据权利要求1所述基于无网格模型的集成电路模块到模块的布线方法,其特征在 于,步骤(7) A*算法进行路径搜索的具体实现步骤如下`7. 1创建待扩展点的链表,保存所有已生成而未考察的点;以及封闭链表,记录已访问 过的点;`7. 2将起始点集合中的所有点按照该点到终止点集合中点的最短距离有序地列入待扩 展点的链表中;`7. 3在上述待扩展点的链表中读取估价值最小的点n,并判断点η是否是终止点集合 中;是,结束搜索,不是,继续下面的步骤;`7. 4对点η进行扩展,并对扩展后得到的点χ进行判断若点χ在待扩展点的链表中,比较点χ的不同路径的估价值,若该估价值小于待扩展点 的链表中的估价值,用该估价值更新待扩展点的链表中的估价值;若点χ在封闭链表中,比较点χ的不同路径的估价值,若该估价值小于封闭链表中的估 价值,用该估价值更新封闭链表中的估价值,并将点χ放入待扩展点的链表中;若点χ既不在待扩展点的链表中,也不在封闭链表中;求解点χ的估价值,并将点χ放 入待扩展点的链表中;`7. 5将点η放入到封闭列表中;`7.6按照估价值将待扩展点的链表中的各点进行排序,重复步骤7. 3 7. 6。
8.根据权利要求1所述基于无网格模型的集成电路模块到模块的布线方法,其特征在 于,步骤(8)依据步骤(7)的搜索结果;搜索成功,输出搜索到的路径,搜索失败,输出布线 失败。
全文摘要
本发明公开一种基于无网格模型的集成电路模块到模块的布线方法,主要是为了找出集成电路布线的最短路径和提高布线效率而设计。本发明依据读入的障碍信息建立障碍列表,并将该障碍列表中的每一个多边形障碍都转化为矩形障碍,同时扩展矩形障碍边界,构造二维不均匀网格阵列;然后,将起始模块和终止模块分别转化为起始点集和终止点集;并采用A*算法进行路径搜索;最后,输出搜索结果。本发明能够找出集成电路布线的最短路径,且布线效率高。
文档编号G06F17/50GK101916317SQ20101025984
公开日2010年12月15日 申请日期2010年8月23日 优先权日2010年8月23日
发明者周强, 姚海龙, 杨帆, 蔡懿慈 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1