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

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

Info

Publication number
CN101944149B
CN101944149B CN2010102820331A CN201010282033A CN101944149B CN 101944149 B CN101944149 B CN 101944149B CN 2010102820331 A CN2010102820331 A CN 2010102820331A CN 201010282033 A CN201010282033 A CN 201010282033A CN 101944149 B CN101944149 B CN 101944149B
Authority
CN
China
Prior art keywords
point
net point
obstacle
expansion
chained list
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
Application number
CN2010102820331A
Other languages
English (en)
Other versions
CN101944149A (zh
Inventor
姚海龙
周强
蔡懿慈
高强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN2010102820331A priority Critical patent/CN101944149B/zh
Publication of CN101944149A publication Critical patent/CN101944149A/zh
Application granted granted Critical
Publication of CN101944149B publication Critical patent/CN101944149B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明公开一种基于无网格模型的集成电路点到点的布线方法,其主要目的是为了提供一种集成电路布线搜索最短路径的高效算法而设计。本发明从输入文件中读取待布线网信息以及障碍的信息,将多边形障碍转换成矩形障碍;然后,利用障碍边界和待布线网信息,将布线区域转化成二维不均匀网格阵列,同时设置网格点的允许扩展方向;最后,基于二维不均匀网格阵列,利用A*算法搜索最短路径,并输出结果。本发明能够确保存在路径时一定能搜索到,且路径具有最短的线长和最少的拐弯数。

Description

基于无网格模型的集成电路点到点的布线方法
技术领域
本发明涉及一种超大规模集成电路的自动设计领域。 
背景技术
系统芯片一般都集成了数字模块、模拟模块以及数模混合模块。目前,对数字电路自动化设计的研究相对成熟,已经有针对数字集成电路的自动化设计工具。与之相比,模拟集成电路因为约束比较复杂,对电路性能要求高,自动化设计具有一定难度,目前还没有成熟的模拟集成电路自动化设计工具。因此,模拟集成电路及其自动设计工具的研究具有很重要的理论和实际意义,成为学术界和工业界研究的热点和难点问题。 
现有的集成电路布线模型可分为两大类型:有网格布线模型和无网格布线模型,分别如图1和图2所示。 
有网格布线模型,根据设计规则将布线区域划分为均匀的布线网格,线网走线的位置在网格上。基于有网格模型的布线算法过程简单,算法实现相对容易。但同时它也存在一些缺陷:搜索速度慢,算法效率低;在将障碍到网格的映射过程中,浪费布线资源;不易于支持多线宽、变线宽等模拟电路中特有的布线需求。 
无网格布线模型,线网走线可以放置在布线区域中满足设计规则及连通性要求的任意位置上。基于无网格模型的布线算法具有搜索速度快的优点,而且因为走线位置可以任意,容易实现对模拟电路中诸多约束的支持。模拟电路对信号的串扰及噪声约束比数字电路更加严格,通常采用可变线宽进行布线以增强电路性能的稳定性。无网格布线模型的缺陷在于:扩展过程没有网格辅助,通常使用角钩链或者其他数据结构表示布线区域,扩展的过程相对复杂,算法实现比较困难。 
发明内容
针对上述问题,本发明提供一种能够保证布线路径最短,布线拐点数量最小化,且不受障碍形状限制的基于无网格模型的集成电路点到点的布线方法。 
为达到上述目的,本发明基于无网格模型的集成电路点到点的布线方法,包括以下步骤: 
(1)读入待布线网信息,障碍信息和工艺信息; 
(2)依据上述障碍信息建立并规范障碍列表; 
(3)扩展障碍列表中各障碍的边界; 
(4)构造二维不均匀网格阵列; 
(5)设置二维不均匀网格阵列的允许扩展方向; 
(6)采用A*算法进行路径搜索; 
(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,并判断网格点n是否是终点;是,结束搜索,不是,继续下面的步骤; 
6.4依据设置的二维不均匀网格阵列的允许扩展方向,对网格点n进行扩展,标记扩展后得到的新网格点x的扩展方向,并计算新网格点x的扩展代价; 
6.5在有序链表中搜索扩展后得到的新网格点x; 
6.5.1若新网格点x不在有序链表中,状态为未扩展过,记录新网格点x的扩展方向和扩展代价,并将新网格点x放入到有序链表中; 
6.5.2若新网格点x在有序链表中,状态为未扩展过,则比较此时的新网格点x的扩展代价与有序链表中已有的网格点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标记点n为已扩展过; 
6.7按照扩展代价将有序链表中的各网格点进行排序,重复步骤6.3~6.7。 
其中,所述的扩展代价包括:从起点到网格点的实际路径长度,网格点到终点的路径长度估计值,从起点经网格点到终点的路径长度,以及从起点到网格点实际路径的拐弯个数。 
扩展方向,即该网格点的父网格点。父网格点的定义:从网格点a扩展出新网格点b,则a即为b的父网格点, 
进一步地,步骤(7)的具体实现:搜索成功,从终点开始,根据网格点的扩展方向,进行逆向搜索直至起点,即输出布线路径;搜索失败,输出布线失败。 
本发明在已有的两种布线模型基础上,结合两者的优势,采用基于不均匀网格模型,针对点到点布线问题,提出了优化的A*搜索方法。该方法在保证布线路径最短的条件下,最小化布线拐点的数量;且不受障碍形状的限制,即障碍可以是任意多边形。本发明首先对障碍的边界进行扩展,并在划分不均匀网格时对扩展方向进行设置,使得搜索的结果满足设计规则。同时,该方法对A*搜索过程中新生成状态进行排序优化,可以在加快搜索速度、确保路径最优的条件下,最小化拐点的数目。此外,本发明方法可使用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)采用A*算法进行路径搜索 
7.1创建一个有序链表; 
7.2将起点列入有序链表中; 
7.3在上述有序链表中读取扩展代价最小的网格点n,并判断网格点n是否是终点;是,结束搜索,不是,继续下面的步骤; 
7.4依据设置的二维不均匀网格阵列的允许扩展方向,对网格点n进行扩展,标记扩展后得到的新网格点x的扩展方向,并计算新网格点x的扩展代价; 
7.5在有序链表中搜索扩展后得到的新网格点x; 
7.5.1若新网格点x不在有序链表中,状态为未扩展过,记录新网格点x的扩展方向和扩展代价,并将点x放入到有序链表中; 
7.5.2若新网格点x在有序链表中,状态为未扩展过,则比较此时的新网格点x的扩展代价与有序链表中已有的网格点x的扩展代价: 
若此时的新网格点x的扩展代价小于已有的网格点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从有序链表中删除,然后将此时的新网格点x插入到有序链表中,且标记状态为未扩展过; 
若此时的新网格点x的扩展代价大于已扩展网格点x的扩展代价,直接舍去; 
7.6标记点n为已扩展过; 
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分别进行排序和去重,构造二维数组InfosizeX×sizeY,其中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的父网格点。 
计算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对应网格点的状态标记为INOPEN。 
(b)如果ExPoint在openlist中,状态为INOPEN,则比较此时ExPoint的扩展代价和已有网格点的扩展代价: 
(b.1)如果ExPoint的costF比已有的网格点的costF小,则记录该扩展方向和costT,将openlist中的对应网格点删除,并将ExPoint插入openlist中,并保持openlist有序,ExPoint对应的网格点状态仍为INOPEN。 
(b.2)如果ExPoint的costF与已有网格点的costF相同,则查看ExPoint和已有网格点是否由同一个方向扩展得到,即父节点是否都是current。如果不是由同一个方向扩展出来的,则记录ExPoint的扩展方向和costT,将openlist中的已有网格点删除,并将ExPoint插入openlist中,并保持openlist有序,ExPoint对应的网格点状态仍为INOPEN;如果是由同一个方向扩展得到,则比较已有网格点记录的costT和ExPoint记录的costT,如果ExPoint的costT较小,则更新costT,将openlist中的已有网格点删除,并将ExPoint插入openlist中,并保持openlist有序,ExPoint对应的网格点状态仍为INOPEN,否则直接舍弃ExPoint。 
(b.3)如果ExPoint的costF比已有的costF大,则直接舍去。 
(c)如果ExPoint在openlist中,状态为INCLOSE,则比较此时ExPoint的扩展代价和已有网格点的扩展代价: 
(c.1)如果ExPoint的costF比已有网格点的costF小,则将openlist中的已有网格点删除,并将ExPoint插入openlist中,并保持openlist有序,ExPoint对应的网格点状态仍为INOPEN,即未扩展过。 
(c.2)如果ExPoint的costF与已有网格点的costF相同,则查看ExPoint和已有网格点是否由同一个方向扩展得到。如果不是从同一个方向扩展得到,则记录ExPoint的扩展方向和costT,将openlist中的已有网格点删除,并将ExPoint插入openlist中,并保持openlist有序,ExPoint对应的网格点状态仍为INOPEN;如果从同一个方向扩展过,则比较已记录的costT和新得到的cost,如果新得到的costT较小,则更新costT,将openlist中的对应网格点删除,并将ExPoint插入openlist中,并保持openlist有序,ExPoint对应的网格点状态仍为INOPEN,否则直接舍弃ExPoint。 
(c.3)如果ExPoint的costF比已有的costF大,则直接舍去。 
3.保存并确定路径 
搜索成功,从终点开始,根据搜索确定的寻找父网格点方向,进行逆向搜 索直至起点。如果存在多个父网格点,则选择costT较小的作为父网格点,这样即可以得到布线的结果;搜索失败,输出布线失败。 
本发明根据布线区域的布线信息,将布线区域划分成二维不均匀网格,便于布线算法的实现,也提高了布线的速度;其次,本发明依据设置的二维不均匀网格的允许扩展方向,进行点到点的路径搜索,确保存在路径时一定能够搜索到,且路径具有最短的线长和最少的拐弯数。 
以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。 

Claims (3)

1.一种基于无网格模型的集成电路点到点的布线方法,其特征在于,包括以下步骤:
(1)读入待布线网信息,障碍信息和工艺信息;
(2)依据上述障碍信息建立并规范障碍列表;
(3)扩展障碍列表中各障碍的边界;
(4)构造二维不均匀网格阵列;
(5)设置二维不均匀网格阵列的允许扩展方向;
(6)采用A*算法进行路径搜索;
(7)输出搜索路径;
其中,步骤(1)中所述待布线网信息包括布线区域大小信息和待布线网坐标信息;其中,所述布线区域大小信息为布线区域的左边界,右边界,上边界和下边界,所述待布线网坐标信息包括待布线网的起点和终点坐标;所述障碍信息包括每个障碍的顶点坐标;所述工艺信息包括该布线区域的最小线宽和最小线间距;
步骤(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,并判断网格点n是否是终点;是,结束搜索,不是,继续下面的步骤;
6.4依据设置的二维不均匀网格阵列的允许扩展方向,对网格点n进行扩展,标记扩展后得到的新网格点x的扩展方向,并计算新网格点x的扩展代价;
6.5在有序链表中搜索扩展后得到的新网格点x;
6.5.1若新网格点x不在有序链表中,状态为未扩展过,记录新网格点x的扩展方向和扩展代价,并将新网格点x放入到有序链表中;
6.5.2若新网格点x在有序链表中,状态为未扩展过,则比较此时的新网格点x的扩展代价与有序链表中已有的网格点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标记点n为已扩展过;
6.7按照扩展代价将有序链表中的各网格点进行排序,重复步骤6.3~6.7。
2.根据权利要求1所述基于无网格模型的集成电路点到点的布线方法,其特征在于,所述的扩展代价包括:从起点到网格点的实际路径长度,网格点到终点的路径长度估计值,从起点经网格点到终点的路径长度,以及从起点到网格点实际路径的拐弯个数。
3.根据权利要求1所述基于无网格模型的集成电路点到点的布线方法,其特征在于,步骤(7)的具体实现:搜索成功,从终点开始,根据网格点的扩展方向,进行逆向搜索直至起点,即输出布线路径;搜索失败,输出布线失败。
CN2010102820331A 2010-09-15 2010-09-15 基于无网格模型的集成电路点到点的布线方法 Active CN101944149B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010102820331A CN101944149B (zh) 2010-09-15 2010-09-15 基于无网格模型的集成电路点到点的布线方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010102820331A CN101944149B (zh) 2010-09-15 2010-09-15 基于无网格模型的集成电路点到点的布线方法

Publications (2)

Publication Number Publication Date
CN101944149A CN101944149A (zh) 2011-01-12
CN101944149B true CN101944149B (zh) 2012-07-04

Family

ID=43436139

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010102820331A Active CN101944149B (zh) 2010-09-15 2010-09-15 基于无网格模型的集成电路点到点的布线方法

Country Status (1)

Country Link
CN (1) CN101944149B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104573263B (zh) * 2015-01-23 2018-03-02 武汉理工大学 基于分裂块的无网格模拟电路的布线方法
CN105894124B (zh) * 2016-04-21 2020-01-14 北京四方继保自动化股份有限公司 一种应用于逻辑可视化编程的基于区域边界的优化寻路方法
CN107168697B (zh) * 2017-04-22 2020-11-24 华南理工大学 图形化编程软件的连线自动避障优化方法
CN107944106A (zh) * 2017-11-14 2018-04-20 天津百利越象模具制造有限责任公司 一种基于pdms软件的管线布局优化方法
CN107808061B (zh) * 2017-11-20 2021-01-19 北京华大九天软件有限公司 一种支持正交与斜向走线的双向跨障碍布线方法
CN111368493B (zh) * 2018-12-26 2023-03-14 杭州广立微电子股份有限公司 一种基于稀疏网格的自动版图布线生成方法
CN110689569B (zh) * 2019-12-10 2020-06-30 北京唯智佳辰科技发展有限责任公司 集成电路版图场域识别与网格细分处理方法及装置
CN112818626B (zh) * 2021-02-26 2022-08-23 北京华大九天科技股份有限公司 一种基于多重掩膜版的版图布线方法
CN114036876B (zh) * 2021-09-17 2023-03-24 清华大学 一种集成电路eda平台
CN116029254B (zh) * 2023-01-06 2024-04-12 中山大学 一种基于路径优化的集成电路版图自动布线方法及系统
CN117742667A (zh) * 2024-02-19 2024-03-22 北京智行者科技股份有限公司 图形连线中路径的确定方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1862546A (zh) * 2006-06-15 2006-11-15 清华大学 一个快速的集成电路可布性分析方法
CN101706834A (zh) * 2009-11-26 2010-05-12 杭州电子科技大学 电力调度大屏输电网单线图的自动布局方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1862546A (zh) * 2006-06-15 2006-11-15 清华大学 一个快速的集成电路可布性分析方法
CN101706834A (zh) * 2009-11-26 2010-05-12 杭州电子科技大学 电力调度大屏输电网单线图的自动布局方法

Also Published As

Publication number Publication date
CN101944149A (zh) 2011-01-12

Similar Documents

Publication Publication Date Title
CN101944149B (zh) 基于无网格模型的集成电路点到点的布线方法
CN101980216B (zh) 基于网块的快速多层布线方法
CN101916317B (zh) 基于无网格模型的集成电路模块到模块的布线方法
CN101957876B (zh) 考虑通孔的基于不均匀网格的多层布线方法
CN102346795B (zh) 电工电子类虚拟实验快速自动布线方法
US20110246955A1 (en) Method, program, and apparatus for aiding wiring design
JPH03188650A (ja) 配線経路処理方法、配線経路処理システム、及び半導体集積回路
EP0932874A1 (en) A method for routing of nets in an electronic device
CN103488816B (zh) 模拟电路的多层精确匹配布线方法
CN111914507B (zh) 一种快速单磁通量子rsfq电路布线方法和装置
Schiele Improved compaction by minimized length of wires
CN111125981A (zh) 一种集成电路vlsi的布线方法
Cho Wiring space and length estimation in two-dimensional arrays
CN107908883A (zh) 一种异形版图中点到线的跨障碍布线方法
CN111259614B (zh) 优化鱼骨型时钟树金属走线的设计方法
CN109933857B (zh) 感知集成电路布局信息的时钟树主干拓扑生成方法及系统
CN115859899A (zh) 一种多驱动能力的集成电路标准单元版图迁移的方法
CN103235849A (zh) 电流驱动的集成电路自动布线方法及装置
CN110032815A (zh) 基于文化基因的八角形斯坦纳树构建方法
CN104573263B (zh) 基于分裂块的无网格模拟电路的布线方法
US8966428B2 (en) Fixed-outline floorplanning approach for mixed-size modules
CN112685991B (zh) 一种满足约束的布线方法
CN113255284B (zh) 全局布线中快速局部拆线重布方法
US6978433B1 (en) Method and apparatus for placement of vias
US7921399B2 (en) Method for simplifying tie net modeling for router performance

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