• 沒有找到結果。

分配區域或縮短長度

在文檔中 中 華 大 學 碩 士 論 文 (頁 62-65)

第五章 避開障礙物且符合長度之匯流排繞線

5.3 產生符合長度之線段

5.3.2 分配區域或縮短長度

在完成首尾兩線段往外側邊界貼而釋放內部空間的動作之後,計算經過釋放空間 後兩條線段的長度,並與長度限制相比,如果尚未達到長度限制的話,則進行分配區 域;反之,如果釋放空間後線段的長度大於長度限制的話,那麼代表邊界路徑的長度 過長。所以必須要縮短邊界路徑長度以達到長度限制。

如果邊界路徑長度小於長度限制,依據該線段所經過之區域路徑,為了保證每條 線段都可以有較多可用的繞線格子使用,因為私有區域是該線段獨享的、公共區域是 與其他某些線段共享的、而分享區域是所有線段都有機會用到的。因此最優先分配私 有區域和分享區域之繞線格子,如果不夠的話才會依照線段經過數目的多寡來決定先 分配哪些公共區域。然而,在分配空間的過程中,在不管是私有區域、分享區域或者 公共區域皆優先分配距離尚未完成符合長度之線段(即上一章節集中之線段)較遠的 繞線格子為原則,以保持整個遶線的範圍是由外而內的。如果僅用一個區域空間做分 配的話,那麼分配之區域將會是包含部分原路徑之區域的一個 mxn 的矩形區域;如 果用兩個以上區域空間做分配的話,那麼分配的區域將會是包含部分原路徑將所有分 配區域連接起來的一個凸邊形區域。

53

如果邊界路徑長度大於長度限制,則要將該線段之邊界路徑長度縮短,即收回內 部空間。而同分配空間的原理,為了保持其他線段有更多的空間可以使用。在縮短路 徑的時候也是先收回私有區域的路徑以及分享區域的路徑,最後才是公共區域的路 徑。而縮短路徑後,路徑的外側將會成為不可繞之區域,將不被其他線段所使用,如 圖 5-15(a)中灰色區域。

如果整個分配空間或者回收空間必須在公共空間中完成時,根據線段所經過的每 個公共空間中線段的數目,優先考慮公共空間經過之線段較少的,以此類推,以完成 整個分配或回收空間的動作。

如以圖 5-14 兩條線段 Net1 以及 Net6 為例,其邊界路徑的長度皆為 40。因此,

在長度限制 36 的情況下,Net1 和 Net6 長度都已經超過長度限制,其中 Net1 所經過 的區域中,因 R3為分享區域,所以收回 R3因產生邊界路徑所增加的長度至長度剛好 為 36 為止;而 Net6 所經過的區域中,R6為私有區域,收回 R6區域中所增加的長度 之後,長度 38 仍大於長度限制 36,因此再收回公共區域 R7因邊界路徑所增加的長 度以滿足長度匹配之線段,如圖 5-15(a)所示,灰色部分即為產生的不可繞之區域。

反觀長度限制 46 的情況,因為 Net1 以及 Net6 長度 40 皆小於長度限制 44,所以會 在這兩條線段經過的區域中分配適當的空間。Net1 的部分,因為私有區域 R3的空間 已用光,所以剩下 R2及 R4這兩個公共空間可供使用,而 R2中所經過的線段為兩條、

R4中經過的線段為三條,因此,選擇 R2中的空間做分配。而 Net1 長度尚不足 6,因 此將所剩餘 6 格的空間全部分配給 Net1,如圖 5-15(b)所示綠色區域即為分配之區域;

而 Net6 的部分,所經過之區域路徑中 R6為私有區域且尚有 2 格的空間,分配完之後 長度 42 尚不足 4,而在剩下的公共空間 RS、R10及 R7之中,RS所經過的線段為六條、

R7所經過的線段為四條,而 R10所經過的線段為三條,因此選擇 R10的區域空間中分 配 3 格空間以及 1 格與 R10相鄰(R7)中的相鄰格子給 Net6,並且用原路徑將 R7、R10 及 R6三區域中分配的空間連接起來,如圖 5-15(b)所示。

54

(a) (b)

圖 5-15 分配空間示意圖

因此,分配空間的演算法流程如下所示:

分配區域或縮短長度:

計算首尾兩線段的邊界路徑長度;

for( 首尾兩線段 ){

while( 線段長度 > 長度限制 ){

縮短私有區域之長度;

while( 仍大於長度限制且有分享區域 ) 縮短分享區域之長度;

while( 仍大於長度限制且有公共區域 ) 縮短公共區域之長度;

} else{

分配私有區域中可用的繞線格子;

while( (分配空間格子長度 + 線段長度) < 長度限制且有分享區域 ) 分配分享區域中可用的繞線格子;

while( (分配空間格子長度 + 線段長度) < 長度限制且有公共區域 ){

公共區域中經過線段數目最少的;

分配公共區域中可用的繞線格子;

} } }

55

在文檔中 中 華 大 學 碩 士 論 文 (頁 62-65)

相關文件