CN1545049A - 基于虚拟模块的大规模混合模式布图方法 - Google Patents
基于虚拟模块的大规模混合模式布图方法 Download PDFInfo
- Publication number
- CN1545049A CN1545049A CNA2003101135309A CN200310113530A CN1545049A CN 1545049 A CN1545049 A CN 1545049A CN A2003101135309 A CNA2003101135309 A CN A2003101135309A CN 200310113530 A CN200310113530 A CN 200310113530A CN 1545049 A CN1545049 A CN 1545049A
- Authority
- CN
- China
- Prior art keywords
- module
- virtual
- virtual module
- unit
- cost
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 84
- 230000008569 process Effects 0.000 claims description 31
- 238000003466 welding Methods 0.000 claims description 30
- 238000013461 design Methods 0.000 claims description 27
- 238000005457 optimization Methods 0.000 claims description 26
- 238000002922 simulated annealing Methods 0.000 claims description 19
- 238000000137 annealing Methods 0.000 claims description 16
- 238000005192 partition Methods 0.000 claims description 10
- 230000009897 systematic effect Effects 0.000 claims description 8
- 238000009826 distribution Methods 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 claims description 4
- 238000001816 cooling Methods 0.000 claims description 3
- 238000005054 agglomeration Methods 0.000 claims description 2
- 230000002776 aggregation Effects 0.000 claims description 2
- 230000008676 import Effects 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 8
- 238000012545 processing Methods 0.000 abstract description 4
- 238000000638 solvent extraction Methods 0.000 abstract description 3
- 238000011960 computer-aided design Methods 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 12
- 230000003190 augmentative effect Effects 0.000 description 9
- 239000013256 coordination polymer Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000000452 restraining effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000005755 formation reaction Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 238000013517 stratification Methods 0.000 description 2
- 241001229889 Metis Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 150000002500 ions Chemical class 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
基于虚拟模块的大规模混合模式布图方法属于集成电路计算机辅助设计技术领域,其特征在于:它是在“虚拟模块”概念的基础上层次化划分整个电路,以降低问题的规模,同时,把处理虚拟模块和宏模块的规划技术以及处理标准单元的布局技术有机地相结合,以保证整个布图系统能在合理时间内得到优良的布图结果。整个过程依次由划分、规划、基于二次布局的总体布局和详细布局组成。与一般的二次布局结果相比,线长改善效果最大可达到40%以上。
Description
技术领域
基于虚拟模块的大规模混合模式布图方法属于集成电路计算机辅助设计领域,尤其涉及单元布局和模块规划(placement and floorplan)领域。
背景技术
物理设计是超大规模集成电路(VLSI)设计过程中主要的一环。与此相关的计算机辅助设计技术称为自动布图。集成电路的制造工艺由目前的深亚微米(DSM)进入到超深亚微米(VDSM),集成电路的设计规模也正由超大规模(VLSI),甚大规模(ULSI)向G大规模(GSI)发展,电路的复杂性急剧增加使得层次式电路设计以及电路模块的重用技术受到学术和产业界的空前重视。知识产权模块的大量涌现也为集成电路布图设计提出了前所未有的挑战。因此布图设计面临电路单元数量极其庞大、单元组成结构极其复杂等现状,与之相应的,布图设计需要考虑引入层次化的设计流程、改进现有的布局规划技术以达到能够在合理时间里得到总线长较短、时延和其他性能指标优良的布图结果,这些都可以归结为大规模混合模式布图(MMP:Mixed Mode Placement)问题。
大规模混合模式电路有两个突出的特点:
(1)单元数量大。片上系统的出现使得需要在一块芯片上进行布局定位的单元数量多达几万、几十万甚至几百万个。庞大的数量使得现有的布局规划技术都难以在合理的时间里得到质量高的布图结果,从而延缓产品研发的时间周期,甚至导致产品的失败。
(2)单元组成结构复杂。由于知识产权模块的出现和电路模块的重用技术的引入,电路单元可以分为以下几种类型:
a)标准单元:这些小单元是目前工业上应用最多的一种电路单元,例如基本的门电路。它们的特征是高度全部相等,可以在片上翻转但不能变形,其数量庞大,构成电路组成的主体。
b)硬宏模块:例如知识产权模块。它们的特征是高度和面积都比标准单元大很多,有的甚至达到100倍以上。它们的面积和形状都固定不变,但一般数量较少。
c)软宏模块:例如存储器(Memory)模块、数据流(Data-Path)模块等。它们的特征是大小与硬模块相当,面积不变,但形状可以在一定范围内变动。这些软模块的引入加大了问题的不确定性,也提高了求解问题的难度。
由于大规模混合模式电路的上述特点,自动布图系统需要解决的问题是:
(1)如何在合理的时间里获得问题的解,得到布图结果。
(2)宏模块的位置和形状对整个布图质量有着决定性的影响,如何合理的安排这些宏模块的位置并确定它们的形状。
(3)宏模块和标准单元的重叠在混合模式布图中表现的尤其突出,合理的布图结果必须去除所有这些重叠并保持整体布图质量不受太大影响。
针对电路的不同特点,现有的布图技术主要可以分为两类:规划(floorplan)技术和布局(placement)技术:
(1)规划(floorplan)技术主要用于BBL(Building Block Layout)布图,它适于处理宏模块,可以在保证模块不重叠的基础上得到线长小的布图结果。但规划技术基本上都是基于诸如模拟退火等随机优化方法的,它可以得到好的结果但时间代价比较大,无法用来处理大规模的布图问题。它能有效的处理的单元数量一般在50以下。
(2)布局(placement)技术主要用于标准单元布图,例如工业界比较常用的二次布局(Q-place)技术。它一般采用数学规划方法以及其他一些确定性的启发式方法,因此处理速度大大优于规划技术,可以处理几千甚至上万个单元的定位问题。但由于它一般把单元看成质点,因此无法保证单元之间不重叠;虽然详细布局(detailed placement)技术可以通过一些启发式方法去除单元重叠,但对去除宏模块和标准单元的重叠能力有限。而且,当单元数量上升到几十万、上百万时,其得到布图结果需要的运行时间依然不可接受。
因此,无论是规划技术还是布局技术都无法直接用来解决大规模混合模式布图问题,而且仅仅把两者进行简单的叠加也无法得到满意的效果。
本发明研究了大规模混合模式电路的各个特点和现有技术的特点,提出“虚拟模块”的概念,并在该概念基础上层次化划分整个电路,从而有效的降低问题的规模;同时虚拟模块的引入把规划技术和布局技术有机的结合在一起,并根据虚拟模块的特点改进了矩形单元规划技术和矩形区域内的布局技术,使它们能够发挥各自的特长,从而保证整个布图系统能够在合理时间里得到质量优良的布图结果。
发明内容:
本发明的目的是提出一种用于解决大规模混合模式布图问题的方法,利用“虚拟模块”减小问题的规模并有效的集成规划和布局技术,以期在合理的时间里得到线长等质量指标良好的布图结果。
设有p个单元(cell instance)组成的集合C={ci|i∈[1...p]},wi和hi分别表示单元ci的宽和高,单元的位置用它们的中心点坐标{xi,yi)表示;设有q条线网(net)组成的集合N={nj|j∈[1...q]},对于nj,如果它连接在ci上,可以记为ci∈nj,因此线网可以表示为它所连接的单元的集合nj={ck/ck ∈nj},线网的长度可以通过下面的式子估计:
Len(nj)=|max(xk)-min(xk)|+|max(yk)-min(yk)|,ck∈nj
如果W和H分别表示布图芯片的宽和高,则布图问题等效于求解下面的带约束优化问题:
s.t. ci∈C,0<xi<W,0<yi<H
ci,cj∈C,|xi-xj|>(wi+wi)/2 or |yi-yi|>(hi+hj)/2无论是目标函数还是约束条件都不是凸函数,因此无法直接用传统的数学方法求解,必须结合一定的启发式方法来得到问题的答案。本发明正是创造了一种适合于解决该问题的设计流程和方法,其设计流程包括划分、规划、基于二次布局的总体布局和详细布局四个部分。注:上述符号和公式均为说明问题而用,并没有实际的操作意义,因此不加入全文统一的公式编号中,且后面用到的符号如果跟上面描述中重复,均不被视为具有相同的含义。
本发明的思路是:
(1)布局规划(floorplan)技术和二次布局(Q-place)技术结合解决大规模混合模式布图问题。
(2)“虚拟模块”的引入。
(3)基于虚拟模块电路被划分为层次化结构,构成一棵“虚拟模块树”。
(4)基于模拟退火方法的规划技术被应用于优化同一层次的虚拟模块的位置和形状。
(5)基于二次规划方法的二次布局技术被应用于优化虚拟模块内部标准单元的位置。
(6)基于容量—费用网络流问题的详细布局被应用于最后的全芯片定位。
本发明中涉及的重要概念:
标准单元(Standard Cell):即指集成电路中的门,它们被预先设计好后放入单元库中,成为一个个的单元模板,被称为库单元;在实际的电路设计中库单元被实例化成一个或多个电路实体,放置在芯片上,并用线网连接起来,此时称为单元实例。标准单元的特点是高度相等(宽度不一定相同),因此在基于标准单元的布局里,芯片被划成许多等高的行,这些行高与标准单元的高相等,标准单元必须安置在行中且互相无重叠。
宏模块(Block):指集成电路中预定义的子电路模块,这些子电路有的是完全设计好并经过布局布线的子模块,因此有着固定的面积和形状,且不允许改变,这被称为硬模块,如存储器(Memory)等;有的宏模块没有完全设计完毕,因此只有固定的预留面积,形状则可以在一定范围内变动,这被称为软模块,如数据流模块(Data-Path)等。宏模块的尺寸都比一般的标准单元大,高度一般为多个行高。
虚拟模块(VB:Virtual Block):虚拟模块在物理上并不存在,它是由在划分过程中被分在同一个部分的多个标准单元或宏模块组合而成,是一个逻辑意义上的模块,因此虚拟模块没有固定的形状,且它的形状可变性比软模块更加灵活,可以进行L形/T形等直角多边形的变化,它的面积一般也可以在一定程度上变化,其最小值应等于其内部所有标准单元的面积之和。焊块(PAD):一类特殊的单元,逻辑上表现为电子信号进出芯片上电路的出入口(IO),物理上表现为矩形金属小块。它的宽度和高度都很小,一般跟设计规则中允许的最小线宽有关,布局中,焊块分布在芯片周围(不一定要在行上),且位置固定并由用户给出。根据在电子信号流中的作用,焊块可以分为3类:1)输入焊块(PI:Primary Input):信号由此输入;2)输出焊块(PO:Primary Output):信号由此输出;3)输入输出焊块(PIO:Primary InputOutput):信号既可输入也可输出。
引脚(Pin):又叫管脚,标准单元和宏模块的信号输入输出引出端,根据信号的流向可以分为输入,输出和输入输出三种,它在标准单元或宏模块上的位置由其相对坐标固定下来,它是线网在单元之间连接的实际连接点;对于虚拟模块,没有物理上存在的引脚,但由于虚拟模块与其他单元和模块之间也有连线,为统一起见,对于每一根连线我们加入一个逻辑上的引脚,称为虚拟引脚(Virtual Pin),它们由于没有物理上的存在,因此位置不固定。
虚拟焊块(Virtual PAD):由于虚拟模块内部由标准单元组成,它们对外的连接为虚拟引脚,为保持电路的完整性和同一性,每个虚拟引脚都生成一个虚拟焊块,并加入到该虚拟模块中成为一个逻辑上的电路单元。
单元(Object):标准单元、宏模块、虚拟模块以及焊块和虚拟焊块可统称为单元。线网(Net):连接单元和模块的引脚的金属线。
本发明的特征在于:它在虚拟模块的基础上引入了矩形单元规划方法和矩形区域内的布局方法,它的整个过程依次包括划分、规划、基于二次布局的总体布局和详细布局四个部分。
与普通二次布局作比较,在运行时间相当的情况下,线长效果改善明显,最大改善达到40%以上。
附图说明:
图1:虚拟模块树示意图。
图2:用角模块方法安放模块d时的过程示意图。
图3:详细布局中区域划分示意图。
图4:容量—费用网络示意图。
图5:子区域中子行区示意图。
图6:电路划分后形成的虚拟模块,深色模块为宏模块。
图7:用布局规划技术给虚拟模块定位。
图8:在每个虚拟模块里运行二次布局后的结果。
图9:详细布局以后的布局结果。
图10:本发明设计流程图—总体结构。
图11:本发明设计流程图—划分过程。
图12:本发明设计流程图—规划过程。
图13:本发明设计流程图—总体布局过程。
图14:本发明设计流程图—详细布局过程。
图15:本发明设计流程图—[划分]集群过程。
图16:本发明设计流程图—[划分]生成虚拟模块树的过程。
图17:本发明设计流程图—[规划]模拟退火优化过程。
图18:本发明设计流程图—[总体布局]区域约束迭代过程。
图19:本发明设计流程图—[详细布局]消除重叠、行分配过程。
本发明的具体步骤为:
(1)输入电路,内容包括:
1)标准单元的描述,包括宽、高(其中:高度值应该都相等),
2)宏模块的描述,包括宽、高,
3)焊块的描述,包括输入/输出属性,定好的位置坐标,
4)引脚的描述,包括属于哪个单元,在单元上的相对位置坐标,
5)线网的描述,包括线网的端点数,每个端点连在哪个单元的哪个引脚上;并需要输入下列参数的值:
Nc:标准单元的数量,
Nb:宏模块数量,
Npi:输入焊块的数量,
Npo:输出焊块的数量,
Npio:输入输出焊块的数量;
(2)划分:划分芯片上整个电路,生成虚拟模块树;
设定下列参数值(各参数的意义和用法将在后面详述):
Pc:每个叶子虚拟模块中拥有的标准单元数,
Pb:后续规划过程中能有效处理的最大模块数,
Pp:用hMETIS软件包对所构造的超图进行虚拟模块划分时,要生成的模块个数;
(2.1)基于IMFFC算法对标准单元进行集群(忽略宏模块);
(2.1.1)生成Npo个单元团(Cluster)的集合Scl={Cl1,Cl2,...,ClNpo},每个单元团中只加入一个输出焊块,即Cli={POi},i=1,2,...,Npo;
(2.1.2)对Cli中每个元素Obj,根据连接关系找寻它的前继单元,即输出引脚通过线网连接到它的输入引脚的单元,如果这些单元的所有输出引脚连接的单元都在Cli中,则把该单元加入Cli中;否则,新建一个单元团Clnew,把该单元加入Clnew中,并把Clnew加入Scl中;
(2.1.3)对Scl中的每个元素Cli重复进行操作(2.1.2)直到所有标准单元都被访问到;
(2.1.4)访问Sc1中的每个元素Cli,去除其中的非标准单元成员;
(2.1.5)修改线网,每个单元团内部的单元之间的线网被忽略,单元团之间的外部线网被保留下来;
(2.1.6)计算每个单元团的面积,单元团的面积=所有内部单元面积之和;
(2.2)基于hMETIS多层次划分软件包对单元团集合Scl进行划分,并生成虚拟模块树的叶子节点,该叶子节点对应于一个虚拟模块,称为叶子虚拟模块,因此我们对叶子节点和叶子虚拟模块不加区别,下同;
(2.2.1)构造一个超图,顶点对应于Scl中的元素Cli,边对应于单元团之间的线网;
(2.2.2)对超图的顶点加权,权重等于单元团面积,并进行归一化;
(2.2.3)应用hMETIS软件包对超图进行划分,划分数为
其中:Pc为控制参数,表示每个叶子虚拟模块中拥有的标准单元数,该参数影响二次布局的运行时间和最后效果;
(2.2.4)根据划分结果生成Npart个虚拟模块,每个模块含有由划分结果确定的单元团,其面积设定为所有内部单元团面积之和;
(2.2.5)销毁所有单元团,放出里面的所有标准单元,此时标准单元仍然在虚拟模块里;
(2.2.6)修改线网,虚拟模块里的线网被忽略,根据虚拟模块与其他单元的外部连接情况建立虚拟引脚,并把这些外部线网连接在虚拟引脚上,并且,考虑到电路完整性,每个虚拟引脚都生成一个虚拟焊块加入该虚拟模块里;
注:hMETIS为共享软件,是基于多层次划分算法的划分工具,其下载网址以及使用方法见:http://www-users.cs.umn.edu/~karypis/metis/hmetis/,有关hMETIS内部算法的详细描述请参考George Karypis发表于会议DAC 97的文献“Multilevel Hypergraph P artitioning:Application inVLSI Domain”以及他在会议DAC 99上发表的文献“Multilevel k-way Hypergraph Partitioning”。
(2.3)生成虚拟模块树;
(2.3.1)整个电路成为树的根节点,此时节点里只有宏模块,焊块和叶子虚拟模块;
(2.3.2)每个焊块单独成为一个固定的虚拟模块,并加入该节点中成为子节点:
(2.3.3)对应于树中该节点的是模块级电路,如果其模块数满足条件:
Nlocal>Pb (2)
其中:Pb是控制参数,表示规划过程中能有效处理的最大模块数,
Nlocal为该节点中所有的电路模块的数量(包括宏模块和叶子虚拟模块,不包括焊块以及由焊块生成的虚拟模块),
则构造超图并用hMETIS软件包进行划分,然后根据划分结果生成虚拟模块并相应的建立虚拟模块树中该节点的子节点,划分过程基本同于(2.2.1)-(2.2.6),只是没有单元和单元团,划分数为:
其中:Pp是另一个控制参数,表示模块级划分数;
(2.3.4)递归的对所有的子节点重复步骤(2.3.2)-(2.3.3)直到无法建立新的子节点,即所有子节点不满足式(2),值得注意的是:中间结点(既非根节点也非叶子节点)本身就是一个虚拟模块,内部的电路只可能包括宏模块或叶子虚拟模块以及修改线网时生成的虚拟引脚,并不存在物理上的焊块,为统一起见,我们把虚拟引脚转化为虚拟焊块,步骤(2.3.2)操作的对象即为该节点中的虚拟焊块,整个电路最后的划分结果构成如附图1的一颗树:
步骤(2)中形成的虚拟模块树的节点可以分为两种类型:
1)叶子节点:该虚拟模块由标准单元和虚拟焊块组成,在这种虚拟模块里,我们最后要应用基于二次布局的布局技术得到里面所有单元的最后定位。
2)非叶子节点:对应的虚拟模块由焊块(或虚拟焊块)、宏模块或下一级虚拟模块组成,在这种模块里,我们要应用固定面积的规划技术得到所有其子节点的位置和形状。
整棵树是递归生成的,因此我们对所有节点的访问是压栈式深度优先,当对某一个节点中的单元进行定位时,并不考虑单元的实际位置,只认为它们单独分布在一个芯片上,芯片的大小形状和偏移位置由该节点对应的虚拟模块确定。最后,当每个节点从栈中弹出时,其内部单元的位置坐标再用虚拟模块本身的偏移位置来修正。
(3)规划:对非叶子节点中的单元进行定位,并确定它们的最佳形状;
模块位置的表示方法:角模块(CBt:Corner Block List)
用角模块表示的模块位置关系可以保证模块之间无重叠,它由3个列表组成:
1)列表S:由模块名字组成,记录模块安放顺序。
2)列表L:由“0”、“l”串组成,记录模块安放方向,规定模块安放时只有从现有布局的上方或右方安放这2种方向。当模块从现有布局的上方安放时,其对应的L中的元素为“0”,否则为“1”。因为第1个模块无所谓安放的方向,所以L从第2个模块开始记录。
3)列表T:由子串组成,每个模块对应一个子串,该子串由一连串“1”组成,以1个“0”结尾,“1”和“0”的总个数等于该模块安放时在安放方向上邻接的其他模块的数量。因为第1个模块在任何安放方向上不与其他模块相邻接,所以T也从第2个模块开始记录。
对应附图2(b)表示的模块位置,我们可以得到角模块表示为:
S={f,c,e,g,b,a,d}
L={X,0,0,1,1,0,0}
T={X,{0},{0},{1,0},{1,0},{0},{1,0}}
其中,当我们安放d时,由于它从上方放入,因此L(d)=0;由于它邻接“g”和“a”2个模块,所以T(d)={1,0}(X表示无此元素)。更详细的有关角模块的论述请参考Xianlong Hong发表于会议ICCAD’2000的文献“Corner Block List:An Effective and Efficient TopologicalRepresentation of Non-slicing Floorplan”以及Yuchun Ma发表于会议ASP-DAC2002的文献“Stairway Compaction using Corner Block List and Its Applications with rectilinear blocks”。
首先,需要设定下列参数(具体含义和用法将在后面详述):
wni:模块之间线网i的权重,由用户设定,
wc1、wc2、wc3:计算代价时用的权重,由用户定义,
Trb:用模拟退火方法进行位置优化时用的退火起始温度,属于系统参数,
Tre:用模拟退火方法进行位置优化时用的退火结束温度,属于系统参数,
LC1:用模拟退火方法进行位置优化时用的循环执行次数,
Ft:表示退火过程中的降温系数,
Tsb:用模拟退火方法进行形状优化时用的退火起始温度,
Tse:用模拟退火方法进行形状优化时用的退火结束温度,
LC2:用模拟退火方法进行形状优化时用的循环执行次数;
(3.1)设置初始解;
(3.1.1)所有虚拟模块的虚拟引脚设定在虚拟模块中心,并随机生成列表S、L、T得到一个安放方案;
(3.1.2)计算线长
其中:NETb为模块之间线网的集合,
i为该集合中的一根线网,
wi为线网i的权重,为用户指定参数,
(xij,yij)为线网i的一个端点坐标,即它连接的一个模块引脚的绝对坐标;
(3.1.3)计算代价:
Cost=wc1·Wf+wc2·max(WDf-ChipX,0)+wc3·max(HEf-ChipY,0) (5)
其中:wc1、wc2、wc3分别为用户定义参数,表示权重,
WDf、HEf分别为布局结果的宽和高,
ChipX、ChipY分别为芯片的宽和高,
式(5)的后两项为惩罚项,表示当布局结果的宽和高大于芯片的宽和高时将惩罚代价值(引起代价值的增大);
(3.1.4)保存最小代价Costmin和当前代价Costc为Cosmin=Costc=Cost;
(3.2)基于模拟退火方法进行位置优化;
(3.2.1)所有虚拟模块的虚拟引脚设定在虚拟模块中心;
(3.2.2)初始化TF=Ttb;
其中:TF为过程变量,表示退火过程中的温度,
Ttb为系统参数,表示退火起始温度;
(3.2.3)随机选择下列一种改变安放方案的方法来得到新解:
1)随机交换某两个模块,即随机交换列表S中的2个元素,
2)随机改变某个模块的相对安放位置,即随机改变L中的1个元素的值,
3)随机改变某个模块相对于其他模块的安放关系,即随机改变T中的1个元素的值,
4)随机改变某个模块的转向;
(3.2.4)根据新解和式(4)计算线长;
(3.2.5)根据式(5)计算代价;
(3.2.6)如果满足:Cost<Costmin,记录该新解,并更新Costmin=Cost;
(3.2.7)如果满足:
Cost<Costc (6)
则记录该新解,并更新Costc=Cost,其中,R为一个大于0且小于1的随机数;
(3.2.8)循环执行(3.2.3)-(3.2.8)到一定的循环次数LC1;
其中:LC1为控制参数,表示同一温度的循环次数;
(3.2.9)如果满足TF<Tte,则循环退出,给出对应于Costmin最优解,否则,回到原解,令:
TF=TF*Fi (7)
并回到(3.2.3),循环进行步骤(3.2.3)-(3.2.9);
其中:Tte为系统参数,表示退火结束温度,
Ft为退火过程中的降温系数;
(3.3)基于模拟退火方法进行形状优化;
(3.3.1)继承(3.2)中的最优解得到初始解,同(3.1)一样计算Costmin和Costc;
(3.3.2)初始化TF=Tsb;
其中:Tsb为系统参数,表示形状优化过程中的退火起始温度;
(3.3.3)随机选择一个软模块或虚拟模块,随机改变其长宽比;
(3.3.4)对虚拟模块的虚拟引脚进行位置分配;
(3.3.4.1)集合NB表示模块间线网的集合,nbi表示其中一条线网(nbi ∈NB),pj为线网nbi的一个端点(即引脚,可以表示为:pj∈nbi),Mj为引脚pj所在的模块;
(3.3.4.2)对于任意一个pj,如果Mj为虚拟模块(此时pj必为虚拟引脚),则把pj预安放在Mj的中心;否则,pj保持原固定位置不变。此步骤循环执行至线网nbi的所有引脚都被处理过;
(3.3.4.3)画一个“绑定矩形”,使其面积最小且刚好能够框住线网nbi的所有引脚,并得到这个矩形的中心:(cx,cy);
(3.3.4.4)对于任意一个pj,如果Mj为虚拟模块(此时pj必为虚拟引脚),画直线连接pj和(cx,cy),该直线与Mj的边界相交于一点(px,py),此即为虚拟引脚pj分配的位置,此后,当虚拟引脚转换为虚拟焊块时,(px,py)也是该虚拟焊块在模块内的相对位置;如果pj不是虚拟引脚而是物理上的引脚,则它的位置保持不变;
(3.3.4.5)循环执行(3.3.4.1)-(3.3.4.5)直到集合NB的所有线网都被处理过;
(3.3.5)根据新解和式(4)计算线长;
(3.3.6)根据式(5)计算代价;
(3.3.7)如果满足:Cost<Costmin,记录该新解,并更新Costmin=Cost;
(3.3.8)如果满足式(6),则记录该新解,并更新Costc=Cost,否则回到原解;
(3.3.9)循环执行(3.3.3)-(3.3.9)到一定的循环次数LC2;
其中:LC2为控制参数,表示此过程的同一温度循环次数;
(3.3.10)如果满足TF<Tse,则循环退出,给出对应于Costmin最优解,否则,根据式(7)改变温度,并回到(3.3.3),循环进行步骤(3.3.3)-(3.3.10);
其中:Tse为系统参数,表示此过程退火结束温度;
步骤(3)要对树中所有非叶子节点进行操作,操作顺序遵循树的递归顺序,采用深度优先原则,上一级的虚拟模块的位置和形状直接为下一级单元提供布局区域,成为一个虚拟的“芯片”。经过步骤(3),所有的宏模块和虚拟模块都得到定位,我们要进行叶子节点的布局来对标准单元进行总体布局;
(4)总体布局:对于叶子虚拟模块里的标准单元,使用二次布局技术进行定位,并保持线长最短的目标;
设定参数(具体意义和用法将在后面详述):
Pr:控制参数,区域树叶子节点中最多允许容纳的单元个数;
(4.1)进行数学建模;
(4.1.1)总体布局的对象是在叶子虚拟模块里的所有标准单元和焊块,其中焊块为虚拟模块中虚拟引脚转化而来,其位置固定,坐标由步骤(3.3.4)得到;
(4.1.2)在二次布局技术里,标准单元和焊块被认为是一个个的点,其坐标等同于单元中心坐标,因此总线长可以估计为:
其中:N为线网的集合,
n为集合中的线网,
i、j分别为线网的某两个端点,
(xi,yi)、(xj,yi)分别为端点的坐标;
改写成矩阵形式为:
其中:xT、yT分别为所有点坐标的x和y值组成的向量。
C为单元关系矩阵,表示单元之间的连接关系;d表示单元与固定焊块的连接关系。具体生成C和d的详细步骤请参考相关数学论著以及H.Eisenmann发表于会议DAC 98的文献″Generic Global Placement and Floorplanning″;
(4.2)生成区域约束,反复迭代优化;
(4.2.1)区域约束是逐步形成的,它通过递归的划分布局面积和单元集合而形成一棵区域约束树。初始阶段,整个布局面积和全体单元构成树的根节点;
(4.2.2)对应于区域约束树的每个叶子节点,都存在一个区域和一个单元的子集合,我们把这个单元子集合称为在这个区域里的单元,对于每个区域里的单元增加如下分布约束:
其中:r为对应一个叶子节点的区域,
Tr为该区域里的单元集合,
i为该区域里的一个单元,
(xi,yi)为单元i的坐标,
(ur,vr)为区域r的中心点坐标;
(4.2.3)问题转化为求解带约束的二次规划问题:
Min Φ (11)
S.T.式(10)
注:根据区域约束树的叶子节点的数量,式(10)可能是多个约束式,并且将随着叶子节点的增加而增加;
(4.2.4)用拉格朗日乘子法解式(11);
(4.2.4.1)把约束代入目标,得目标函数Fn:
其中:λrx、λry分别为对区域r的两个约束式加的乘子;
(4.2.4.2)对式(12)求偏导并令导数等于0得等式为;
xFn=0 yFn=0 λxFn=0 λyFn=0 (13)
(4.2.4.3)式(13)为一组线性方程,解这个线性方程可以得到单元的坐标x和y;
(4.2.5)扫描区域树的所有叶子节点,如果其中的标准单元数大于Pr,则对该节点进行划分;
其中:Pr为控制参数,控制优化的最终结束条件;
(4.2.5.1)如果区域的长大于宽,则生成垂直划分线把区域分为左右两部分,否则生成水平线分成上下两部分;
(4.2.5.2)区域单元根据区域划分线方向分别按x值(垂直划分线)或y值(水平线)排列,根据数量均分原则分为两个部分,分别放入区域的两个子区域中;
(4.2.5.3)按照单元面积总和调整子区域大小,使得满足:
其中:r1、r2分别为两个子区域,
Ar1、Ar2分别为两个子区域的面积,
Ac为单元c的面积;
(4.2.5.4)生成两个子节点分别表示该子区域和其中的单元子集合,把子节点挂在原叶子节点下成为新的叶子节点;
(4.2.6)回到(4.2.2)循环执行(4.2.2)-(4.2.6),直到所有叶子节点中的标准单元数都不大于Pr;
步骤(4)要对虚拟模块树中的所有叶子虚拟模块进行操作,由于相对独立性,叶子虚拟模块的操作顺序对最后结果无影响,经过步骤(4),所有标准单元的位置也大体上确定下来了,最后的定位和优化将在详细布局里进行;
(5)详细布局:对全芯片单元进行最后的定位;
设定参数(具体含义和用法将在后面详述):
Dm:划分芯片时的行数,
Dn:划分芯片时的列数;
(5.1)将芯片划分成Dm*Da个面积相等的子区域,如图3(a)、(b)分别为划分前后的芯片模型,有如下定义:
行区:芯片上的每一行被与该行相交的宏模块分割成若干部分,每一部分定义为一个行区(若某行不与任何宏模块相交,则整个一行定义为一个行区),
子行区:划分后,行区被子区域的竖直边界分割成若干段,每一段称为一个子行区;
下面定义中的x表示一个矩形区域,可代表子区域,行区,或子行区;
CP(x):为矩形区域x的容量,当x代表子行区或行区时,CP(x)等于x的面积,当x代表一个子区域时,CP(x)等于子区域的面积减去宏模块占用的子区域面积之差;
CSet(x):为矩形区域x中所有标准单元构成的集合CSet(x)={c1,c2,……,cm(x)},其中m(x)为矩形区域x内的标准单元个数;
定义
其中Area(ci)为标准单元ci的面积;
D(x):为矩形区域x的密度,D(x)=Area(CSet(x))/CP(x);
θ(x):为矩形区域x的容差,
其中MIN_D和MAX_D为给定的参数,且MIN_D<MAX_D,分别表示矩形区域x期望达到的最小和最大密度;
源点:θ(x)<0的矩形区域称为源点,表示x的密度大于MAX_D,需将其中的部分标准单元移出,应移出标准单元的总面积为-θ(x);
汇点:θ(x)>0的矩形区域称为汇点,表示x的密度小于MIN_D,可继续容纳总面积为θ(x)的标准单元;
(5.2)平衡子区域,通过在子区域间移动单元,将单元分布拥挤的子区域中的部分单元移动到单元分布稀疏的子区域中;
(5.2.1)建立如图4所示的容量费用网络,有如下关于容量费用网络的定义:
(i,j):表示从顶点i指向顶点j的弧,
A:表示容量费用网络的弧的集合,
b(i,j):为弧(i,j)的传输代价,在不同的网络里具有不同的实际含义(见后),
c(i,j):为弧(i,j)的容量,即允许沿弧(i,j)传输的流量的最大值,在不同的网络里具有不同的实际含义(见后);
f(i,j):为从顶点i沿弧(i,j)流到顶点j的流量,在不同的网络里具有不同的实际含义(见后);
(5.2.1.1)图3中的每一个子区域映射为图4中的一个顶点,某子区域r对应的容量费用网络中的顶点也用r标记;
(5.2.1.2)定义某子区域r与其上、下、左、右任一方向的相邻子区域r′互称为邻接子区域,每一对邻接子区域r和r′在容量费用网络中都有一对方向相反的弧相连,即(r,r′)和(r′,r),规定:
b(r,r′)=b(r′,r),等于子区域r和r′的中心间的距离;
c(r,r′)=c(r′,r)=∞,表示允许在子区域r和r′间移动的单元总面积的最大值;
f(r,r′),f(r′,r)分别表示从r到r′和从r′到r实际要移动的单元的总面积,初始为0;
(5.2.1.3)在图中增加一个虚拟的总源点s,和虚拟的总汇点t,对于所有的源点rs,构造弧(s,rs),b(s,rs)=0,c(s,rs)=-θ(rs),f(s,rs)初始为0;对于所有的汇点rt,构造弧(rt,t),b(rt,t)=0,c(rt,t)=θ(rt),f(rt,t)初始为0;
将由(5.2.1.1)-(5.2.1.3)建立起来的容量费用网络中所有弧的流值的取值策略定义为网络的流f,如上所述,初始时所有弧的流值都取为0,则此时的流称为0流,定义容量费用网络的总流量为
所谓最小代价最大流问题就时要求得一个流f,满足式(16)-(18):
maxT(f) (16)
s.t.
对任意顶点r有
(5.2.2)求解最小代价最大流问题,基本思想是从初始的0流出发,不断寻找最小代价增广链(定义见下),沿该增广链调整当前流f,得到新的流f′,循环进行,直至得到最小代价最大流;
为说明最小代价增广链,给出赋权有向图w(f)的定义,定义w(f)的顶点为原容量费用网络中的顶点,w(f)的弧为原容量费用网络中的弧,定义w(f)中弧的权值w(i,j)为
于是在容量费用网络中寻找关于当前流f的最小代价增广链就等价于在赋权有向图w(f)中,寻找从总源点s到总汇点t的一条权值最小的通路(通路的权值等于组成通路的所有弧的权值之和);
设在第k-1步得到的流为f(k-1),则构造赋权有向图w(f(k-1)),在w(f(k-1))中,寻求从s到t的权值最小的通路,若该通路的权值为∞,则f(k-1)为所求的最小代价最大流;否则,在原容量费用网络中得到相应的最小代价增广链u,对f(k-1)进行调整,调整量为:
令
其中u+为增广链u上与增广链方向(从s指向t)相同的弧的集合,u-为增广链u上与增广链方向相反的弧的集合;
循环进行,直至求得最小代价最大流f;
(5.2.3)依拓扑顺序依次处理容量费用网络中的所有顶点,具体做法为:
(5.2.3.1)去掉容量费用网络中流值为0的弧;
(5.2.3.2)找出网络图中满足
的顶点r,用(5.2.4)中的方法处理对应该顶点的子区域;
(5.2.3.3)将(5.2.3.2)中找到的顶点及从该顶点发出的所有弧从容量费用网络中去掉;
循环执行(5.2.3.2)(5.2.3.3)直到所有的子区域都被处理完,这种处理子区域的顺序即为拓扑顺序;
(5.2.4)对于待处理的子区域r,定义其邻接子区域的集合N(r)
N(r)={r′|f(r,r′)>0}
(5.2.4.1)对ci∈CSet(r),r′∈N(r),计算将单元Ci从子区域r移到邻接子区域r′的代价cost(ci,r,r′);
定义单元Ci的原始位置为pi 0,设单元Ci在子区域r′中可选择的位置共有ni个,定义位置集合P,
WL(ci,pi k)表示单元Ci位于位置pi k时,与Ci相连的所有线网的线长之和,k=0,1,...,ni;
(5.2.4.2)选出最小的代价值cost(ci,r,r′),并将单元C1从子区域r移向邻接子区域r′,令
f(r,r′)=f(r,r′)-Area(ci) (21)
如果f(r,r′)≤0将r′从N(r)中删除
(5.2.4.3)对ci∈CSet(r),r′∈N(r)重新计算cost(ci,r,r′);
重复(5.2.4.2)(5.2.4.3),直到N(r)=φ;
(5.3)平衡每个子区域内部的子行区;
(5.3.1)建立如图4所示的容量费用网络;
(5.3.1.1)每一个子行区映射为网络中的一个顶点;
(5.3.1.2)定义两个子行区为邻接子行区当且仅当这两个子行区为同一行上前后相继的子行区,或者为处于相邻行上且在水平方向上有重叠的子行区,如图5所示的子区域中,子行区b共有三个邻接子行区分别为a,c和d,其中c和b为同一行上前后相继的两个子行区,a(或d)为与b处在相邻行上,且在水平方向上有重叠的子行区,在容量费用网络中,将相邻子行区用一对方向相反的弧相连,弧的代价定义为两个子行区中心间的距离,弧的容量定义为无穷大;
(5.3.1.3)依据式(15)确定源点和汇点,此时式(15)中的MAX_D取为一个固定的值1,在图中增加一个虚拟的总源点,和虚拟的总汇点,构造从总源点指向每一个源点的弧,弧的代价为0,容量为源点容差的相反数;构造从每一个汇点指向总汇点的弧,弧的代价为0,容量为汇点的容差;
(5.3.2)由初始的0流出发,求解最小代价最大流问题,求出在每一对相邻子行区间移动单元的面积总和(具体过程同(5.2.2));
(5.3.3)按照拓扑顺序用类似(5.2.3)和(5.2.4)中的方法依次处理每一个子行区;
(5.4)将被子区域竖直边界分割开的同一行上相邻的子行区合并成行区,如果此时仍有行区存在容量超限(即行区内的单元面积总和大于行区的总面积)的情况,则对所有的容量超限行区执行(5.4.1)(5.4.2)的操作;
(5.4.1)对容量超限行区z,随机的选择z中的一个单元Ci,将其移动到新位置;
定义行区的集合ZSet={z′|CP(z′)-Area(CSet(z′))≥Area(ci)}
仿效(5.2.4.1)的定义,设单元Ci在集合Zset的所有行区中可选择的位置共有ni个,定义位置集合P,
则Ci的新位置pi l(l=1,2,...,ni)满足下式:
(5.4.2)重复(5.4.1)直至Area(CSet(z))≤CP(z);
(5.5)依次消除每个行区内的单元重叠:设对于行ri,(O,XB)为单元在x方向可放置的位置范围;先将ri中的单元按x坐标从小到大排序,然后按此顺序依次放置每个单元,设x’ik为单元cik经过消除重叠以后单元左边界的x坐标,而wik为它的宽度,对于单元cik,寻找它可放位置的左边界lbik和右边界rbik如下:
其中Rl为介于
和1之间的一个定值;最左边单元的左边界为0,即lbi0=0,最
右边单元的右边界为XB,即rbiNi=XB,单元cik的新的位置由下式确定:
(5.6)对单元位置进行调整,进一步优化线长;
(5.6.1)对某一个单元Ci,寻找单元Ci的最佳位置pi l,可仿效(5.4.1)的做法,唯一的区别是,此时定义ZSet为所有行区的集合;
(5.6.2)将Ci移到位置pi l,并对其它单元的位置进行相应调整,以消除单元间的重叠;
(5.6.3)若经过(5.6.2),总线长未减小,则将芯片布局恢复到(5.6.2)以前的状态;每一次迭带改善时,对所有的单元依次执行(5.6.1)-(5.6.3),如此反复迭代,直至线长不再有明显的改善;
(6)输出设计结果。
具体实施方法:
我们采用美国ARCADIA集成电路设计公司设计的一个实际电路A.Stage.Block2来作为本发明实施的演示实例。
电路实例说明:
电路A_Stage.Block2用LEF/DEF文件描述,各项特征参数如表1:
标准单元数 | 宏模块数 | 焊块数 | 线网数 | ||
输入 | 输出 | 输入输出 | |||
7094 | 2 | 436 | 355 | 0 | 10049 |
表1
注:LEF/DEF格式为美国工业界常用电路文件格式,具体细节请参考相关文档。运行参数说明:
运行过程中各控制参数和用户参数的值如表2所示:
Pc | 550 | Pb | 20 |
Pp | 15 | Wj | 1 |
wc1 | 0.002 | wc2 | 1000 |
wc3 | 1000 | Ttb | 8000 |
LC1 | 500 | Tte | 300 |
Ft | 0.95 | Tsb | 5000 |
LC2 | 300 | Tse | 200 |
Pr | 2 | Dm | 7 |
Dn | 8 | MAX_D | 0.9 |
MIN_D | 0.8 |
表2
实施过程:
(1)输入
使用内嵌的LEF/DEF编译器解析电路文件,得到电路参数如表3所示:
Nc | 7094 |
Nb | 2 |
Npi | 436 |
Npo | 355 |
Npio | 0 |
ChipX | 1000350 |
ChipY | 996300 |
表3
(2)划分
(2.1)集群
(2.1.1)生成355个单元团,每个单元团中只有一个PO;
(2.1.2)-(2.1.2)标准单元被陆续加入单元团中,单元团的数量也在相应增加,该步骤结束后,单元团数为3203;
(2.1.4)-(2.1.6)单元团中的标准单元和线网都被处理,各种参数和变量都相应被设置,这些都通过改变数据结构来实现;
(2.3)生成树;
(2.3.1)整个电路成为树的根节点;
(2.3.2)焊块成为791个固定的虚拟模块;
(2.3.3)因为Nlocal=13+2=15,Pb=20,不满足式(2),所以不需要进行进一步划分;
(2.3.4)递归过程自动结束,构成的树只有2级,第1级是根节点,第2级包括13个叶子虚拟模块,2个宏模块和791个焊块生成的固定虚拟模块;
(3)规划;
(3.1)随机设置一个初始解,此例中:
S={block1,block2,block3,block4,...,block15)
L={1,0,1,0,...,1,0}
T={0,1,0,1,...,0,1}
(3.1.1)所有虚拟模块的虚拟引脚设定在虚拟模块中心;
(3.1.2)根据式(4)计算线长得:Wf=2424797893,
并根据布局结果得:WDf=3637881,HEf=388800
(3.1.3)根据式(5)计算代价得:Cost=2638015959.6
(3.1.4)保存Costmin=Costc=Cost;
(3.2)位置优化:
(3.2.1)所有虚拟模块的虚拟引脚设定在虚拟模块中心;
(3.2.2)初始化TF=8000;
(3.2.3)根据随机值选择方案1)来生成新解:
S={block4,block2,block3,block1,...,block15)
L={1,0,1,0,...,1,0}
T={0,1,0,1,...,0,1}
(3.2.4)根据新解和式(4)计算线长得:Wf=2680081624
并根据布局结果得:WDf=3637881,HEf=388800
(3.2.5)根据式(5)得代价:Cost=2638067016.3
(3.2.6)不满足Cost<Costmin,因此不记录该解;
(3.2.7)在式(6)中,左边=0.0017,右边=0.99(取随机数),不满足,则回到原解;
(3.2.8)循环执行(3.2.3)-(3.2.8)到500次;
(3.2.9)因为不满足TF<300,根据式(7),TF=7600,转向(3.2.3),循环进行步骤(3.2.3)-(3.2.9),直到满足TF<300,最后输出对应于Costmin的最优解;
(3.3)形状优化;
(3.3.1)继承(3.2)中的最优解得到初始解,同(3.1)一样计算得到
Costmin=Costc=361482431
(3.3.2)初始化TF=5000;
(3.3.3)随机选择一个软模块或虚拟模块,随机改变其长宽比。
(3.3.4)-(3.3.6)得代价:Cost=441685962.3
(3.3.7)不满足Cost<Costmin,因此不记录该解;
(3.3.8)不满足式(6),回到原解;
(3.3.9)循环执行(3.3.3)-(3.3.9)到300次;
(3.3.10)因为不满足TF<200,根据式(7),TF=4750,转向(3.3.3),循环进行步骤(3.3.3)-(3.3.10),直到满足TF<200,最后输出对应于Costmin的最优解;
(4)总体布局;
(4.1)建立如式(9)的矩阵;
(4.2)生成区域约束,反复迭代优化;
(4.2.1)区域约束是逐步形成的,它通过递归的划分布局面积和单元集合而形成一棵区域约束树,初始阶段,整个布局面积和全体单元构成树的根节点;
(4.2.2)目前只有一个叶子节点即根节点,全部单元都属于这区域里,加入如式(10)的分布约束;
(4.2.3)问题转化为求解带约束的二次规划问题;
(4.2.4)用拉格朗日乘子法解式(11);
(4.2.4.1)-(4.2.4.3)问题转化为线性方程组后,我们用GMRES方法求解线性方程,得到坐标x和y;
(4.2.5)扫描区域树的所有叶子节点,因为其中的标准单元数大于2则对该节点进行划分;
(4.2.5.1)因为区域的长大于宽,则生成垂直划分线把区域分为左右两部分;
(4.2.5.2)区域单元按x值排列,根据数量均分原则分为两个部分,分别放入区域的两个子区域中;
(4.2.5.3)按照单元面积总和调整子区域大小,使得满足式(14);
(4.2.5.4)生成两个子节点分别表示该子区域和其中的单元子集合,把子节点挂在原叶子节点下成为新的叶子节点;
(4.2.6)回到(4.2.2)循环执行(4.2.2)-(4.2.6),直到所有叶子节点中的标准单元数都不大于2;
本发明取得的效果:
最后的实验结果表明:本方法能够在合理时间里有效的处理混合电路和大规模电路,并能够得到比一般的布局方法更好的布图质量。我们在SUN工作站V880上用C语言编程实现了该方法,测试了多个测试用例,并与普通二次布局结果作了比较,在运行时间相当的情况下,线长改善效果明显,最大改善达到40%以上。
表4为测试用例基本特征;表5为测试结果以及与普通二次布局结果的比较。
电路名称 | 单元数量 | 宏模块数量 | 线网数 | 模块面积/芯片总面积 |
Block2 | 7094 | 2 | 10049 | 37% |
Block6 | 5996 | 6 | 10049 | 47% |
Block8 | 5662 | 8 | 10049 | 50% |
Block10 | 5151 | 10 | 10049 | 57% |
Ibm01 | 12260 | 246 | 14111 | 40.4% |
表4
电路名称 | 普通布局时间(s) | 本发明布局时间(s) | 普通布局后线长(um) | 应用本发明后布局线长 | 线长改善 |
Block2 | 358.1 | 371 | 2396547 | 1662585 | 30.6% |
block6 | 382 | 362 | 2241684 | 1856343 | 17.2% |
block8 | 405.7 | 355 | 2814446 | 1522152 | 45.9% |
Block10 | 388.6 | 312 | 2484459 | 1501478 | 39.6% |
Ibm01 | NA | 612 | NA | 5852853 | NA |
表5
Claims (1)
1.基于虚拟模块的大规模混合模式布图方法,含有处理宏模块的规划方法以及处理标准单元的布局方法,其特征在于:它在虚拟模块的基础上引入了矩形单元规划方法和矩形区域内的布局方法,它的整个过程依次包括划分、规划、基于二次布局的总体布局和详细布局四个部分;具体而言,它借助于SUN工作站V880,用C语言编程实现,依次含有以下步骤:
(1)输入电路,包括:
(1.1)标准单元的描述,包括宽和高,其中,各标准单元的高度相等;
(1.2)宏模块的描述,包括宽和高;
(1.3)焊块的描述,包括输入/输出属性,定好的位置坐标;
(1.4)引脚的描述,包括所属单元的序号,在单元上的相对位置坐标;
(1.5)线网的描述,包括线网的端点数,每个端点连在哪个单元的哪个引脚上;
同时输入下列参数的值:
Nc:标准单元的数量,
Nb:宏模块数量,
Npi:输入焊块的数量,
Npo:输出焊块的数量,
Npio:输入输出焊块的数量;
(2)划分,对全部电路进行划分,生成虚拟模块树,所述虚拟模块是指在划分过程中被分在同一个部分的多个标准单元或宏模块的组合,属于一种逻辑模块,其形状可按不同的长宽比进行变化,其面积的最小值等于内部所有标准单元以及宏模块的面积之和;
(2.1)设定
Pc:每个叶子虚拟模块中拥有的标准单元数,
Pb:后续规划过程中能有效处理的最大模块数,
Pp:用hMETIS软件包对所构造的超图进行虚拟模块划分时,要生成的模块个数;
(2.2)基于公知的IMFFC算法把整个电路划分成标准单元团的集合Sc1,在忽略宏模块的情况下进行;
(2.3)基于公知的hMETIS多层次划分软件包对标准单元团集合Sc1进行划分,生成虚拟模块树的叶子节点,并用控制参数Pc来控制每个叶子虚拟模块中拥有的标准单元数;
(2.4)生成代表整个电路层次化结构的虚拟模块树,整个电路成为树的根节点,其中只有宏模块、焊块和叶子虚拟模块,用控制参数Pb控制划分过程是否要递归进行下去;构造一个超图,其顶点与包括宏模块在内的所有模块相对应,并用hMETIS软件包对所述超图进行划分,生成含有宏模块或标准单元的虚拟模块,相应建立虚拟模块树中该节点的与虚拟模块相对应的子节点,在划分时,用控制参数Pp控制模块级划分数,最终形成的虚拟模块树含有以下两类节点:
叶子节点:对应该类节点的虚拟模块由标准单元和虚拟焊块组成,
非叶子节点:对应的虚拟模块由虚拟焊块、宏模块或下一级虚拟模块组成;
(3)规划,对非叶子节点中的模块进行定位,并确定它们的最佳形状:
(3.1)设定:
wni:模块之间线网i的权重,由用户设定,
wc1、wc2、wc3:计算代价时用的权重,由用户定义,
Ttb:用模拟退火方法进行位置优化时用的退火起始温度,属于系统参数,
Tte:用模拟退火方法进行位置优化时用的退火结束温度,属于系统参数,
LC1:用模拟退火方法进行位置优化时用的循环执行次数,
Ft:表示退火过程中的降温系数,
Tsb:用模拟退火方法进行形状优化时用的退火起始温度,
Tse:用模拟退火方法进行形状优化时用的退火结束温度,
LC2:用模拟退火方法进行形状优化时用的循环执行次数;
(3.2)用公知的角模块方法表示模块的位置;
(3.3)随机生成一个角模块表示法中的列表S、L和T,其中:S表示模块安放顺序,L表示模块安放方向,T表示模块安放时在安放方向上相邻接的其他模块的数量;在假设所有虚拟模块的虚拟引脚都设在虚拟模块中心的条件下,根据用户给定的上述参数,计算模块间线网的总线长及其代价;
(3.4)用公知的模拟退火方法进行位置优化;
(3.5)在(3.4)所得的最优解的基础上,再用公知的模拟退火方法进行形状优化;
同理,按步骤(3)对虚拟模块树中的所有非叶子节点进行操作,使所有的宏模块和虚拟模块都得到定位;
(4)总体布局,对叶子虚拟模块中的标准单元使用公知的二次布局方法进行定位,并保持线长最短的目标;依次扫描区域树中的所有叶子节点,并用控制参数Pr来限定各叶子节点中的标准单元数,若其标准单元数大于Pr值,则对节点按垂直或水平方向进行划分,生成两个子节点,它们分别表示该子区域和其中的单元子集合,把子节点挂在原叶子节点下成为新的叶子节点,直到所有叶子节点中的标准单元数都不大于Pr值;
(5)详细布局,对全芯片单元进行最后的定位:
(5.1)把芯片划分为Dm*Dn个面积相等的子区域;
(5.2)平衡子区域:建立容量—费用网络,求解最小代价最大流问题,依拓扑顺序依次处理容量—费用网络中的所有顶点,用最小代价的方法把单元分布拥挤的子区域中部分单元移动到单元分布稀疏的区域中;
(5.3)平衡每个子区域内部的子行区:重建容量—费用网络,用求解最小代价最大流问题的方法,求出每一对相邻子行区间需要移动单元的面积总和,用拓扑顺序依次处理每一个子行区,根据行区内部标准单元面积总和不大于行区总面积的原则,把被子区域竖直边界分割开的同一行上相邻的子行区合并成整体行区;
(5.4)把行中的标准单元按X方向坐标从小到大进行排序,然后按此顺序依次放置每个单元,以消除每个行区内的单元重叠;
(5.5)从优化线长出发,对单元位置进行调整;
(6)输出设计结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200310113530 CN1258729C (zh) | 2003-11-14 | 2003-11-14 | 基于虚拟模块的大规模混合模式布图方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200310113530 CN1258729C (zh) | 2003-11-14 | 2003-11-14 | 基于虚拟模块的大规模混合模式布图方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1545049A true CN1545049A (zh) | 2004-11-10 |
CN1258729C CN1258729C (zh) | 2006-06-07 |
Family
ID=34336902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200310113530 Expired - Fee Related CN1258729C (zh) | 2003-11-14 | 2003-11-14 | 基于虚拟模块的大规模混合模式布图方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1258729C (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100354868C (zh) * | 2005-04-14 | 2007-12-12 | 上海交通大学 | 精密夹具定位元布局规划方法 |
CN100378737C (zh) * | 2005-11-29 | 2008-04-02 | 知亿科技股份有限公司 | 电路设计辅助方法 |
CN100517386C (zh) * | 2007-02-02 | 2009-07-22 | 中国科学院软件研究所 | 基于模拟退火算法的多观察点设置方法 |
CN101799836A (zh) * | 2009-02-11 | 2010-08-11 | 益华公司 | 电路模拟和分析中的自适应网格分解 |
CN1996318B (zh) * | 2006-01-03 | 2010-09-08 | 联发科技股份有限公司 | 用于半导体芯片的宏摆置的方法与多尺寸混合摆置方法 |
CN101375282B (zh) * | 2004-12-07 | 2010-12-01 | 国际商业机器公司 | 用于对电路进行评估的方法、系统和程序产品 |
CN101609481B (zh) * | 2009-07-17 | 2011-03-30 | 清华大学 | 一种基于直流通路模块和强联通分量的快速电路划分方法 |
CN101211377B (zh) * | 2006-12-25 | 2011-05-18 | 英业达股份有限公司 | 印刷电路板分割线处理方法 |
CN102831255A (zh) * | 2011-06-15 | 2012-12-19 | 扬智科技股份有限公司 | 芯片布局方法 |
CN101887469B (zh) * | 2009-05-12 | 2013-03-13 | 台湾积体电路制造股份有限公司 | 设计集成电路的方法与使用该方法的计算机系统 |
CN103353910A (zh) * | 2013-06-26 | 2013-10-16 | 福州大学 | 一种用于并行电路仿真的电路划分方法 |
CN103853870A (zh) * | 2012-12-03 | 2014-06-11 | 台湾积体电路制造股份有限公司 | 可识别的具有编码信息的ic图案 |
CN105701269A (zh) * | 2014-12-15 | 2016-06-22 | 联发科技股份有限公司 | 减小集成电路的版图面积的方法 |
CN106611088A (zh) * | 2016-12-28 | 2017-05-03 | 北京华大九天软件有限公司 | 一种库单元时延功耗状态完整性的检查方法 |
CN107967372A (zh) * | 2016-10-20 | 2018-04-27 | 上海复旦微电子集团股份有限公司 | 一种fpga总体布局合法化方法 |
WO2020224036A1 (zh) * | 2019-05-08 | 2020-11-12 | 深圳职业技术学院 | 基于二进制编码的数字集成电路布线方法及终端设备 |
CN112183014A (zh) * | 2020-09-25 | 2021-01-05 | 无锡中微亿芯有限公司 | 基于最大流算法进行拥挤区域展开的力导向布局方法 |
CN112668276A (zh) * | 2020-12-31 | 2021-04-16 | 杭州电子科技大学 | 一种基于层次化划分的布图规划方法 |
CN114722767A (zh) * | 2022-05-13 | 2022-07-08 | 紫光同芯微电子有限公司 | 用于安全芯片混合布局的方法及装置 |
WO2022266956A1 (zh) * | 2021-06-24 | 2022-12-29 | 华为技术有限公司 | 一种芯片布局方法及装置 |
-
2003
- 2003-11-14 CN CN 200310113530 patent/CN1258729C/zh not_active Expired - Fee Related
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101375282B (zh) * | 2004-12-07 | 2010-12-01 | 国际商业机器公司 | 用于对电路进行评估的方法、系统和程序产品 |
CN100354868C (zh) * | 2005-04-14 | 2007-12-12 | 上海交通大学 | 精密夹具定位元布局规划方法 |
CN100378737C (zh) * | 2005-11-29 | 2008-04-02 | 知亿科技股份有限公司 | 电路设计辅助方法 |
CN1996318B (zh) * | 2006-01-03 | 2010-09-08 | 联发科技股份有限公司 | 用于半导体芯片的宏摆置的方法与多尺寸混合摆置方法 |
US8661388B2 (en) | 2006-01-03 | 2014-02-25 | Mediatek Inc. | Method of packing-based macro placement and semiconductor chip using the same |
CN101211377B (zh) * | 2006-12-25 | 2011-05-18 | 英业达股份有限公司 | 印刷电路板分割线处理方法 |
CN100517386C (zh) * | 2007-02-02 | 2009-07-22 | 中国科学院软件研究所 | 基于模拟退火算法的多观察点设置方法 |
CN101799836A (zh) * | 2009-02-11 | 2010-08-11 | 益华公司 | 电路模拟和分析中的自适应网格分解 |
CN101887469B (zh) * | 2009-05-12 | 2013-03-13 | 台湾积体电路制造股份有限公司 | 设计集成电路的方法与使用该方法的计算机系统 |
CN101609481B (zh) * | 2009-07-17 | 2011-03-30 | 清华大学 | 一种基于直流通路模块和强联通分量的快速电路划分方法 |
CN102831255A (zh) * | 2011-06-15 | 2012-12-19 | 扬智科技股份有限公司 | 芯片布局方法 |
CN102831255B (zh) * | 2011-06-15 | 2014-12-24 | 扬智科技股份有限公司 | 芯片布局方法 |
CN103853870A (zh) * | 2012-12-03 | 2014-06-11 | 台湾积体电路制造股份有限公司 | 可识别的具有编码信息的ic图案 |
CN103853870B (zh) * | 2012-12-03 | 2017-05-24 | 台湾积体电路制造股份有限公司 | 可识别的具有编码信息的ic图案 |
CN103353910A (zh) * | 2013-06-26 | 2013-10-16 | 福州大学 | 一种用于并行电路仿真的电路划分方法 |
CN103353910B (zh) * | 2013-06-26 | 2016-05-04 | 福州大学 | 一种用于并行电路仿真的电路划分方法 |
CN105701269A (zh) * | 2014-12-15 | 2016-06-22 | 联发科技股份有限公司 | 减小集成电路的版图面积的方法 |
CN107967372A (zh) * | 2016-10-20 | 2018-04-27 | 上海复旦微电子集团股份有限公司 | 一种fpga总体布局合法化方法 |
CN107967372B (zh) * | 2016-10-20 | 2021-05-28 | 上海复旦微电子集团股份有限公司 | 一种fpga总体布局合法化方法 |
CN106611088A (zh) * | 2016-12-28 | 2017-05-03 | 北京华大九天软件有限公司 | 一种库单元时延功耗状态完整性的检查方法 |
WO2020224036A1 (zh) * | 2019-05-08 | 2020-11-12 | 深圳职业技术学院 | 基于二进制编码的数字集成电路布线方法及终端设备 |
CN112183014A (zh) * | 2020-09-25 | 2021-01-05 | 无锡中微亿芯有限公司 | 基于最大流算法进行拥挤区域展开的力导向布局方法 |
CN112668276A (zh) * | 2020-12-31 | 2021-04-16 | 杭州电子科技大学 | 一种基于层次化划分的布图规划方法 |
WO2022266956A1 (zh) * | 2021-06-24 | 2022-12-29 | 华为技术有限公司 | 一种芯片布局方法及装置 |
CN114722767A (zh) * | 2022-05-13 | 2022-07-08 | 紫光同芯微电子有限公司 | 用于安全芯片混合布局的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN1258729C (zh) | 2006-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1258729C (zh) | 基于虚拟模块的大规模混合模式布图方法 | |
CN1668996A (zh) | 解大型连续性或离散性最佳化问题的动态方法 | |
CN1215386C (zh) | 根据量子软计算控制过程或处理数据的方法和硬件体系结构 | |
CN1687934A (zh) | 多端线网插入缓冲器优化时延的标准单元总体布线方法 | |
CN100336066C (zh) | 电阻值计算方法 | |
CN1585110A (zh) | 形成半导体集成电路布局结构的方法、布局结构及光掩模 | |
CN1190477A (zh) | 修改现有数据库以反映相应对象模型变化的方法和装置 | |
CN1357428A (zh) | 加工计划方法和装置、及其加工数据作成方法和装置 | |
CN1723333A (zh) | 混合的矿山规划、设计及处理系统和方法 | |
CN1763743A (zh) | 图表上的自动标签放置系统和方法 | |
CN1529864A (zh) | 在布局中考虑到斜布线的方法和装置 | |
CN1059225A (zh) | 用于结构运算的运算单元 | |
CN1801160A (zh) | 用于具有基本设计限制的集成电路的技术迁移的方法和系统 | |
CN1849608A (zh) | 由边界表示数据生成体数据的方法及其程序 | |
CN1801183A (zh) | 信息处理装置和方法以及程序 | |
CN1637751A (zh) | 多目的最优化装置、多目的最优化方法及多目的最优化程序 | |
CN1558348A (zh) | 将基于模式的分级数据结构转换成平面数据结构的方法以及系统 | |
CN1890630A (zh) | 在寄存器和存储器之间移动数据的数据处理设备和方法 | |
CN101065782A (zh) | 在网格表面和立体对象上产生和测量表面线的系统和方法以及网格分割技术(“曲线测量”) | |
CN1624698A (zh) | 高阶合成方法和高阶合成装置 | |
CN101064028A (zh) | 基于qfd、triz的产品创新设计系统 | |
CN1530856A (zh) | 布局系统和布局程序以及布局方法 | |
CN1102260C (zh) | 求乘数和被乘数之积的方法、系统、装置和乘法器 | |
CN1373876A (zh) | 表格式数据显示方法、插入方法、删除方法和更新方法 | |
CN1809829A (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060607 Termination date: 20091214 |