CN103488816B - 模拟电路的多层精确匹配布线方法 - Google Patents

模拟电路的多层精确匹配布线方法 Download PDF

Info

Publication number
CN103488816B
CN103488816B CN201310393083.0A CN201310393083A CN103488816B CN 103488816 B CN103488816 B CN 103488816B CN 201310393083 A CN201310393083 A CN 201310393083A CN 103488816 B CN103488816 B CN 103488816B
Authority
CN
China
Prior art keywords
gauze
wiring
point
information
cloth
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
CN201310393083.0A
Other languages
English (en)
Other versions
CN103488816A (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 CN201310393083.0A priority Critical patent/CN103488816B/zh
Publication of CN103488816A publication Critical patent/CN103488816A/zh
Application granted granted Critical
Publication of CN103488816B publication Critical patent/CN103488816B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明公开了一种模拟电路的多层精确匹配布线方法,包括:步骤10,读入待布线网组中每个线网的线网信息、布线区域内障碍信息和布线工艺参数信息;步骤20,根据待布线网组的每个线网信息中的起始点和终止点信息计算所有可能拐点的位置信息;步骤30,根据所有可能拐点的位置信息、待布线网组的布线区域内障碍信息和布线工艺参数信息,将布线区域划分为三维不均匀网格;步骤40,在所述三维不均匀网格上,采用A*搜索算法对待布线网组中的所有线网同时搜索布线路径;步骤50,采用A*搜索算法的回找过程求得待布线网组的精确布线路径结果。

Description

模拟电路的多层精确匹配布线方法
技术领域
本发明涉及一种超大规模集成电路物理设计技术领域,尤其涉及一种模拟的电路多层精确匹配布线方法。
背景技术
在数模混合电路中,集成了数字电路模块、模拟电路模块以及数模混合电路模块。将数模混合电路集成到一块芯片上,即成为系统级芯片(System-on-a-Chip,SoC),其应用十分广泛。目前,数字电路自动化设计的研究相对成熟,已经有成熟的针对数字集成电路的自动化设计工具。与之相比,模拟集成电路因为约束比较复杂,对电路性能要求高,自动化设计具有一定难度。目前还没有完善的用于模拟集成电路的自动化设计工具。因此,模拟集成电路及其自动设计工具的研究具有很重要的理论和实际意义,成为学术界和工业界研究的热点和难点问题。
匹配约束是差分逻辑等典型模拟电路的关键需求,是影响模拟电路性能的关键因素,包括器件匹配和信号路径匹配。为达到高度信号路径匹配的要求,在进行模拟电路信号线网的自动布线过程中,需要满足精确匹配约束。精确匹配约束是模拟电路布线过程中要求严格的几何约束,能够在对称约束无法满足的情况下尽可能减小匹配线网路径间的差异,满足模拟电路的性能需求。
精确匹配约束可以定义为:
(1)每条线网的路径可以被分为相同数目的线段;
(2)每条线网中相对应的线段长度相等;
(3)每条线网中相对应的线段在相同的金属层,相对应的通孔在相同的两层之间。如图1所示,该图为一组满足精确匹配约束的线网布线路径。
集成电路布线根据布线区域的表示及路径搜索方式分为两类模型:有网格布线模型和无网格布线模型。与有网格布线模型相比较,无网格布线模型更易于处理变线宽、变线间距等灵活布线需求。
基于隐式连接图的布线方法是无网格布线模型的一种。在该布线方法中,布线开始前,将每个障碍的边界按照“线宽/2+线间距”的距离向周围扩展,然后延长障碍的扩展边界。同时,将待布线线网的起始点和终止点沿水平和垂直方向作延长线。障碍的扩展边界延长线以及起始点、终止点延长线,彼此相交,所得交点表示为节点,由节点分割所得线段表示为边,则整个布线区域可以表示成一个无向图。由于该图并没有显式地以图的数据结构进行表示,而是仅在概念上存在,实际以支持点查找的数据结构辅助路径搜索过程,所以称为隐式连接图。线网布线路径的搜索在此隐式连接图上进行。
然而单纯采用隐式连接图的无网格布线模型,无法完成给定线网的精确匹配布线要求。
发明内容
本发明所要解决的技术问题之一是需要提供一种模拟的电路多层精确匹配布线方法,该方法能够成模拟电路匹配线网的精确匹配布线约束。
为了解决上述技术问题,本发明提供了一种模拟电路的多层精确匹配布线方法,包括:步骤10,读入待布线网组中每个线网的线网信息、布线区域内障碍信息和布线工艺参数信息;步骤20,根据待布线网组的每个线网信息中的起始点和终止点信息计算所有可能拐点的位置信息;步骤30,根据所有可能拐点的位置信息、待布线网组的布线区域内障碍信息和布线工艺参数信息,将布线区域划分为三维不均匀网格;步骤40,在所述三维不均匀网格上,采用A*搜索算法对待布线网组中的所有线网同时搜索布线路径;步骤50,采用A*搜索算法的回找过程求得待布线网组的精确布线路径结果。
在一个实施例中,所述待布线网的线网信息包括该待布线网的可用布线层信息、布线区域大小信息以及起始点和终止点信息;
所述布线区域内障碍信息包括模拟电路单元模块和已布线网这些障碍信息,其用来约束后续布线过程的搜索区域;
所述布线工艺参数信息包括待布线网的布线层层数、布线区域允许的最小线宽值和允许最小的线到线间距值,其用来作为布线设计规则约束。
在一个实施例中,所述步骤20进一步包括以下步骤:
步骤201,计算待布线网组中每条待布线网的起始点到终止点的水平距离和垂直距离;
步骤202,基于得到的有关待布线网组的水平距离和垂直距离求解出所有可能的水平单元线段长度的向量组和所有可能的垂直单元线段长度的向量组;
步骤203,判断求解出的向量组中是否包含0,若包含0的个数为偶数个,则将所有的0变为1,若包含0的个数为奇数个,则将所有的0变为1并选择该向量组中第一个不是1的数作减1运算,进而得到最终的水平单元线段长度的向量组和垂直单元线段长度的向量组;
步骤204,利用如下表达式求解对应水平单元线段长度的向量组LH的系数矩阵CH,以及对应垂直单元线段长度的向量组LV的系数矩阵CV
Σ i = 1 k H C H [ i , n ] · L H [ i ] = D H [ n ]
Σ i = 1 k V C V [ i , n ] · L V [ i ] = D V [ n ]
其中,DH[n]表示待布线网n从起始点到终止点的水平距离,DV[n]表示待布线网n从起始点到终止点的垂直距离,LH[i]表示水平单元线段长度的向量组LH中第i条水平单元线段的长度,LV[i]表示垂直单元线段长度的向量组LV中第i条垂直单元线段的长度,CH[i,n]表示待布线网n中第i条水平单元线段的系数,CV[i,n]表示待布线网n中第i条垂直单元线段的系数,该系数取值为1或-1;
步骤205,根据待布线网组中每个线网的起始点坐标、水平单元线段长度的向量组LH和与其对应的系数矩阵CH得到所有可能拐点位置的横坐标,根据待布线网组中每个线网的起始点坐标、垂直单元线段长度的向量组LV和与其对应的系数矩阵CV得到所有可能拐点位置的纵坐标,进而得到所有可能拐点位置信息。
在一个实施例中,所述步骤30进一步包括以下步骤:
步骤301,初始化横坐标集合和纵坐标集合;
步骤302,遍历所述障碍信息,将障碍信息中每一个的边界分别按照设定距离进行扩展,得出垂直扩展边界和水平扩展边界;
步骤303,遍历待布线网组的每个线网的起始点和终止点信息,沿每个点的位置向水平和垂直方向扩展;
步骤304,遍历可能拐点位置信息,沿每个拐点位置向水平和垂直方向扩展;
步骤305,将步骤302、步骤303和步骤304中得到的所有垂直边的横坐标加入到横坐标集合中,所有水平边的纵坐标加入到纵坐标集合中;
步骤306,基于得到的横坐标集合和纵坐标集合,将布线区域划分为三维不均匀网格,并设置三维不均匀网格的允许扩展方向,其中,将线网信息中可用的布线层数作为第三个维度。
在一个实施例中,所述步骤40进一步包括:
步骤401,定义起始状态的扩展代价;
步骤402,创建待扩展状态的链表,按照扩展代价由小到大的顺序保存所有已访问而未扩展的状态,所述状态为待布线网组的每个线网的一个搜索到而未扩展的网格点所组成的集合;
步骤403,判断待扩展状态链表中是否有待扩展状态,若判断结果为是,则执行步骤404,否则搜索结束并输出搜索失败;
步骤404,读取待扩展状态链表中扩展代价最小的状态,记为当前待扩展状态,并判断当前待扩展状态是否是终止状态,若判结果为是,则搜索结束,并输出搜索成功,否则执行步骤405,所述终止状态为包括待布线网组的每个线网的终止点的点集合;
步骤405,遍历当前待扩展状态的点集合中各点分别允许的扩展方向,寻找出各允许扩展方向上所有点,并插入到相邻点列表中;
步骤406,遍历相邻点列表,针对当前待扩展状态中的点集合,选取主线网,从而生成多个新的扩展状态;
步骤407,计算新的扩展状态的扩展代价,并将其按照计算得到的扩展代价插入到待扩展点链表的适当位置;
步骤408,重复步骤404至步骤407,直到搜索结束。
在一个实施例中,所述步骤50进一步包括以下步骤:
步骤501,建立布线路径结构,并初始化为空;
步骤502,读取步骤40搜索到的终止状态;
步骤503,将终止状态所对应的点集合中的各点添加到布线路径结构中;
步骤504,递归地从终止状态寻找前一个状态,并将对应点集合添加到布线路径结构中,直到递归到起始状态为止,输出精确布线路径结果。
在一个实施例中,还包括步骤60,将精确匹配布线结果输出到CIF文件中,用CIF查看工具进行检查。
在一个实施例中,采用C++语言实现模拟电路的多层精确匹配布线。
与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
本发明提出了一种新的模拟电路的多层精确匹配无网格布线方法。该方法首先根据匹配线网的起始点和终止点计算可能的拐点位置,然后,依据可能的拐点位置、障碍信息和设计规则将布线区域划分为三维不均匀网格,并设置网格的允许扩展方向;最后,在不均匀网格上利用最短路径搜索算法为匹配线网同时搜索布线路径。该方法能够完成模拟电路匹配线网的精确匹配布线约束。
此外,本发明方法可使用C++语言基于面向对象思想设计和实现,具有较强的平台通用性,可以在不同的平台上运行。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1为一满足精确匹配约束的线网布线路径的示例图;
图2为根据本发明一实施例的模拟电路的多层精确匹配布线方法的流程示意图;
图3为根据本发明一实施例的精确匹配的水平单元线段示意图;
图4为根据本发明一实施例的无网格布线模型中布线区域划分示意图;
图5为根据本发明一实施例的精确匹配布线方法中新状态生成的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下结合附图对本发明作进一步地详细说明。
图2是根据本发明一实施例的模拟电路多层精确匹配布线方法的流程示意图。请参阅图2,下面详细说明本方法的各个步骤。
步骤S210,读入待布线网组中每个线网的匹配线网信息、布线区域内障碍信息和布线工艺参数信息。
具体地,待布线网的线网信息包括待布匹配线网的起始点和终止点信息、可用布线层信息以及布线区域大小信息。布线区域内障碍信息包括模拟电路单元模块、已布线网等障碍信息,其用以约束后续布线过程的搜索区域。布线工艺参数信息包括待布线网的布线层层数、布线区域允许的最小线宽值以及允许最小的线到线间距值等布线设计规则约束。
步骤S220,根据待布线网组的每个线网信息中的起始点和终止点信息计算可能拐点的位置信息。
具体地,首先,获取从步骤S210读入的所有匹配线网的起始点和终止点的位置信息。计算待布线网组中每条待布线网的起始点到终止点的水平距离和垂直距离。基于得到的有关待布线网组的水平距离和垂直距离求解出所有可能的水平单元线段长度的向量组和所有可能的垂直单元线段长度的向量组。
为了更好的说明,进行以下定义:设有N条线网进行精确匹配布线,令DH[n]表示待布线网n从起始点到终止点的水平距离,DV[n]表示线网n从起始点到终止点的垂直距离。对于每条线网,设有kH条水平单元线段和kV条垂直单元线段。令LH是水平单元线段长度的向量组,即LH[i]表示第i条水平单元线段的长度,同样,令LV表示垂直单元线段长度的向量组。令CH是相对应LH的系数矩阵,即CH[i,n]表示第n条线网中第i条水平单元线段的系数。同样,CV是相对应LV的系数矩阵,CV[i,n]表示待布线网n中第i条垂直单元线段的系数,该系数矩阵中的元素值为1或-1。
接着,根据以上的定义,可以得出求解精确匹配约束所需拐点的坐标,换言之,就等同于求解LH和LV向量中每个元素的值以及CH和CV系数矩阵中每个系数元素,其中LH和LV表示单元线段的长度,而CH和CV表示单元线段的方向。
由于满足精确匹配约束的布线结果是由单元线段连接而成的,所以LH、LV、CH和CV满足以下表达式(1):
Σ i = 1 k H C H [ i , n ] · L H [ i ] = D H [ n ]
Σ i = 1 k V C V [ i , n ] · L V [ i ] = D V [ n ] - - - ( 1 )
下面证明求解N条线网的精确匹配布线问题,LH(LV)中最多需要N个元素即可:
以求解LH和CH为例,说明求解可能拐点坐标的过程。
根据表达式(1),对于线网n,水平距离DH[n]是整数,所以DH[n]可以视为LH中元素经过加减运算之和。这样,原问题近似于一个整数拆分问题,即求出若干段水平单元线段的长度,它们经过加减组合后得到不同的水平距离。
首先需要确定的是LH中元素的个数。对于2条线网,不同的水平距离最多只有2个,设为DH[1]和DH[2]。那么,LH中只需要有两个元素LH[1]和LH[2]即可,分别表示如下: L H [ 1 ] = 1 2 | D H [ 1 ] - D H [ 2 ] | L H [ 2 ] = 1 2 ( D H [ 1 ] + D H [ 2 ] )
假设2条线网的LH存在3个元素的解,即LH[1]、LH[2]和LH[3],则有:
CH[1,1]·LH[1]+CH[2,1]·LH[2]+CH[3,1]·LH[3]=DH[1]
CH[1,2]·LH[1]+CH[2,2]·LH[2]+CH[3,2]·LH[3]=DH[2]
由于CH中的元素为1或-1,所以CH[1,1]和CH[1,2]、CH[2,1]和CH[2,2]、CH[3,1]和CH[3,2]三组之间的关系只有两种:相等或互为相反数。根据鸽巢原理,必有两组系数之间的关系一致。不失一般性,假设CH[1,1]和CH[1,2]、CH[2,1]和CH[2,2]的关系一致,且互为相反数,即CH[1,1]=-CH[1,2]、CH[2,1]=-CH[2,2]那么上式可以表示为:
令A=CH[1,1]·LH[1]+CH[2,1]·LH[2]
1·A+CH[3,1]·LH[3]=DH[1]
-1·A+CH[3,2]·LH[3]=DN[2]
这样,LH中可以只包含两个元素A和LH[3],所以LH中只需要有2个元素即可。若CH[1,1]和CH[1,2]、CH[2,1]和CH[2,2]的关系一致,且彼此相等,可以以同样的方法证明LH中只需要有2个元素即可。
同理可以证明,对于3条线网的情况,只需要3个元素即可。另外,若LH中仅有1个或2个元素,则无法通过加减组合得到3个不同的DH,所以至少需要有3个元素。以此类推,对于N条线网精确匹配,需要LH中的元素个数为N。
例如,可以采用如下给出的算法伪代码分别求得LH和LV
另外,由于精确匹配布线路径是水平单元线段与垂直单元线段相间组成的,如果求解出的LH或LV中包含0,则可能会出现水平单元线段或垂直单元线段无法组成布线路径的情况。例如,如果解得LH=[1,1,2];LV=[0,0,2],则垂直单元线段其实只有一条,不够将水平线段间隔开,因此需要将LV中的0消去。具体的方法是:若包含0的个数为偶数个,则将所有的0变成1,不需要其他处理;如果包含0的个数为奇数个,则将所有的0变为1,并选择第一个不是1的数减1。消去0后,例子中的LV变为[1,1,2]。继而就能得到最终的水平单元线段长度的向量组和垂直单元线段长度的向量组。根据表达式(1),就可以求出CH和CV
最后,从起点出发,根据LH和CH中的元素,可以依次求出可能拐点的横坐标。因为LH中元素的顺序可以任意改变,所以需要遍历LH中元素的所有顺序以及相对应CH中的顺序,求出精确匹配约束下所有可能拐点的横坐标。按照同样的方法,可以求出所有可能拐点的纵坐标,进而得到所有可能拐点位置信息。
图3给出3条线网的水平精确匹配示例。如图3所示,net1、net2和net3的水平距离分别为1、3和7,拆分之后得到水平单元线段既可以是[1,2,4],也可以是[2,2,3],而net1的对应系数矩阵分别为CH[1]=[-1,-1,1]和CH[1]=[1,1,-1]。
以图3为例介绍上述算法伪代码求解LH算法的主要思路:设LH的初始值为{0,0,0},3条线网的水平距离为DH={1,3,7}。上述算法伪代码中第9-10行用于枚举DH中的任意两个元素进行求解。假设取1和3,则由第11-12行所示,value=|1+3|/2=2,diff=|1-3|/2=1(即:1=2-1,3=2+1)。为求得LH的所有可能解,第13-14行和第21行枚举所有可能情况。运行至第21行时,D’H={7}。在第22行,假设q=“0”,则运行至第25行时,D’H={7+(0×2-1)×diff}={6}。则运行至第26行时,D’H={6,2}。运行至第27行,LH={1,0,0}。在第28行,递归调用该函数CalculateL,此时D’H中只有两个元素6和2,所以进入第2行执行,从而在第6行得到最终结果LH={1,2,4},与图3中的示例相符。通过第13-14行和第21行的枚举,可以求得LH的所有可能解。
步骤S230,根据所有可能拐点的位置信息、待布线网组的布线区域内障碍信息和布线工艺参数信息,将布线区域划分为三维不均匀网格。
具体地,首先初始化横坐标集合和纵坐标集合,然后,遍历步骤S210得到的障碍信息(列表),将障碍信息中的每一个边界分别按照设定距离,例如“线宽/2+线间距”的距离进行扩展,得出垂直扩展边界和水平扩展边界。接着,遍历步骤S210得到的待布线线网组的每个线网的起始点和终止点列表,沿每个点的位置向水平和垂直方向扩展,以及遍历步骤S220得到的可能拐点位置列表,沿每个拐点位置向水平和垂直方向扩展。再后,将得到的所有垂直边的横坐标加入到横坐标集合中,所有水平边的纵坐标加入到纵坐标集合中。
最后,基于上步得到的横坐标集合和纵坐标集合,将布线区域划分为三维不均匀网格,并设置三维不均匀网格的允许扩展方向,其中,将线网信息中可用的布线层数作为第三个维度。如图4所示,实线为对应扩展的障碍边界、匹配线网起始点和终止点的不均匀网格,而虚线对应可能拐点位置的不均匀网格。可以证明,以上方式划分的不均匀网格,可以保证线网进行精确匹配布线且同时扩展发生拐弯时,必有一个拐点在网格的边界上。
步骤S240,在三维不均匀网络上,采用A*搜索算法对待布线网组中的所有线网同时搜索布线路径。
需要说明的是,在进行多条线网同时布线之前,需要确定其中一条线网为主线网(chief net),然后根据这条线网的扩展长度去扩展其他线网。与传统的单一线网的A*搜索过程不同的是,在扩展过程中,不是将新生成的点插入A*搜索的链表(openlist)中,而是将所有匹配线网新扩展出的点的集合作为新生成的状态插入到openlist中。
图5是根据本发明一实施例的精确匹配布线方法中新状态的生成方法的示意图,假设当前的状态是[p1,p2],线网1(net1)和线网2(net2)同时扩展,而net1作为chief net。
图5(a)中,net1从p1扩展到q1而没有发生拐弯,那么net2也不会发生拐弯,否则精确匹配约束会被破坏,所以net2只能从p2扩展到q2,这样就只生成一个新状态[q1,q2]。
图5(b)中,net1在p1点发生了拐弯,从垂直层扩展到了水平层,那么net2也会从垂直层扩展到水平层,发生拐弯。在水平层,net2有两个扩展方向,向左或者向右,两者都可以满足精确匹配约束,所以net2可以扩展到q2,也可以扩展到q2′,这样就生成两个不同的状态[q1,q2]和[q1,q2′]。
具体地,该步骤进一步包括以下步骤:
步骤(a),定义起始状态的扩展代价;
步骤(b),创建待扩展状态的链表,按照扩展代价由小到大的顺序保存所有已访问而未扩展的状态,所述状态为待布线网组的每个线网的一个搜索到而未扩展的网格点(包括起始点)所组成的集合,即一个待扩展状态表示多个待扩展网格点的集合,其网格点的数目与待布线网组中的线网数相同;
步骤(c),判断待扩展状态链表中是否有待扩展状态,若判断结果为是,则执行步骤(d),否则搜索结束并输出搜索失败;
步骤(d),读取待扩展状态链表中扩展代价最小的状态,记为当前待扩展状态,并判断当前待扩展状态是否是终止状态,若判结果为是,则搜索结束,并输出搜索成功,否则执行步骤(e),所述终止状态为包括待布线网组的每个线网的终止点的点集合;
步骤(e),遍历当前待扩展状态的点集合中各点分别允许的扩展方向,寻找出各允许扩展方向上所有点,并插入到相邻点列表中;
步骤(f),遍历相邻点列表,针对当前待扩展状态中的点集合,选取主线网,从而生成多个新的扩展状态;
步骤(g),计算新的扩展状态的扩展代价,并将其按照计算得到的扩展代价插入到待扩展点链表的适当位置;
步骤(h),重复步骤(d)至步骤(g),直到搜索结束。
例如,本步骤的A*搜索算法如下伪代码来表示,
算法中所用变量定义如下表1所示。
表1
上面所涉及到的公式计算如下所示:
new _ s . mat _ err = Σ n = 1 N ( max _ d H - d H n ) · min _ cos t H
+ ( max _ d V - d V n ) · min _ cos t V
new_s.costH=max_dH·min_costH+max_dV·min_costV
+|cur_s.layer-t_s.layer|·costvia+α·mat_err
new_s.costG=cur_s.costG+Δg
new_s.costF=costG+costH
步骤S250,采用A*搜索算法的回找过程求得待布线网的精确布线路径结果。
具体地,首先建立布线路径结构,并初始化为空。然后读取步骤240搜索到的终止状态,将终止状态所对应的点集合中的各点添加到布线路径结构中。最后,递归地从终止状态寻找前一个状态,并将对应点集合添加到布线路径结构中,直到递归到起始状态为止,输出精确布线路径结果。
步骤S260,输出精确匹配布线结果。
具体地,将精确匹配布线结果输出到CIF文件中,用Tanner LEdit或其他CIF查看工具进行检查。
综上,本发明为了完成模拟电路匹配线网的精确匹配布线约束,提出了一种新的多层精确匹配无网格布线方法。该方法首先根据匹配线网的起始点和终止点计算可能的拐点位置;然后,依据可能的拐点位置、障碍信息和设计规则将布线区域划分为三维不均匀网格;最后,在不均匀网格上利用A*搜索算法为匹配线网同时搜索布线路径。此外,本发明方法可使用C++语言基于面向对象思想设计和实现,具有较强的平台通用性,可以在不同的平台上运行。
以上步骤可使用C++语言基于面向对象思想设计和实现,具有较强的平台通用性,可以在不同的平台上运行,下面介绍程序的工作流程:
(1)读入待布线的匹配线网信息、布线区域内障碍信息和布线工艺参数信息
程序读入不局限于以配置文件形式提供的布线区域大小、布线区域内的障碍信息、待布线网信息和工艺信息。其中,待布线网信息包括:(a)待布匹配线网的起始点和终止点信息,(b)待布线网的可用布线层,即该线网可以在哪些金属层上布线,(c)布线区域大小信息。
布线区域内障碍信息包括模拟电路单元模块、已布线网等障碍信息,用以约束后续布线过程的搜索区域。
布线工艺参数信息主要包括该布线层层数sizeZ,布线区域允许的最小线宽值lineW[sizeZ],允许最小的线到线间距值lineS[sizeZ],这些大小和间距信息均为数组,数组的大小等于sizeZ,下标表示对应的布线层层号。
(2)根据匹配线网的起始点和终止点计算可能拐点的位置
2.1获取步骤(1)中读入的所有匹配线网的起始点(netVec[i].source.x(),netVec[i].source.y())和终止点的位置信息(netVec[i].target.x(),netVec[i].target.y())。
2.2计算每条线网起点到终点的水平距离和垂直距离,分别保存在xVec和yVec(均为STL vector<int>类型),如xVec[n]表示线网n从起点到终点的水平距离,yVec[n]表示线网n从起点到终点的垂直距离。然后调用上述相关算法计算所有可能的水平单元线段长度的向量组xArrayVec(即LH)和所有可能的垂直单元线段长度的向量组yArrayVec(即LV),类型为STL vector<vector<int>>,并去除彼此完全相等的冗余项。
2.3如果求解出的水平单元线段长度的向量组xArrayVec(即LH)或垂直单元线段长度的向量组yArrayVec(即LV)中包含0,则可能会出现水平单元线段或垂直单元线段无法组成布线路径的情况。具体的方法是将所有的0变成1:如果共有偶数个0,则不需要其他处理;如果有奇数个0,则选择第一个不是1的数减1。
2.4根据表达式(1)求解对应xArrayVec(即LH)的系数矩阵paraX(即CH),和对应xArrayVec(即LV)的系数矩阵paraY(即CV),类型均为STL vector<vector<vector<int>>>,元素值为1或-1。值得注意的是,系数矩阵可以由穷举法求解得到,也可以采用分支定界等优化方法进行加速。
2.5由匹配线网组中每个线网的起点坐标,xArrayVec(即LH)和其对应的系数矩阵paraX(即CH),可以求得所有可能拐点位置的x坐标;由匹配线网组中每个线网的起点坐标,yArrayVec(即LV)和其对应的系数矩阵paraY(即CV),可以求得所有可能拐点位置的y坐标。
(3)根据所有起始点、终止点、可能拐点位置和扩展的障碍边界划分不均匀网格。
3.1初始化横坐标集合XVec和纵坐标集合YVec,均为STL vector<int>类型;
3.2遍历步骤(1)得到的障碍列表,将障碍的每一个边界分别按照“线宽/2+线间距”的距离进行扩展,得出垂直扩展边界的x坐标并添加到XVec中,得到水平扩展边界y坐标并添加到YVec中。
3.3遍历步骤(1)得到的匹配线网的起始点和终止点列表,沿每个点的位置向垂直和水平方向扩展,将相应的x坐标添加到XVec中,并将相应的y坐标添加到YVec中。
3.4遍历步骤(2)得到的可能拐点位置列表,沿每个拐点位置向垂直和水平方向扩展,将相应的x坐标和y坐标分别添加到XVec和YVec中。
3.5基于上步得到的横坐标集合XVec和纵坐标集合YVec,将布线区域划分为三维不均匀网格rArea(为Grid***类型,其中Grid为表示布线网格点的C++类),其中可用的布线层数作为第三个维度。
3.6对应于布线区域的三维不均匀网格rArea中的每个网格点,构造相应的扩展信息网格点exArea(为ExpandInfo***类型,ExpandInfo为表示布线网格点搜索扩展方向信息的C++类)。
(4)采用A*搜索算法对匹配线网同时搜索布线路径。
4.1初始化sNode和tNode,sNode为Node类的对象,存储所有匹配线网的源点坐标,tNode也为Node类的对象,存储所有匹配线网的目标点坐标。
4.2计算sNode的costG,costH和costF(含义如上表1所示)。
4.3将sNode添加到openlist(类型为STL list<Node>)的末尾,作为初始搜索点。
4.4取出openlist中的第一个结点cNode。
4.5如果cNode与目标结点tNode重合,则布线成功,搜索结束;否则,进入下一步骤。
4.6将cNode添加到clostlist(类型为STL list<Node>)的末尾,并将其从openlist中删除。
4.7由cNode向周边扩展,细节详见相关所示算法的第9-13步。
4.8重复第4.4~4.7步骤。
(5)采用A*回找过程求得匹配线网的布线路径结果。
5.1读取步骤(4)中搜索到的在终止结点cNode。
5.2将cNode中存储的坐标点分别添加到每个匹配线网的布线路径中。
5.3将cNode的父结点作为当前待扩展点,判断当前待扩展点是否为起始结点,是,则输出匹配线网的布线路径,否,则继续执行步骤5.2~5.3。
(6)输出精确匹配布线结果
精确匹配布线结果可以输出到CIF文件中,用Tanner LEdit或其他CIF查看工具进行检查。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人员在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (6)

1.一种模拟电路的多层精确匹配布线方法,其特征在于,包括:
步骤10,读入待布线网组中每个线网的线网信息、布线区域内障碍信息和布线工艺参数信息;
步骤20,根据待布线网组的每个线网信息中的起始点和终止点信息计算所有可能拐点的位置信息;
步骤30,根据所有可能拐点的位置信息、待布线网组的布线区域内障碍信息和布线工艺参数信息,将布线区域划分为三维不均匀网格;
步骤40,在所述三维不均匀网格上,采用A*搜索算法对待布线网组中的所有线网同时搜索布线路径;
步骤50,采用A*搜索算法的回找过程求得待布线网组的精确布线路径结果,
所述待布线网组中的每个线网的线网信息包括待布线网的可用布线层信息、布线区域大小信息以及起始点和终止点信息;所述布线区域内障碍信息包括模拟电路单元模块和已布线网这些障碍信息,其用来约束后续布线过程的搜索区域;所述布线工艺参数信息包括待布线网的布线层层数、布线区域允许的最小线宽值和允许最小的线到线间距值,其用来作为布线设计规则约束,所述步骤20进一步包括以下步骤:
步骤201,计算待布线网组中每条待布线网的起始点到终止点的水平距离和垂直距离;
步骤202,基于得到的有关待布线网组的水平距离和垂直距离求解出所有可能的水平单元线段长度的向量组和所有可能的垂直单元线段长度的向量组;
步骤203,判断求解出的向量组中是否包含0,若包含0的个数为偶数个,则将所有的0变为1,若包含0的个数为奇数个,则将所有的0变为1并选择该向量组中第一个不是1的数作减1运算,进而得到最终的水平单元线段长度的向量组和垂直单元线段长度的向量组;
步骤204,利用如下表达式求解对应水平单元线段长度的向量组LH的系数矩阵CH,以及对应垂直单元线段长度的向量组LV的系数矩阵CV
&Sigma; i = 1 k H C H &lsqb; i , n &rsqb; &CenterDot; L H &lsqb; i &rsqb; = D H &lsqb; n &rsqb;
&Sigma; i = 1 k V C V &lsqb; i , n &rsqb; &CenterDot; L V &lsqb; i &rsqb; = D V &lsqb; n &rsqb;
其中,DH[n]表示待布线网n从起始点到终止点的水平距离,DV[n]表示待布线网n从起始点到终止点的垂直距离,LH[i]表示水平单元线段长度的向量组LH中第i条水平单元线段的长度,LV[i]表示垂直单元线段长度的向量组LV中第i条垂直单元线段的长度,CH[i,n]表示待布线网n中第i条水平单元线段的系数,CV[i,n]表示待布线网n中第i条垂直单元线段的系数,该系数取值为1或-1;
步骤205,根据待布线网组中每个线网的起始点坐标、水平单元线段长度的向量组LH和与其对应的系数矩阵CH得到所有可能拐点位置的横坐标,根据待布线网组中每个线网的起始点坐标、垂直单元线段长度的向量组LV和与其对应的系数矩阵CV得到所有可能拐点位置的纵坐标,进而得到所有可能拐点位置信息。
2.根据权利要求1所述的多层精确匹配布线方法,其特征在于,所述步骤30进一步包括以下步骤:
步骤301,初始化横坐标集合和纵坐标集合;
步骤302,遍历所述障碍信息,将障碍信息中每一个的边界分别按照设定距离进行扩展,得出垂直扩展边界和水平扩展边界;
步骤303,遍历待布线网组的每个线网的起始点和终止点信息,沿每个点的位置向水平和垂直方向扩展;
步骤304,遍历可能拐点位置信息,沿每个拐点位置向水平和垂直方向扩展;
步骤305,将步骤302、步骤303和步骤304中得到的所有垂直边的横坐标加入到横坐标集合中,所有水平边的纵坐标加入到纵坐标集合中;
步骤306,基于得到的横坐标集合和纵坐标集合,将布线区域划分为三维不均匀网格,并设置三维不均匀网格的允许扩展方向,其中,将线网信息中可用的布线层数作为第三个维度。
3.根据权利要求1或2所述的多层精确匹配布线方法,其特征在于,所述步骤40进一步包括:
步骤401,定义起始状态的扩展代价;
步骤402,创建待扩展状态的链表,按照扩展代价由小到大的顺序保存所有已访问而未扩展的状态,所述状态为待布线网组的每个线网的一个搜索到而未扩展的网格点所组成的集合;
步骤403,判断待扩展状态链表中是否有待扩展状态,若判断结果为是,则执行步骤404,否则搜索结束并输出搜索失败;
步骤404,读取待扩展状态链表中扩展代价最小的状态,记为当前待扩展状态,并判断当前待扩展状态是否是终止状态,若判结果为是,则搜索结束,并输出搜索成功,否则执行步骤405,所述终止状态为包括待布线网组的每个线网的终止点的点集合;
步骤405,遍历当前待扩展状态的点集合中各点分别允许的扩展方向,寻找出各允许扩展方向上所有点,并插入到相邻点列表中;
步骤406,遍历相邻点列表,针对当前待扩展状态中的点集合,选取主线网,从而生成多个新的扩展状态;
步骤407,计算新的扩展状态的扩展代价,并将其按照计算得到的扩展代价插入到待扩展点链表的适当位置;
步骤408,重复步骤404至步骤407,直到搜索结束。
4.根据权利要求3所述的多层精确匹配布线方法,其特征在于,所述步骤50进一步包括以下步骤:
步骤501,建立布线路径结构,并初始化为空;
步骤502,读取步骤40搜索到的终止状态;
步骤503,将终止状态所对应的点集合中的各点添加到布线路径结构中;
步骤504,递归地从终止状态寻找前一个状态,并将对应点集合添加到布线路径结构中,直到递归到起始状态为止,输出精确布线路径结果。
5.根据权利要求4所述的多层精确匹配布线方法,其特征在于,还包括步骤60,将精确匹配布线结果输出到CIF文件中,用CIF查看工具进行检查。
6.根据权利要求1所述的多层精确匹配布线方法,其特征在于,
采用C++语言实现模拟电路的多层精确匹配布线。
CN201310393083.0A 2013-09-02 2013-09-02 模拟电路的多层精确匹配布线方法 Active CN103488816B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310393083.0A CN103488816B (zh) 2013-09-02 2013-09-02 模拟电路的多层精确匹配布线方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310393083.0A CN103488816B (zh) 2013-09-02 2013-09-02 模拟电路的多层精确匹配布线方法

Publications (2)

Publication Number Publication Date
CN103488816A CN103488816A (zh) 2014-01-01
CN103488816B true CN103488816B (zh) 2016-08-10

Family

ID=49829036

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310393083.0A Active CN103488816B (zh) 2013-09-02 2013-09-02 模拟电路的多层精确匹配布线方法

Country Status (1)

Country Link
CN (1) CN103488816B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104573263B (zh) * 2015-01-23 2018-03-02 武汉理工大学 基于分裂块的无网格模拟电路的布线方法
CN106845002B (zh) * 2017-02-14 2020-06-09 上海利驰软件有限公司 成套电气中线束的3d模拟方法及模拟系统
TWI674823B (zh) * 2017-06-16 2019-10-11 矽品精密工業股份有限公司 自動佈線系統及方法
CN110941940B (zh) * 2019-12-04 2023-06-13 杭州广立微电子股份有限公司 一种基于碰撞检测的3d绕线方法、存储设备和系统
CN113673196B (zh) * 2021-08-15 2024-02-06 上海立芯软件科技有限公司 一种基于可布线性预测的全局布线优化方法
CN116070575B (zh) * 2023-01-12 2023-08-15 广东工业大学 一种芯片布线优化方法及软件系统
CN116484798B (zh) * 2023-04-27 2024-05-03 苏州容汇科技有限公司 一种基于分段并行搜索的pcb布线加速优化方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101413964A (zh) * 2007-10-31 2009-04-22 北京华大泰思特半导体检测技术有限公司 面向集成电路数模混合测试适配器的模拟布线方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3998169B2 (ja) * 2000-09-14 2007-10-24 株式会社ルネサステクノロジ 回路の設計方法および回路の設計支援プログラム並びに回路設計装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101413964A (zh) * 2007-10-31 2009-04-22 北京华大泰思特半导体检测技术有限公司 面向集成电路数模混合测试适配器的模拟布线方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向模拟和数模混合集成电路的自动布线方法研究;杜昶旭;《中国博士学位论文全文数据库 信息科技辑》;20100315;第26-32,40-43,49,75-77页 *

Also Published As

Publication number Publication date
CN103488816A (zh) 2014-01-01

Similar Documents

Publication Publication Date Title
CN103488816B (zh) 模拟电路的多层精确匹配布线方法
CN111462137A (zh) 一种基于知识蒸馏和语义融合的点云场景分割方法
CN102346795B (zh) 电工电子类虚拟实验快速自动布线方法
CN101980216B (zh) 基于网块的快速多层布线方法
CN103324796B (zh) 一种大规模集成电路设计中的绕障直角斯坦纳树构造方法
CN101916317B (zh) 基于无网格模型的集成电路模块到模块的布线方法
CN104679949B (zh) 基于XML路网数据的Paramics路网构建方法
CN111080786B (zh) 基于bim的室内地图模型构建方法及装置
CN110909961B (zh) 基于bim的室内路径查询方法及装置
CN115563674B (zh) 初始平面布置生成方法和装置、电子设备和存储介质
CN115859899B (zh) 一种多驱动能力的集成电路标准单元版图迁移的方法
CN110853120B (zh) 基于分割绘图法的网络布局方法、系统及介质
CN117422041A (zh) 模拟芯片自动化布线模型训练方法及自动化布线方法
CN105843982A (zh) 用于可编程逻辑器件的位流生成方法、装置及设计系统
US7181377B1 (en) Method of modifying a volume mesh using sheet extraction
Masoudi Geometric-based optimization algorithms for cable routing and branching in cluttered environments
Miller et al. Embedding-based placement of processing element networks on FPGAs for physical model simulation
CN111931993A (zh) 一种输电网接线图生成方法及系统
Yessios Syntactic Structures for Site Planning [1]
US20240086606A1 (en) Method for generating analog schematic diagram based on building block classification and reinforcement learning
CN112100797B (zh) 基于结构模型的互联网拓扑仿真生成方法及系统
CN115828488B (zh) 新风风管布置方法、系统、存储介质及设备
CN115086224B (zh) 基于Farey模型的最短路由实现方法及系统
CN113158283B (zh) 一种从建筑草图bim模型中提取建筑构件的方法
CN118171416A (zh) 基于网格细分和冲突检测的电网线路自适应折线布局算法

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