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

文档序号:6332066阅读:401来源:国知局
专利名称:基于无网格模型的集成电路点到点的布线方法
技术领域
本发明涉及一种超大规模集成电路的自动设计领域。
背景技术
系统芯片一般都集成了数字模块、模拟模块以及数模混合模块。目前,对数字电路 自动化设计的研究相对成熟,已经有针对数字集成电路的自动化设计工具。与之相比,模拟 集成电路因为约束比较复杂,对电路性能要求高,自动化设计具有一定难度,目前还没有成 熟的模拟集成电路自动化设计工具。因此,模拟集成电路及其自动设计工具的研究具有很 重要的理论和实际意义,成为学术界和工业界研究的热点和难点问题。现有的集成电路布线模型可分为两大类型有网格布线模型和无网格布线模型, 分别如图1和图2所示。有网格布线模型,根据设计规则将布线区域划分为均勻的布线网格,线网走线的 位置在网格上。基于有网格模型的布线算法过程简单,算法实现相对容易。但同时它也存 在一些缺陷搜索速度慢,算法效率低;在将障碍到网格的映射过程中,浪费布线资源;不 易于支持多线宽、变线宽等模拟电路中特有的布线需求。无网格布线模型,线网走线可以放置在布线区域中满足设计规则及连通性要求的 任意位置上。基于无网格模型的布线算法具有搜索速度快的优点,而且因为走线位置可以 任意,容易实现对模拟电路中诸多约束的支持。模拟电路对信号的串扰及噪声约束比数字 电路更加严格,通常采用可变线宽进行布线以增强电路性能的稳定性。无网格布线模型的 缺陷在于扩展过程没有网格辅助,通常使用角钩链或者其他数据结构表示布线区域,扩展 的过程相对复杂,算法实现比较困难。

