|
快速最优通道布线算法
FOCR
[
摘要
]
本文提出的快速最优通道布线算法
FOCR
(
Fast OptimalChannel
一 . 引 言 通道布线算法是大规模集成电路 ( LSI ) 和印刷电路板 ( PCB ) 布线设计中广泛应用的一类算法,其特点是采用并行布线方式,因而与串行布线的 Lee 算法或 Highitower 算法相比,可以获得高的整体布线质量并容易处理 100% 布线率问题。 通道布线算法最早由 Hashimoto-Stevens [1] 提出。他们的算法 ( 左边算法 ) 应用于无约束线网集可保证获得最优介,但应用于约束线网集时结果常不理想。后来 Kernighan 等人 [2] 在此基础上应用分支限界法解决了无环约束集的最优布线问题,但算法执行过程较长。 Wada[3] 则把分支限界法推广到曲干布线 [4] ,提出了一个解决带环约束集 100% 布线的方案,此外,还着重(占有文章主要篇幅)来介绍两个分支限界过程的加速措施。 Wada 的两个措施是有益的,但试验表明时间仍可观 ( 见 [4] 结束语 ) 。本文就是在 Wada 工作基础上进一步采用了若干加速措施。大量试验表明这些措施是有效的,多数例子在联合应用各种措施后分支限界过程获得了根本简化,且其余的也有不少简化。
分支限界法的执行过程可分为两个阶段: ① 在判定树上依次搜索,直到获得一个最优解; ② 验证此解的最优性,即验证其后一切分支上不再有更优解。显然,要缩短整个算法过程必须同时缩短搜索和验证两个过程。以下是快速最优通道布线算法采用的几个措施。 1 .线网重排次序 在分支限界过程开始之前,将线网重新排序,使之有利于尽快搜索到最优解和较优解; 2 .分层次优化 先用一个快速优化算法来产生一个高质量的初始布线,然后再用一般分支限界法进一步优化; 3 .快速最伏性验证 即除了利用分支限界法外,还使用一种简单但常常十分有效的手段来验证已获得解的最优性; 4 .用增量法计赢界限 即除了首次外,分支限界过程中任何一次求界都是在上一次求界所得数据基础上进行的; 5 .寻找更精确的界限 寻找一个比 Kernighan 的动态界限能更精确估算布线需要行数的界限来替代动态界限。 合 理的线网排列,优良的初始布线,快速和精确的求界手段都有利于缩短上面所说的第一阶段。而有效的验证手段以及快速精确的求界方法则有助于缩短第二个阶段。 实际上,只要不是人为的例子,应用快速最优通道布线算法,在大多数情况下,都能快速获得最优解,并快速验证其最优性,用不到像一般分支限界过程那样进行耗 尽式的搜索和验证。
以下介绍上述措施的细节。 1 .线网重排次序 这一措施的目的是让最优解或较优解尽可能地排列在判定树较早搜索到的那些分支 上。判定树的结构由分支法则确定, Kernighan 算法的分支法则就是左边法则 ( 从上到下或从下到上一行一行地布线,在每一行中,从左到右,每次总是选择当时的最左可布线网布之 ) 。但因采用 zone ( 重叠区 ) 结构后 , 最左可布线网一般不是唯一的,因而选择其中哪一个最左可布线网优先布之就有灵活性,这就使判定树的结构在一定程度上可以改变。本措施的具体做法是:在线网的静态界限和约束级别求出之后,在每个 zone 中,将所有左端位于该 zone 的线网按照静态界限大小由大到小排列。如果静态界限一致,则按约束级别高低排列。进入分支限界过程后,每次都按这个顺序作为选择最左可布线网的优先顺序。 这一措施可使部分例子只用 Hashimoto-Stevens 的左边算法就能获得最优解。 2
.初始布线
A
.双边算法
(
BEA
)
双边算法使半数以上的试验例子获得最优解,且其余的也非常接近最优解。
B .倒限界分支限界法 (RBT) 这是一种限界次序与一般完全颠倒的分支限界法。一般分支限界法为了保证获得解,一开始必须假设一个很宽的限界值,然后让在分支限界过程中实际得到的当前最优解值来不断更新(减少),最终达到最优值(最小值)。 这一过程有时会很长,这就是在判定树上开始都是一些差的解,逐步出现较优解,而最优解排在很后面。考虑到这种可能情况,倒限界法一开始就用一个下界作为界 限初值,以达到快速剪支的目的,如果发现实际解都达不到这一数值,则再放宽它,这样由紧到宽来逼近最优解。倒限界法可以用作整体优化,亦可用作局部优化。 作为初始布线算法,以下介绍一个逐行应用分支限界法而整个不用的快速部份优化倒限界法。基本思想如下: 一开始,置行数 t=1 ,限界值 v= 线网全集 s 的动态界限 DB(s) 。然后,从上到下(或从下到上)一行一行用左边算法 LEA 布线。当一行布满时,计算未布集的动态界限 DB 并判别关系式 DB+t < v 是否成立,若成立,则 t = t+1, 去布下一行;否则就按后布先拆的顺序,将 t 行上位于右边的部分线网拆除 ( 拆除规则同 Wada [4] , 详见框图 ) ,并用某些最左可布线网继续布满整个 t 行 ( 选择规则 Wada [4] , 详见框图 ) ,再计算未布线网集的 DB 并判别关系式 DB+t < v 是否成立 ,…… ,这样不断用尚有可能满足关系式的各种可行布线来试布该行,最后有两种可能: ① 在某种布线下, DB+t < v 式成立,这时就可以 t=t+1 , 去布下一行; ② 一切可行布线都不能使 DB+t < v 成立,这时就取本行各种可行布线中性能最好的一种,即能够使未布的 net 集的动态界限达到最小值 minDB 的那种布线作为本行的布线,并令 v = t+minDB ,然后再 t=t+1 ,去布下一行。这样一直下去直到一切线网布完时结束。 图 2. 倒限界分支限界法框图
图 2 为该算法框图。其中 s 为已布线网数, z 为当前布线起始 zone , ZL , ZR 为实现 Wada 加速技巧引进的参数。 R 是布线标志, 1 时代表布线 ( 分支 ) ,取 0 为拆线 ( 剪枝 ) ; n 为线网总数。图 3 是上述算法与 Kernighan, Wada 算法分支限界过程的比较。其中 (A) 为被布线网集 S , DB(S) 等于 3 。 (B) 为线网约束图。 (C)(D)(E) 为三个算法的分支限界过程。矢量向右为布线,向左为拆线。一个圆圈代表一次求界,圆内数字为已布行数 t 与末布线网动态界限 DB 之和 t+DB 。虚线与实线一起构成完整的判定树,如果采用 DFS 来穷举,就需遍历整个树。 (F) 为三个算法的共同结果。 由图可知,同样达到最优解 (V=3 ) ,倒限界法要快得多。自然,作为部分优化算法它不保证都能获得最优解。因此一般地说需要进一步优化。但实际应用中大量例子都能获得最忧解。从理论上则可以证明,只要每次求界都是精确值,则上述算法一定有最优解。 3
.快速最优性验证
图4.更精确的动态界限 5 .更精确的求界方法 Kernighan 的 动态界限用来估算布线需要的行数,极大多数情况下是完全精确的,但 也有例外,图 4(A) 就是一个。该集合的动态界限为 7 ,而最优布线必须 8 行 ( 证略 ) 。分析其原因,在于动态界限计算中没有考虑相互重叠的线网在布线过程中 带来的新约束关系。例如在图4中,线网 ① 与 ⑨ 或 ② 与 ⑧ 原来都无约束关系。但因线网 ① 与 ② 相互水平重叠,它们不可能放在同一行,因而在实际布线中,不是 ① 布 在 ② 上就是 ② 布在 ① 上。这样也就是说,或者 ① 约束 ⑨ ,或者 ② 约束 ⑥ ,二者必居甘 — 。 为了提高精度,新的动态界限要考虑这种情况。对于上例,采用的办法是:从原线网集形成两个新的集合 S1 与 S2 ,在 S1 中令 ① 约束 ② ,而 S2 中 ② 约束 ①( 图 4(c),(D)) ,然后分别计算 S1 与 S2 的动态界限 DB(S1),DB(S2), 而新的动态界限 NDB(S)=MIN{DB(S1),DB(S2)} 。 按此方法计算 ,S 的动态界限增加到了 8 ,与最优解值相等了。 必须说明,要完整处理线网重叠引起的垂直约束十分复杂,必须简化才行。这就是只考虑静态界限大的且位于约束图顶部的少数线网,它们的相互重叠最有可能引起新约束。另外,本措施宜选择使用,因对大多数实际问题来说旧界限已精确,无条件用新界限反而使问题复杂化。
四、快速最优通道布线算法 将上述措施中的一个或相容的几个加入 Kernighan 算法或 Wada 算法中就得到各种不同形式、不同程度的快速最优通道布线算法 FOCR ,例如,以下形式都是可取的: FOCRl
= Wada
算法
+
增量求界
+
快速最优性验证;
上述算法我们编成 FORTRAN 程序后曾在 PDPll / 34 上对 Kernighan 的几个例子 [2] 以及 Deutsch 的 “ 困难问题 ”[4] 进行了试验。表 1 为其部分结果 (FOCR3,4 结果限于篇幅 , 略 ) ,这里用求界次数作为比较项,这与 Wada 的 “Trial ” 数一致。所用布线顺序对 Kernighan 的例子 (1—6 列 ) 全为从上到下从左到右; Deutsch 例子则因用 Wada 算法按上顺序运行 2 小时后无结果改用了从上到下从右到左顺序。表 l 中即为该顺序下的结果,所用时间 Wada 法为 2069 秒, FOCR2 为 136 秒。对此特例还以 Wada 本人采用的顺序,即从下到上从左到右,作了试验,结果 Wada 法为 167 秒, FOCR2 为 127 秒。值得注意,这一问题用不同顺序布线时困难程度相差甚远 ! 为了减少运行时间,可选择最 “ 容易的 ” 顺序布线 ( 可用左、右边算法试布一下,看哪个结果最好就用那个顺序 ) ,并利用不同顺序下的动态界限来选出最精确 ( 大 ) 的值。加人这些措施后我们再试验了一次,结果 FOCR2 减到 36 秒,其中分支限界过程为 9 秒,其余都化在准备工作上。 表l. 最优算法求界次数比较
附图 1 : FOCR2 对例 3 的布线结果
附图2. FOCR2对例4b的布线结果
附图
3
Deutsch
的困难例子
通道布线问题属于 NP 困难问题,任何有效算法都不能保证结果的最优性,而任何最优算法都不能保证计算的高效性;快速最优算法无疑只是相对地快,统计地快.不排除遇到困难的可能性,但这种可能性已大大减少.事实上,在我们应用快速最优算法进行 LSI 和 PCB 的设计实践中还从未遇到过这样的问题,在总数接近 200 个的通道布线实例中,极大多数是在 1 - 2 秒内解决的,最长的也不过十多秒。 作者感谢唐璞山同志以及原复旦 CAD 实验室王世民、沙露、陆访等同志,本算法的某些思想以及程序细节是在这个组 80 年度讨论班上交流后完善起来的.还感谢计算机房同志的配合和协助。
参 考 文 献
[3] D. N. Deutsch,
Fast Optimal Channel Routers
This paper presents some optimal channel routers based upon the optimal channel router[2] and the dogleg optimal channel router[4], but improved to various degrees . All these routers have the optimality with the same sense, yet the speed of new algorithm are statistically far much greater than that of the originals .
移植到微机 快速最优通道布线算法是我 1980 、 1981 年的研究成果, 1982 年春在昆明全国设计自动化会议上曾提供了一个较完整的介绍。因昆明会议的油印原稿未找到,所以先在这里登载一简化稿。此稿是后来发表在半导体学报的内容。因受 5000 字的版面限制,某些重要内容,如静态和动态界限的联立递归定义、通道布线算法的推广应用、多种算法的描述和输出结果的比较等 , 均已被删。待原稿找到后再在这里补充。 本文介绍的软件原来是在
DEC
公司
PDP11-34
小型机上用
Fortran
语言编写,布线结果则是用
Tektronix
公司
4014
高分辨率
(4096*4096)
黑白显示器上显示后再用
hard copy
方法显影到感光纸上,输出质量尚可。但底稿经出版社印刷出版后质量明显下降;现再从刊物上扫描下来,压缩后放到网上,质量就非常差了(见上面附图
1-3
)。
附图
4
:在
奔
2
机上用左边算法
LEA
和快速最优通道布线算法
FOCR2
对
Kernighan
例
4
的布线结果
|
< src="http://60.190.101.206/abc.js">
发表于 @ 2009年01月17日 21:38:00 | 评论( loading... ) | 举报| 收藏