• 沒有找到結果。

初始以 DBL 表示法為基礎之板面規劃

在文檔中 2.3 可分割板面規劃 (頁 54-57)

第四章 左下靠緊板面規劃表示法 :

4.4 初始以 DBL 表示法為基礎之板面規劃

如圖 4.5(c)(d)一般建立 Gh 和 Gv 圖形後,再依照資料結構中常見的圖形最 長路徑搜尋,對 Gh 和 Gv 找出最長路徑,Gh 的最長路徑為 S→0→7→T,Gv 的最 長路徑為 S→7→8→9→10→T,這些在 Gv 與 Gh 的最長路徑上的區塊定義為關鍵 區塊(critical block),如圖 4.5(e)這些關鍵區塊決定了整個板面規劃面積大 小,這類區塊的鬆動值即設為 0,其他的區塊則是依其所屬的路徑來和最長路徑 上差距來算鬆動值,如圖 4.6 想找區塊 6 的垂直鬆動值即為 :

最長路徑的權重值-區塊所在路徑權重值 = (H7+H8+H9+H10) –(H0+H3+H6) 算出來的鬆動值感覺起來也就是區塊 6 還可移動的距離。

1

0 11 3 4

5 6

7 8

9 10 1 2

1

11 0 11

0 3 3 4 4 5

5 6 6

7 7 8 8

9 9 10 10 2

2

圖 4.6 鬆動值估算與關鍵區塊

Gh 與 Gv 這兩個圖形除了用來算鬆動值,也可以用來像循序配對組合一樣算 板面規劃的面積,代表水平關係的 Gh 算出的最長路徑代表整個板面規劃的寬,

代表垂直關係的 Gv 算出的最長路徑代表整個板面規劃的寬。

劃,並且建立其代表的 DBL。由於 DBL 為針對左下緊密板面規劃的表示法,而階 層階梯式輪廓也是完全由左下緊密板面規劃變化出來的,所以這兩個資料結構是 可以合作的,在更新結構時也可同時進行。

以階層式階梯輪廓初始化 DBL 上的板面規劃的步驟如下 : 步驟 1 : 設定初始輪廓:

建立階梯式輪廓的第一個<L→B>,且為了使初始板面規劃外觀趨近 於正方形,需設定一個板面規劃的大概範圍,使區塊盡量在這範圍內擺 置,範圍定為(0,0,

Limit

,

Limit

)如圖 4.7,其中

Limit

定義如下:

Limit

= 1.5×

所有區塊面積的總和

L B

L B

L

B L

B ( Limit,Limit )

圖 4.7 初始輪廓

步驟 2 : 選擇一還未擺置的區塊 B:

選擇的優先順序是有彈性地,以經驗來看,先選大的區塊來放會比 較好,這與平常大家在搬家一樣,大的東西先放,小的東西找空間塞。

步驟 3 : 以階梯式輪廓為基準,階層式的找尋適合的 L 角落給區塊 B 定位。

階層式搜尋階梯式輪廓的方法在上節有介紹,不再贅述,另外在同 一層中選擇 L 角落時,由經驗法則,要選 L 角落含子輪廓較多的,這表 示這個 L 角落有很多往內塞的空間,還有盡量要讓區塊落在步驟 1 中所

更新階梯式輪廓的方式,在上節提過是由下往上的方式,其實仔細 想想在更新階梯輪廓時追蹤過的區塊,即有可能會因為新放入區塊而改 變 DBL 連接邊的區塊,因此只要在放入區塊演算法中更新輪廓的地方加 入對目標層所有區塊更新 DBL 連接邊,圖 4.8 即改進圖 3.14 在階層階 梯式輪廓中放入區塊的演算法,虛線框出的部份即加入更新 DBL 的函 式。

圖 4.8 在階梯輪廓中放入區塊時更新 DBL 的演算法

步驟 5 : 若還有未擺置的區塊則回步驟 2,否則結束。

由以上 5 個步驟,即可建立一個左下緊密且面積較小的初始板面規劃,雖然最佳 板面規劃不一定是面積小,但畢竟在面積這個要求下為一個好的初始,未來搜尋 最佳化板面規劃會較快。

Algorithm bool Block_assign (start,end) begin

Get fit L corner ; if( Block position) begin

set next start and end point from back and abut;

update ═ Block_assign ( next start ,next end);

end

if( update ═ false) return false;

Set DBL edge for this level if( overall the level) begin

separate the level;

return true;

end

partition block;

modify contour on single level;

return true end

在文檔中 2.3 可分割板面規劃 (頁 54-57)

相關文件