发明内容
针对上述问题,本发明提供一种能够保证布线路径最短,布线拐点数量最小化,且 不受障碍形状限制的基于无网格模型的集成电路点到点的布线方法。为达到上述目的,本发明基于无网格模型的集成电路点到点的布线方法,包括以 下步骤(1)读入待布线网信息,障碍信息和工艺信息;(2)依据上述障碍信息建立并规范障碍列表;(3)扩展障碍列表中各障碍的边界;(4)构造二维不均勻网格阵列;(5)设置二维不均勻网格阵列的允许扩展方向;(6)采用k*算法进行路径搜索;(7)输出搜索路径。其中,步骤(1)中,所述待布线网信息包括布线区域大小信息和待布线网信息;其 中,所述布线区域大小信息为布线区域的左边界,右边界,上边界和下边界,所述待布线网信息包括待布线网的起点和终点坐标;所述障碍信息包括每个障碍的顶点坐标;所述工艺 信息包括该布线区域的最小线宽和最小线间距。步骤(2)中,所述障碍列表中的每个列表元素由该障碍的顶点坐标表示。进一步地,步骤(2)的具体实现步骤如下2. 1根据步骤(1)中所述的障碍信息建立障碍列表;2. 2遍历障碍列表,调用多边形到矩形的转化程序将每一个多边形障碍都转化为 至少一个矩形障碍;2. 3删除障碍列表中存储的原多边形障碍,将转化得到的矩形障碍添加到障碍列 表中。进一步地,步骤(3)具体包括以下步骤3. 1遍历步骤(2)得到的障碍列表,读取矩形障碍的左边界,右边界,下边界和上 边界,并依据步骤(1)读入的工艺信息将每一个障碍边界按照“线宽/2+线间距”的距离进 行扩展;3. 2将扩展后的左边界和右边界对应的横坐标分别添加到横坐标集合中,将扩展 后的下边界和上边界对应的纵坐标分别添加到纵坐标集合中。进一步地,步骤(4)具体实现如下4. 1建立保存潜在拐点的横坐标集合和纵坐标集合将起点和终点的横坐标,所述布线区域大小信息的布线区域左边界和右边界对应 的横坐标,以及步骤(3)中横坐标集合中各横坐标添加到保存潜在拐点的横坐标集合中; 将起点和终点的纵坐标、布线区域大小信息的布线区域上边界和下边界对应的纵坐标、以 及步骤(3)中纵坐标集合中各纵坐标添加到保存潜在拐点的横纵坐标集合中;4. 2构造二维不均勻网格阵列分别对保存潜在拐点的横坐标集合和纵坐标集合中的横坐标和纵坐标进行排序 并去重;将二维不均勻网格阵列表示为由排序去重后的保存潜在拐点的横坐标集合和纵坐 标集合构造的二维数组。进一步地,步骤(5)具体实现遍历步骤(2)得到的障碍列表,设置该障碍的扩展 边界的左边界,右边界,上边界和下边界,分别不能向右,左,下和上扩展;并设置布线区域 边界上的网格点不能向布线区域外扩展。进一步地,步骤(6) A*算法进行路径搜索的具体实现步骤如下6. 1创建一个有序链表;6. 2将起点列入有序链表中;6. 3在上述有序链表中读取扩展代价最小的网格点n,并判断网格点η是否是终 点;是,结束搜索,不是,继续下面的步骤;6. 4依据设置的二维不均勻网格阵列的允许扩展方向,对网格点η进行扩展,标记 扩展后得到的新网格点X的扩展方向,并计算新网格点X的扩展代价;6. 5在有序链表中搜索扩展后得到的新网格点χ ;6. 5. 1若新网格点χ不在有序链表中,状态为未扩展过,记录新网格点χ的扩展方 向和扩展代价,并将新网格点X放入到有序链表中;6. 5. 2若新网格点χ在有序链表中,状态为未扩展过,则比较此时的新网格点χ的扩展代价与有序链表中已有的网格点X的扩展代价若此时的新网格点χ的扩展代价小于已有的网格点X的扩展代价,将已有的网格 点X从有序链表中删除,然后将此时的新网格点X插入到有序链表中,且状态标记为未扩展 过;若此时的新网格点χ的扩展代价与已有的网格点X的扩展代价相同,则查看新网 格点X的扩展方向是否与已有的网格点X的扩展方向相同,如果不同,记录新网格点X的扩 展方向和扩展代价,并将已有的网格点X从有序链表中删除,然后将此时的新网格点X插入 到有序链表中,且状态标记为未扩展过;若此时的新网格点X的扩展代价大于已有的网格点X的扩展代价,直接舍去;6. 5. 3若新网格点χ在有序链表中,状态为已扩展过,则比较此时的新网格点χ的 扩展代价和有序链表中已有的已扩展网格点X的扩展代价若此时的新网格点χ的扩展代价小于已扩展网格点X的扩展代价,将有序链表中 已扩展网格点X删除,并将新网格点X插入到有序链表中,且标记状态为未扩展过;若此时的新网格点χ的扩展代价与已扩展网格点X的扩展代价相同,则查看新网 格点X的扩展方向是否与已扩展网格点X的扩展方向相同,如果不同,记录新网格点X的扩 展方向和扩展代价,并将已扩展网格点X从有序链表中删除,然后将此时的新网格点X插入 到有序链表中,且标记状态为未扩展过;若此时的新网格点X的扩展代价大于已扩展网格点X的扩展代价,直接舍去;6. 6标记点η为已扩展过;6. 7按照扩展代价将有序链表中的各网格点进行排序,重复步骤7. 3 7. 7。其中,所述的扩展代价包括从起点到网格点的实际路径长度,网格点到终点的路 径长度估计值,从起点经网格点到终点的路径长度,以及从起点到网格点实际路径的拐弯 个数。扩展方向,即该网格点的父网格点。父网格点的定义从网格点a扩展出新网格点 b,则a即为b的父网格点,进一步地,步骤(7)的具体实现搜索成功,从终点开始,根据网格点的扩展方向, 进行逆向搜索直至起点,即输出布线路径;搜索失败,输出布线失败。本发明在已有的两种布线模型基础上,结合两者的优势,采用基于不均勻网格模 型,针对点到点布线问题,提出了优化的A*搜索方法。该方法在保证布线路径最短的条件 下,最小化布线拐点的数量;且不受障碍形状的限制,即障碍可以是任意多边形。本发明首 先对障碍的边界进行扩展,并在划分不均勻网格时对扩展方向进行设置,使得搜索的结果 满足设计规则。同时,该方法对k*搜索过程中新生成状态进行排序优化,可以在加快搜索 速度、确保路径最优的条件下,最小化拐点的数目。此外,本发明方法可使用C++语言并用 面向对象思想设计和实现,具有较强的平台通用性,可以在不同的平台上运行。


图1为有网格布线模型的示意图;图2为无网格布线模型的示意图;图3为本发明基于无网格模型的集成电路点到点的布线方法的流程图4为本发明不均勻网格布线模型示意图;图5为本发明所述障碍扩展边界的示意图;图6为本发明的一具体实施例的不均勻网格划分的示意图;图7为本发明所述扩展代价的定义示意图。
具体实施例方式下面结合说明书附图对本发明的具体实施方式
做详细描述。如图3所示,本发明基于无网格模型的集成电路点到点的布线方法的流程图。其 详细过程描述如下(1)读入待布线网信息,障碍信息和工艺信息所述待布线网信息包括布线区域大小信息和待布线网信息,其中,所述布线区域 大小信息为布线区域的左边界,右边界,上边界和下边界,所述待布线网信息包括待布线网 的起点和终点坐标;所述障碍信息包括每个障碍的顶点坐标;所述工艺信息包括该布线区 域的最小线宽和最小线间距。(2)建立障碍列表依据上述障碍信息建立障碍列表,所述障碍列表中的每个列表元素由该障碍的顶 点坐标表示。(3)将多边形障碍转化为矩形障碍3. 1遍历障碍列表,调用多边形到矩形的转化程序将每一个多边形障碍都转化为 多个矩形障碍;3. 2删除障碍列表中存储的原多边形障碍,将转化得到的矩形障碍添加到障碍列 表中。(4)扩展障碍边界4. 1遍历步骤(3)得到的障碍列表,读取矩形障碍的左边界,右边界,下边界和上 边界,并依据步骤(1)读入的工艺信息将每一个障碍边界按照“线宽/2+线间距”的距离进 行扩展;4. 2将扩展后的左边界和右边界对应的横坐标分别添加到横坐标集合中,将扩展 后的下边界和上边界对应的纵坐标分别添加到纵坐标集合中。(5)构造二维不均勻网格阵列5. 1建立保存潜在拐点的横坐标集合和纵坐标集合将起点和终点的横坐标,所述布线区域大小信息的布线区域左边界和右边界对应 的横坐标,以及步骤(4)中横坐标集合中各横坐标添加到保存潜在拐点的横坐标集合中; 将起点和终点的纵坐标、布线区域大小信息的布线区域上边界和下边界对应的纵坐标、以 及步骤(4)中纵坐标集合中各纵坐标添加到保存潜在拐点的横纵坐标集合中;5. 2构造二维不均勻网格阵列分别对保存潜在拐点的横坐标集合和纵坐标集合中的横坐标和纵坐标进行排序 并去重;将二维不均勻网格阵链表示为由排序去重后的保存潜在拐点的横坐标集合和纵坐 标集合构造的二维数组。(6)设置二维不均勻网格阵列的允许扩展方向
遍历步骤(3)得到的障碍列表,设置该障碍的扩展边界的左边界,右边界,上边界 和下边界,分别不能向右,左,下和上扩展;并设置布线区域边界上的网格点不能向布线区 域外扩展。(7)采用k*算法进行路径搜索7. 1创建一个有序链表;7. 2将起点列入有序链表中;7. 3在上述有序链表中读取扩展代价最小的网格点n,并判断网格点η是否是终 点;是,结束搜索,不是,继续下面的步骤;7. 4依据设置的二维不均勻网格阵列的允许扩展方向,对网格点η进行扩展,标记 扩展后得到的新网格点X的扩展方向,并计算新网格点X的扩展代价;7. 5在有序链表中搜索扩展后得到的新网格点χ ;7. 5. 1若新网格点χ不在有序链表中,状态为未扩展过,记录新网格点χ的扩展方 向和扩展代价,并将点X放入到有序链表中;7. 5. 2若新网格点χ在有序链表中,状态为未扩展过,则比较此时的新网格点χ的 扩展代价与有序链表中已有的网格点X的扩展代价若此时的新网格点χ的扩展代价小于已有的网格点X的扩展代价,将已有的网格 点X从有序链表中删除,然后将此时的新网格点X插入到有序链表中,且状态标记为未扩展 过;若此时的新网格点χ的扩展代价与已有的网格点X的扩展代价相同,则查看新网 格点X的扩展方向是否与已有的网格点X的扩展方向相同,如果不同,记录新网格点X的扩 展方向和扩展代价,并将已有的网格点X从有序链表中删除,然后将此时的新网格点X插入 到有序链表中,且状态标记为未扩展过;若此时的新网格点X的扩展代价大于已有的网格点X的扩展代价,直接舍去;7. 5. 3若新网格点χ在有序链表中,状态为已扩展过,则比较此时的新网格点χ的 扩展代价和有序链表中已有的已扩展网格点X的扩展代价若此时的新网格点χ的扩展代价小于已扩展网格点X的扩展代价,将有序链表中 已扩展网格点X删除,并将新网格点X插入到有序链表中,且标记状态为未扩展过;若此时的新网格点X的扩展代价与已扩展网格点X的扩展代价相同,则查看新网 格点X的扩展方向是否与已扩展网格点X的扩展方向相同,如果不同,记录新网格点X的扩 展方向和扩展代价,并将已扩展网格点X从有序链表中删除,然后将此时的新网格点X插入 到有序链表中,且标记状态为未扩展过;若此时的新网格点X的扩展代价大于已扩展网格点X的扩展代价,直接舍去;7. 6标记点η为已扩展过;7. 7按照扩展代价将有序链表中的各网格点进行排序,重复步骤7. 3 7. 7。其中,所述的扩展代价包括从起点到网格点的实际路径长度,网格点到终点的路 径长度估计值,从起点经网格点到终点的路径长度,以及从起点到网格点实际路径的拐弯 个数。扩展方向,即该网格点的父网格点。父网格点的定义从网格点a扩展出新网格点 b,则a即为b的父网格点,
(8)输出搜索结果搜索成功,从终点开始,根据网格点的扩展方向,进行逆向搜索直至起点,即输出 布线路径;搜索失败,输出布线失败。下面通过本发明的一具体实施例,对本发明的实现过程作进一步地说明。本实施例是采用本发明所述基于无网格模型的集成电路点到点的布线方法,使用 C++语言在LINUX/UNIX环境下开发实现的。本实施例的实现程序是以布线区域大小信息、 待布线网的起点和终点坐标,布线区域内的障碍信息以及工艺信息为输入;输出为搜索到 的布线路径。该程序的具体执行流程1.划分不均勻网格1.1读入布线信息程序读入以配置文件形式提供的布线区域大小、障碍信息、待布线网信息和工艺 信息。其中,布线区域大小为左边界(areaLX)、右边界(areaRX)、下边界(areaBY)和上边 界(areaTY);障碍信息包括每个障碍的顶点坐标,保存在obsList中;待布线网信息包括该 线网的起点和终点坐标;工艺信息主要包括该布线区域允许的最小线宽值width和允许的 最小线间距值spacing。1.2转换并扩展障碍遍历obsList中的每一个障碍,如果是直角多边形,则转换为多个矩形障碍,并将 原障碍从obsList中删除,将转化后得到的矩形障碍插入obsList中。之后对obsList中 的每个矩形障碍的边界进行扩展,扩展的大小为spacing+width/2,如图4所示。1.3构造不均勻网格建立保存潜在拐点横坐标集合xset和潜在拐点纵坐标集合yset。将起点和终点 的横坐标、布线区域的左右边界(areaLX、areaRX)对应的横坐标、每个扩展障碍的左右边 界对应的横坐标均插入到xset中;将起点和终点的纵坐标、布线区域的上下边界(areaTY、 areaBY)对应的纵坐标、每个扩展障碍的上下边界对应的纵坐标均插入到yset中。对xset和yset分别进行排序和去重,构造二维数组InfosizeXXsizeY,其中sizeX是 数组的列数,sizeY是数组的行数。xset中的一个元素为布线区域内的一个横坐标,对应于 布线区域内的一条纵向延长线,xset中的所有元素对应布线区域的多条纵向延长线;集合 yset中的所有元素对应布线区域的多条横向延长线。多条纵向延长线和多条横向延长线相 交,即得到了一个二维网格。因为每个网格大小在版图中是不一致的,所以是不均勻网格, 如图5所示二维数组中的每个元素都是一个Info类型的对象,包含了该网格点在真实版图 中的坐标信息,称为物理坐标,而它对应的数组下标相应地被称为虚拟坐标。扩展过程是在 虚拟坐标中进行的,最后再还原到物理坐标中,得到实际的布线结果。如图6所示,xset中的元素从小到大依次为{0,50,200,500,700,800,1050, 1200},这些是划分不均勻网格的横坐标在实际布线区域的物理坐标;它们对应的虚拟坐标 为{0,1,2,3,4,5,6,7}。而Info类型就是用于建立物理坐标与虚拟坐标的一一对应关系。 例如起点在二维数组中的横坐标为2,是虚拟坐标;对应于起点1的Info类型对象中,保存 了对应的物理坐标信息,即200 ;终点2的Info类型对象中,保存了对应的物理坐标信息, 即 1200。
1. 4确定二维不均勻网格阵列的允许扩展方向分别在xset和yset中搜索起点和终点的物理坐标,它们的下标即虚拟坐标。遍历obsList中的每一个矩形障碍,在xset中搜索左边界和右边界,在yset中搜 索上边界和下边界,得到每个矩形障碍在二维网格中的虚拟坐标。将每个障碍的左边界中 的网格点设为不可向右扩展,右边界中的网格点设为不可向左扩展;上边界中的网格点设 为不可向下扩展,下边界中的网格点设为不可向上扩展。同时,设置布线区域边界上的网格 点,使得不可能往布线区域外扩展。2. A*搜索过程2. 1A*扩展的主体流程构造一个有序的链表,叫做openlist,把起点的虚拟坐标插入openlist中。之后, 进入循环中,循环终止的条件是openlist中没有元素,或者openlist中的第一个元素为终 点的虚拟坐标。循环内部的操作是(1)取出openlist中的第一个元素作为当前要扩展的网格点,记作current。(2)扩展出新的网格点插入openlist中。(3)保证openlist有序,即扩展代价小的网格点排在前面,扩展代价相同时拐弯 数少的网格点排在前面。2. 2每一步扩展过程(1)确定扩展出的网格点并计算扩展代价考察所有与current相邻的网格点。依据在不均勻网格上标记的可扩展方向,如 果可以从current扩展到该网格点,并且current不是从该网格点扩展出来的,那么该点是 从current扩展出来的新网格点,记作ExPoint,并且将current点作为ExPoint的父网格
点o计算ExPoint的扩展代价,分别如下costG 从起点到网格点的实际路径长度costH:从网格点到终点的路径长度估计值,用网格点到终点的曼哈顿距离估计costF :costG 禾口 costH 之禾口costT 从起点到网格点实际路径的拐弯个数扩展代价的定义如图7所示从起点3到ExPoint网格点5的实际路径长度为 7 (costG),从ExPoint网格点5到终点4的路径长度估计值为6 (costH),从图中可以看出 costT 为 1。完成扩展和计算扩展代价后,把current的状态标记为INCLOSE,即已经扩展过。(3)把扩展出的网格点添加到openlist中在openlist中搜索ExPoint,根据搜索结果分为以下几种情况(a)如果ExPoint不在openlist中,且状态不是INCLOSE,则记录该扩展方向和 costT,此处扩展方向为ExPoint的父网格点current ;把ExPoint插入openlist中,并保 持openlist有序,将ExPoint对应网格点的状态标记为IN0PEN。(b)如果ExPoint在openlist中,状态为IN0PEN,则比较此时ExPoint的扩展代 价和已有网格点的扩展代价(b. 1)如果ExPoint的costF比已有的网格点的costF小,则记录该扩展方向和costT,将openlist中的对应网格点删除,并将ExPoint插入openlist中,并保持openlist 有序,ExPoint对应的网格点状态仍为IN0PEN。(b. 2)如果ExPoint的costF与已有网格点的costF相同,则查看ExPoint和已有 网格点是否由同一个方向扩展得到,即父节点是否都是current。如果不是由同一个方向 扩展出来的,则记录ExPoint的扩展方向和costT,将openlist中的已有网格点删除,并将 ExPoint插入openlist中,并保持openlist有序,ExPoint对应的网格点状态仍为IN0PEN ; 如果是由同一个方向扩展得到,则比较已有网格点记录的costT和ExPoint记录的costT, 如果ExPoint的costT较小,则更新costT,将openlist中的已有网格点删除,并将ExPoint 插入openlist中,并保持openlist有序,ExPoint对应的网格点状态仍为IN0PEN,否则直 接舍弃ExPoint。(b. 3)如果ExPoint的costF比已有的costF大,则直接舍去。(c)如果ExPoint在openlist中,状态为INCLOSE,则比较此时ExPoint的扩展代 价和已有网格点的扩展代价(c. 1)如果ExPoint的costF比已有网格点的costF小,则将openlist中的已有 网格点删除,并将ExPoint插入openlist中,并保持openlist有序,ExPoint对应的网格 点状态仍为IN0PEN,即未扩展过。(c. 2)如果ExPoint的costF与已有网格点的costF相同,则查看ExPoint和已有 网格点是否由同一个方向扩展得到。如果不是从同一个方向扩展得到,则记录ExPoint的 扩展方向和costT,将openlist中的已有网格点删除,并将ExPoint插入openlist中,并保 持openlist有序,ExPoint对应的网格点状态仍为IN0PEN ;如果从同一个方向扩展过,则比 较已记录的costT和新得到的cost,如果新得到的costT较小,则更新costT,将openlist 中的对应网格点删除,并将ExPoint插入openlist中,并保持openlist有序,ExPoint对 应的网格点状态仍为IN0PEN,否则直接舍弃ExPoint。(c. 3)如果ExPoint的costF比已有的costF大,则直接舍去。3.保存并确定路径搜索成功,从终点开始,根据搜索确定的寻找父网格点方向,进行逆向搜索直至起 点。如果存在多个父网格点,则选择costT较小的作为父网格点,这样即可以得到布线的结 果;搜索失败,输出布线失败。本发明根据布线区域的布线信息,将布线区域划分成二维不均勻网格,便于布线 算法的实现,也提高了布线的速度;其次,本发明依据设置的二维不均勻网格的允许扩展方 向,进行点到点的路径搜索,确保存在路径时一定能够搜索到,且路径具有最短的线长和最 少的拐弯数。以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任何熟悉本 技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在 本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。
权利要求
一种基于无网格模型的集成电路点到点的布线方法,其特征在于,包括以下步骤(1)读入待布线网信息,障碍信息和工艺信息;(2)依据上述障碍信息建立并规范障碍列表;(3)扩展障碍列表中各障碍的边界;(4)构造二维不均匀网格阵列;(5)设置二维不均匀网格阵列的允许扩展方向;(6)采用A*算法进行路径搜索;(7)输出搜索路径。
2.根据权利要求1所述基于无网格模型的集成电路点到点的布线方法,其特征在于, 步骤(1)中,所述待布线网信息包括布线区域大小信息和待布线网信息;其中,所述布线区 域大小信息为布线区域的左边界,右边界,上边界和下边界,所述待布线网信息包括待布线 网的起点和终点坐标;所述障碍信息包括每个障碍的顶点坐标;所述工艺信息包括该布线 区域的最小线宽和最小线间距。
3.根据权利要求1所述基于无网格模型的集成电路点到点的布线方法,其特征在于, 步骤(2)中,所述障碍列表中的每个列表元素由该障碍的顶点坐标表示。
4.根据权利要求1所述基于无网格模型的集成电路点到点的布线方法,其特征在于, 步骤(2)的具体实现步骤如下'2. 1根据步骤(1)中所述的障碍信息建立障碍列表;'2. 2遍历障碍列表,调用多边形到矩形的转化程序将每一个多边形障碍都转化为至少 一个矩形障碍;'2.3删除障碍列表中存储的原多边形障碍,将转化得到的矩形障碍添加到障碍列表中。
5.根据权利要求1或2所述基于无网格模型的集成电路点到点的布线方法,其特征在 于,步骤(3)具体包括以下步骤'3.1遍历步骤(2)得到的障碍列表,读取矩形障碍的左边界,右边界,下边界和上边界, 并依据步骤(1)读入的工艺信息将每一个障碍边界按照“线宽/2+线间距”的距离进行扩 展;'3.2将扩展后的左边界和右边界对应的横坐标分别添加到横坐标集合中,将扩展后的 下边界和上边界对应的纵坐标分别添加到纵坐标集合中。
6.根据权利要求1或2所述基于无网格模型的集成电路点到点的布线方法,其特征在 于,步骤(4)具体实现如下'4.1建立保存潜在拐点的横坐标集合和纵坐标集合将起点和终点的横坐标,所述布线区域大小信息的布线区域左边界和右边界对应的横 坐标,以及步骤(3)中横坐标集合中各横坐标添加到保存潜在拐点的横坐标集合中;将起 点和终点的纵坐标、布线区域大小信息的布线区域上边界和下边界对应的纵坐标、以及步 骤(3)中纵坐标集合中各纵坐标添加到保存潜在拐点的横纵坐标集合中;'4. 2构造二维不均勻网格阵列分别对保存潜在拐点的横坐标集合和纵坐标集合中的横坐标和纵坐标进行排序并去 重;将二维不均勻网格阵列表示为由排序去重后的保存潜在拐点的横坐标集合和纵坐标集 合构造的二维数组。
7.根据权利要求1所述基于无网格模型的集成电路点到点的布线方法,其特征在于, 步骤(5)具体实现遍历步骤(2)得到的障碍列表,设置该障碍的扩展边界的左边界,右边 界,上边界和下边界,分别不能向右,左,下和上扩展;并设置布线区域边界上的网格点不能 向布线区域外扩展。
8.根据权利要求1所述基于无网格模型的集成电路点到点的布线方法,其特征在于, 步骤(6) A*算法进行路径搜索的具体实现步骤如下6. 1创建一个有序链表; 6. 2将起点列入有序链表中;6. 3在上述有序链表中读取扩展代价最小的网格点n,并判断网格点η是否是终点;是, 结束搜索,不是,继续下面的步骤;6. 4依据设置的二维不均勻网格阵列的允许扩展方向,对网格点η进行扩展,标记扩展 后得到的新网格点χ的扩展方向,并计算新网格点χ的扩展代价; 6. 5在有序链表中搜索扩展后得到的新网格点χ ;6. 5. 1若新网格点χ不在有序链表中,状态为未扩展过,记录新网格点χ的扩展方向和 扩展代价,并将新网格点X放入到有序链表中;6. 5. 2若新网格点χ在有序链表中,状态为未扩展过,则比较此时的新网格点χ的扩展 代价与有序链表中已有的网格点X的扩展代价若此时的新网格点X的扩展代价小于已有的网格点X的扩展代价,将已有的网格点X 从有序链表中删除,然后将此时的新网格点X插入到有序链表中,且状态标记为未扩展过; 若此时的新网格点X的扩展代价与已有的网格点X的扩展代价相同,则查看新网格点 X的扩展方向是否与已有的网格点X的扩展方向相同,如果不同,记录新网格点X的扩展方 向和扩展代价,并将已有的网格点X从有序链表中删除,然后将此时的新网格点X插入到有 序链表中,且状态标记为未扩展过;若此时的新网格点X的扩展代价大于已有的网格点X的扩展代价,直接舍去; 6. 5. 3若新网格点X在有序链表中,状态为已扩展过,则比较此时的新网格点X的扩展 代价和有序链表中已有的已扩展网格点X的扩展代价若此时的新网格点X的扩展代价小于已扩展网格点X的扩展代价,将有序链表中已扩 展网格点X删除,并将新网格点X插入到有序链表中,且标记状态为未扩展过;若此时的新网格点X的扩展代价与已扩展网格点X的扩展代价相同,则查看新网格点 X的扩展方向是否与已扩展网格点X的扩展方向相同,如果不同,记录新网格点X的扩展方 向和扩展代价,并将已扩展网格点X从有序链表中删除,然后将此时的新网格点X插入到有 序链表中,且标记状态为未扩展过;若此时的新网格点X的扩展代价大于已扩展网格点X的扩展代价,直接舍去; 6. 6标记点η为已扩展过;6. 7按照扩展代价将有序链表中的各网格点进行排序,重复步骤7. 3 7. 7。
9.根据权利要求8所述基于无网格模型的集成电路点到点的布线方法,其特征在于, 所述的扩展代价包括从起点到网格点的实际路径长度,网格点到终点的路径长度估计值, 从起点经网格点到终点的路径长度,以及从起点到网格点实际路径的拐弯个数。
10.根据权利要求1所述基于无网格模型的集成电路点到点的布线方法,其特征在于,步骤(7)的具体实现搜索成功,从终点开始,根据网格点的扩展方向,进行逆向搜索直至 起点,即输出布线路径;搜索失败,输出布线失败。
全文摘要
本发明公开一种基于无网格模型的集成电路点到点的布线方法,其主要目的是为了提供一种集成电路布线搜索最短路径的高效算法而设计。本发明从输入文件中读取待布线网信息以及障碍的信息,将多边形障碍转换成矩形障碍;然后,利用障碍边界和待布线网信息,将布线区域转化成二维不均匀网格阵列,同时设置网格点的允许扩展方向;最后,基于二维不均匀网格阵列,利用A*算法搜索最短路径,并输出结果。本发明能够确保存在路径时一定能搜索到,且路径具有最短的线长和最少的拐弯数。
文档编号G06F17/50GK101944149SQ20101028203
公开日2011年1月12日 申请日期2010年9月15日 优先权日2010年9月15日
发明者周强, 姚海龙, 蔡懿慈, 高强 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1