題目:以雙重界限串列表示法之擁塞導向板面規劃

72  Download (0)

Full text

(1)

中 華 大 學 碩 士 論 文

題目:以雙重界限串列表示法之擁塞導向板面規劃

Congestion-Driven Floorplan on DBL Representation

系 所 別:資訊工程學系碩士班 學號姓名:E09102018 蘇乾禎 指導教授:顏金泰 博士

中華民國 九十三 年 七 月

(2)

摘 要

由於 VLSI 的晶片設計進入到深次微米 (Deep-Submircon , DSM)以及單一 系統晶片(System-on-Chip , SoC)的廣泛應用,使得積體電路的電路設計愈趨 複雜,傳統以縮小面積為導向的板面規劃也因成本下降,而顯得不再重要,代 之而起的是決定 IC 設計成敗關鍵的繞線(Routing)問題,為了提高電路可繞性 (Routability),在繞線之前的板面規劃階段,若能使用較佳的資料表示法及透 過有效的擁塞(Congestion)評估,將可改善擁擠度,提高 IC 設計的成功率。

面對各種不同需求的板面規劃問題,本論文所採用的資料表示方法為雙重 界限串列(Double-Bound-List, DBL)表示法,其除了集目前幾個代表性表示法 (如 sequence pair、O-tree 與 B*-tree)之優點外,尚可直接從表示法中得知 總面積和區塊鄰近關係,而只需使用少量記憶體,更符合 P-admissible 特性的 需求;板面規劃的成本計算繁複且耗時,冀望能在最短的時間內得到最佳化板 面規劃,本論文還採用了階層式階梯輪廓(hierarchical stair contour)的資 料結構記錄板面規劃的輪廓,以提高搜尋的效率。為了有效處理擁塞問題,則 採用階層式四分格模型(Hierarchical Quad-Grid Model)來預估擁擠度

其隨著繞 線疏密做動態的四分格分割方式,可以避免以往二維格子模型因單一大小格子 的分割方式,所造成評估不精確及浪費執行時間的缺點。

一個在繞線之前就考慮擁擠度問題的板面規劃,可以減少日後繞線 (Routing)程序所花費的時間,縮短產品上市的時程,增加市場競爭力。實驗結 果顯示,所提出的方法很明顯的可以降低繞線擁擠度,雖然面積會稍微增大,

但相對於因擁塞而繞線失敗,其效益是值得的。

(3)

Abstract

As VLSI technology reaches deep-sub micron dimensions and the application of SoC (System-on-Chip) design is general, the scale of VLSI circuit becomes more complex. A traditional area-driven floorplan become less important because of the decrease in cost of chip area. In floorplan stage, it is necessary for a successful chip design to develop an effective congestion analysis before global routing base on floorplan or placement information.

To deal with multi-objective floorplan issue, we proposed double-bound-list (DBL) representation. DBL representation is more advanced than other representations (Ex.

sequence pair, O-tree and B*-tree) and conform to the property of P-admissible because we can find out the total area and the adjacent relation between blocks with less memory. We also proposed hierarchical stair contour as our data structure to record the contour of floorplan and reduce the time complexity of data searching. In order to handle routability problem efficiently, hierarchical quad-grid model is proposed to estimate congestion. Quid-grid partition depend on wire density to avoid less accurate and more timing-consuming in 2-D static uniform grid-based model.

A floorplan with congestion estimation before routing stage can reduce time complexity of routing procedure. The experimental results show that the method we proposed can decrease routing congestion with a few penalties for chip area.

(4)

誌 謝

歷經了兩年的辛苦,在夾雜著興奮的汗水與淚水中,此篇論文終於順利完 成,要特別感謝指導教授顏金泰博士兩年來不計晨昏的悉心指導,不僅使我在 學識的增長以及研究方法的精進上日益提昇,其對研究工作的投入與執著的學 者身教風範,更是深烙我心亦是鞭策我不斷向前的一股無形的力量,使我受益 良多。同時要感謝論文口試委員陳永源教授、陳順溪教授在百忙之中蒞臨指導,

並在論文上提供寶貴的意見,使論文內容更加充實。

感謝系上師長們的教導和實驗室陪我一起走過這兩年,經常在問題討論與 課業上協助的陳杰煌、陳正智、李石川、陳逢銘、陳彥翔與李佳芳同學,感謝 林順華學長、廖祥智學長、呂昭宏學長給我論文撰寫以及學業上的幫助與鼓勵。

也感謝學弟吳嘉偉、林凱平、李育政與學妹王姿雅的幫忙與協助。

最後要感謝家人的全力支持,讓我在這兩年披星戴月的求學過程中能夠排 除雜務干擾,專心的完成碩士學位。

謹將此篇論文獻給家人、師長、同學及朋友們,共同分享這得來不易之榮 耀。

蘇乾禎 謹致 中華民國九十三年七月於新竹

(5)

目 錄

中 文 摘 要 ...Ⅰ 英 文 摘 要 ...Ⅱ 致 謝 ...Ⅲ 目 錄 ...Ⅳ 圖 形 目 錄 ...Ⅵ 表 格 目 錄 ...Ⅷ

第一章 簡 介 ... 1

第二章 相關研究 ... 5

2.1 可分割板面規劃 ... 6

2.2 不可分割板面規劃 ... 6

2.2.1 序列對映(Sequence Pair)表示法 7 2.2.2 O 樹(O-tree)表示法 8 2.2.3 B*-樹(B*-tree)表示法 8 2.2.4 CS(Corner Sequence)表示法 9 2.2.5 TCG(Transitive Closure Graph)表示法 9 2.2.6 CBL(Corner Block List)表示法 9 2.3 擁擠度評估(CONGESTION ESTIMATION) ... 10

2.4 研究動機 ... 14

第三章 DBL 表示法之模擬退火板面規劃... 15

3.1 LB 緊 密 板 面 規 劃 (LB CO M P A C T FL O O R P L A N) ... 15

3.2 階層式階梯輪廓結構(HIERARCHICAL STAIR CONTOUR STRUCTURE) ... 16 3.2.1 實體的 L 類型角落 17

(6)

3.2.2 凹陷的 L 類型角落 19

3.2.3 緊密的板面規劃的建構與其階層式階梯輪廓 22

3.3 左 下 壓 縮 解 的 模 型 (LB-PACKING SOLUTION MODEL) ... 25

3.4 雙重界限串列表示法(DBL) ... 26

3.4.1 相鄰關係 27 3.4.2 一個緊密板面規劃的雙重界限串列表示法(DBL) 29 3.4.3 一個雙重界限串列表示法(DBL)的緊密板面規劃 30 3.5 以模擬退火為基礎藉 由有效搗亂操作的板面規劃設計 ... 31

3.6 DBL 與其他表示法之比較 ... 35

第四章 階層式四分格模型與其擁塞可能性評估模型 ... 37

4.1 階層式四分格模型(HIERARCHICAL QUAD-GRID MODEL) ... 37

4.2 階層式四分格中擁塞可能性評估模型 ... 43

第五章 以雙重界限串列表示法為基礎之擁擠導向板面規劃 ... 47

5.1 擁擠度估算 ... 47

5.2 成本函式估算 ... 52

5.3 攪亂運算 ... 53

5.4 終止條件 ... 53

第六章 實驗結果 ... 55

第七章 結論與未來研究 ... 59

參考文獻 ... 60

(7)

圖 形 目 錄

圖 1.1 傳統的晶片實體設計流程...2

圖 2.1 可分割板面規劃...5

圖 2.2 不可分割板面規劃...5

圖 2.3 輸入和輸出腳位佈置圖...10

圖 2.4 格狀繞線佈置圖...11

圖 2.5 擁擠度問題...12

圖 2.6 格子邊擁擠度的分析與評估...13

圖 3.1 不可分割板面規劃和它相關的緊密的板面規劃...16

圖 3.2 在實體 L 類型角落上區塊輪廓的改變...18

圖 3.3 在凹陷 L 類型角落上區塊輪廓的改變...21

圖 3.4 緊密的板面規劃的建構與其階層式階梯輪廓...24

圖 3.5 左 下 壓 縮 解 的 模 型...26

圖 3.6 一個緊密板面規劃的雙重界限串列表示法(DBL)...28

圖 3.7 一個緊密板面規劃的搗亂操作...34

圖 4.1 在靜態二維格子模型中的 6X8 格子晶元和晶元 Gi,j...37

圖 4.2 在繞線平面的二維靜態格子模型...39

圖 4.3 階層式四分格模型和繞線平面中的四分樹...41

圖 4.4 階層式四分格上的繞線與其相鄰關係圖...44

圖 5.1 繞線平面中 A 點和 B 點構成的矩形繞線區域...47

圖 5.2 含兩條繞線之繞線平面...48

圖 5.3 A 點至 B 點的繞線所經過的格子頂點及其各邊界的繞線路徑數...48

圖 5.4 A 點至 B 點的繞線所經過邊界的繞線路徑可能性...49

圖 5.5 C 點至 D 點的繞線所經過的格子頂點及其各邊界的路徑數...49

(8)

圖 5.6 C 點至 D 點的繞線所經過邊界的繞線路徑可能性...50

圖 5.7 在繞線平面中兩條繞線的邊界繞線擁擠度...51

圖 5.8 一個八條繞線的繞線平面...51

圖 5.9 一個八條繞線的繞線平面的邊界繞線擁擠度...52

圖 6.1 測試檔 apte 之板面規劃(左邊為 AREA-DRIVEN,右邊為 CONGESTION-DRIVEN)...55

圖 6.2 測試檔 xerox 之板面規劃(左邊為 AREA-DRIVEN,右邊為 CONGESTION-DRIVEN)...56

圖 6.3 測試檔 hp 之板面規劃(上面為 AREA-DRIVEN,下面為 CONGESTION-DRIVEN)...56

圖 6.4 測試檔 ami33 之板面規劃(上面為 AREA-DRIVEN,下面為 CONGESTION-DRIVEN)...57

圖 6.5 測試檔 ami49 之板面規劃(上面為 AREA-DRIVEN,下面為 CONGESTION-DRIVEN)...57

(9)

表 格 目 錄

表 3.1 結 構 特 性 比 較 表...35

表 3.2 記 憶 體 需 求 量 的 比 較...36

表 6.1 MCNC 的電路測試檔資料...55

表 6.2 板面規劃之各項資料比較...58

(10)

第一章 簡 介

在消費者功能需求導向的情況下,目前所有電子產品設計趨勢均朝多功 能、小型化、低耗電及低價位發展,因此電路設計者必須在最低成本考量的最小 面積或體積的限制下,不但要以最快的速度推出新產品搶得商機,更要設計出既 多功能又省電的電路,來提高市場競爭力,但在週邊被動元件電路無法再有效縮 減情形之下,只得提升製程技術增加積體電路中電晶體個數,致使積體電路單一 晶片中電晶體的個數已動輒超過數十萬個以上,其中相關線路的龐大與複雜性,

對於電路規劃設計與測試驗證工作而言,已完全無法用傳統人工方式去處理,而 必須仰賴計算機輔助設計(Computer-Aided Design,CAD)工具來幫忙驗證及設 計。

在設計超大型積體電路時,可以透過計算機輔助設計工具(CAD)中的電晶體 層次(Transistor-level)如 PMOS 及 NMOS,做小區塊電路實體設計(Physical Design)如 AND 閘、OR 閘及反閘(inverter)等等,再經由組合而成大電路模組或 小系統如加減法器、處理器、記憶體及 USB 等等,最後再整合成所要設計的晶片,

但是這種佈局整合方式會浪費許多設計與驗證時間,因此才會發展出高階硬體描 述語言如 VHDL 及 Verilog,藉由高階硬體描述語言的合成器來完成電路設計,

不但可以減少錯誤、提高效率,更可大幅縮減設計與驗證的時間。

由於單一系統晶片(System-on-Chip , SoC)時代的來臨,晶片設計愈趨複 雜,為了有效處理隨之而來的設計複雜性,矽智財(SIP)模組儼然已被廣泛的使 用,以致晶片內的矽智財模組可能是由許多不同公司或不同部門所提供,因此矽 智財模組的整合對於發展單一系統晶片而言其重要性是不言可喻的,雖然電路設 計者已廣泛使用高階硬體描述語言,來協助完成晶片的設計,但由於功能取向的 差異,設計出一套可應用於單一系統晶片的計算機輔助設計工具卻是重要而迫切

(11)

的。

計算機輔助設計工具一般均分成前段(Front-end)和後段(Back-end)兩部 份,前段的設計重點主要是電路的合成及功能性的驗證等等,而後段的設計則是 屬於晶片的實體設計(Physical Design)部分,其流程包含了電路的板面規劃 (floorplan)、擺置(placement)、自動化的繞線(auto-routing)、繞線後的功能 性驗證等等。藉由這套設計工具就可以讓晶片設計者能夠更容易且快速地完成晶 片的設計及驗證之工作。圖 1.1 為傳統的晶片實體設計流程簡圖。

圖 1.1 傳統的晶片實體設計流程

傳統的晶片實體設計流程中,每一階段都有其主要規劃的重點,在板面規劃 階段主要是思考如何讓晶片設計可以獲得最小的面積;而整體繞線階段則需考慮 腳位(pin)如何連接及其所使用之連接線段是最短的,使得內部連接傳遞延遲

(Interconnection Delay)減小,讓晶片的效能得以更好;最後細部繞線階段 則會根據整體繞線所得的結果,實際去完成每一條繞線,同時須避免在同一區域 浪費太多空間。但是在早期時,因為晶片設計較簡單且電晶體的個數較少,因此

整體繞線 ( Global Routing )

細部繞線 ( Detailed Routing )

分割

( Partition )

板面規劃

( Floorplan )

(12)

當時的晶片設計者大多都只考慮晶片設計的功能是否正確,並不會去考慮電路延 遲、總線長及速度等其它方面的限制。

隨著技術移轉進入到深次微米 (Deep-Submircon , DSM)年代,電路的大小 及複雜度快速地增加,階層式的設計和智慧財產權(IP)組件被廣泛使用去處理日 益複雜的電路設計,板面規劃(floorplan)也因而愈來愈重要。對VLSI電路實體 設計而言,在晶片組件的成形及擺置位置的決定,板面規劃(floorplan)設計為 其主要步驟,以往面積最小化是板面規劃設計的最重要目標,但時至今日,內部 連線所產生如延遲(Delay)、總線長(Ttotal Wirelength)、擁擠度(Congestion) 和可繞性(Routability)卻已經成為最佳化的主要目標。但是很不幸地,板面規 劃(floorplan)問題是非多項式困難問題(N-P hard problem)。為了有利於板面 規劃,許多板面規劃者使用隨機搗亂的搜查和探試方法。這些有效率的方法,非 常依賴於這些模組之間幾何關係的表示法。好的表示法能夠縮短搜查過程並快速 實現板面規劃,更能精確的完成評估面積及內部連線的成本。板面規劃問題分為 可分割(Slicing) 、不可分割(Non-slicing)和馬賽克(Mosaic)三類,對板面規 劃表示法,有幾個論述[ 1 ] - [ 18 ] 已經被討論在各種類型的板面規劃上了。

本篇論文所採用的資料表示方法為雙重界限串列(Double-Bound-List, 簡 稱DBL)[19],DBL表示法具有目前幾個熱門表示法(如sequence pair [7]、O-tree [9]、B*-tree [11]、CBL [14]、TCG [13]及CS [12]等)之優點,例如DBL表示法 符合P-admissible特性的需求,可以直接從DBL表示法中得知總面積和鄰近關 係,另外DBL表示法只需使用少量記憶體,且也符合一對一對應之關係。除了使 用DBL表示法外,本篇論文也使用左下靠緊板面規劃(Left-Bottom(LB) Compact Floorplan)的資料結構,藉著使用這兩個資料結構,可以更有效率的去搜尋較佳 的板面規劃。

(13)

另外在深次微米和奈微米下的格狀繞線方式中,將會產生擁擠度的問題,

而擁擠度(Congestion)問題亦為現代繞線系統中影響晶片成功或失敗的最主要 因素,因此已經有許多研究團隊和專家學者相繼投入此範疇中。在[20]中主要的 目標是要解決繞線時會產生的擁擠度問題,主要的概念是利用在非格狀繞線模式 下階層式繞線方式,來分析與評估每一個階層中可用的繞線資源,以解決擁擠度 的問題;還有深入考慮在深次微米和奈微米的製程技術下,將有多層繞線金屬層 時,如何分析與評估繞線資源,並將擁擠度問題解決[21]。本篇論文亦將推翻以 往所使用單一型式的格子模型改採階層式四分格模型(Hierarchical Quad-Grid Model )來評估擁塞可能性,以提高評估的精確度。

在接下來的章節中,第二章將介紹板面規劃相關研究與研究動機,第三章 說明階層式階梯狀輪廓結構並介紹以DBL表示法之模擬退火式板面規劃,第四章 是介紹階層式四分格模型及擁塞可能性評估,第五章則介紹使用DBL表示法之擁 塞導向板面規劃,以及說明成本函式的估算,第六章是實驗結果,第七章為結論 與未來方向。

(14)

第 二 章 相關研究

本章將介紹板面規劃與擁擠度問題的相關研究及本論文之研究動機。

板面規劃問題分為可分割(Slicing) 、不可分割(Non-slicing)和馬賽克 (Mosaic)三類,所 謂 可 分 割 板 面 規 劃 是 指 一 個 矩 形 經 由 遞 迴 方 式 做 水 平 或 垂 直 切 割 , 且 每 次 切 割 都 可 一 分 為 二 而 不 會 損 毀 到 內 部 之 區 塊 (如 圖 2.1), 反 之 , 若 每 次 切 割 都 無 法 一 分 為 二 或 會 損 毀 到 內 部 之 區 塊 就 稱 為 不 可 分 割 板 面 規 劃 (如 圖 2.2), 馬賽克板 面 規 劃 除 了 沒 有 空 的 空 間 及 沒 有 交 叉 切 割 之 外 與 不 可 分 割 板 面 規 劃 相 同。板 面 規 劃 的 基 本 問 題 在 於 如 何 表 示 區 塊 之 間 彼 此 的 幾 何 關 係,因 為 板 面 規 劃 的 表 示 法 不 僅 決 定 運 算 的 複 雜 性 同 時 也 影 響 處 理 不 同 限 制 的 板 面 規 劃 問 題 之 彈 性,也 因 此 才 需 要 發 展 一 個 效 率 高、有 彈 性 及 有 效 的 板 面 規 劃 設 計 的 表 示 法。雖 然 可 分 割 板 面 規 劃 有 較 多 的 優 點,例 如 表 示 法 的 個 數 較 少 及 執 行 板 面 規 劃 設 計 時 間 較 快,但 是 實 際 上 目 前 大 部 分 的 晶 片 設 計 幾 乎 都 是 不 可 分 割 板 面 規 劃 , 故 本 論 文 以 不 可 分 割 板 面 規 劃 為 主 。

圖 2.1 可分割板面規劃 圖 2.2 不可分割板面規劃

(15)

2.1 可分割板面規劃

可分割板面規劃(Slicing Floorplan)是板面規劃中最簡單的,可分割板面 規劃是指一個矩形可經由遞迴方式不斷做水平或垂直切割,變成比較小的矩形,

Otten [1]最早使用二元樹來表示可分割板面規劃,之後,Wong and Liu[2]提出 一個標準化的Polish表示法以改進這個二元樹表示法,因為這個表示法可以描述 任何可分割板面規劃,而不會有多餘描述,標準化的Polish表示法成為可分割板 面規劃最流行的方法,而其上限解為 O(n!2 3n-3/n1.5),n為模組數。然而多數的 板面規劃是不可分割板面規劃(Non-slicing Floorplan)。

2.2 不可分割板面規劃

對不可分割板面規劃而言,Ohtsuki et al.[3]第一個使 用 水 平 和 垂 直 配 對 方 法 , 應 用 在 非 循 環 式 的 圖 解 中 來 表 示 板 面 規 劃 , 稱 為 polar graphs。 而 另 一 個 和 polar graphs 相 似 且 被 廣 泛 應 用 的 表 示 法 稱 為 adjacency graphs[4], 此 二 種 圖 解 表 示 法 雖 然 很 容 易 將 板 面 規 劃 對 應 至 表 示 法,也 很 容 易 將 表 示 法 對 應 至 板 面 規 劃,但 是 這 兩 種 圖 解 表 示 法 共 同 的 缺 點 就 是 在 表 示 法 中 邊 (edge)的 複 雜 度 很 大,且 表 示 法 的 個 數 是 未 知 數 。 Onodera et al. [5]利 用 branch-and-bound 的 方 法 來 尋 找 所 有 板 面 規 劃 的 面 積,並 從 全 部 板 面 規 劃 的 面 積 中 找 出 最 小 的 面 積,雖 然 此 方 法 可 以 得 到 最 小 的 面 積,但 是 必 須 花 費 相 當 長 的 執 行 時 間,且 所 能 處 理 的 區 塊 個 數 也 會 非 常 有 限,而 其 表 示 法 的 個 數 也 是 未 知 數。近 年 來 多 位 學 者 提 出 許 多 關 於 不 可 分 割 板 面 規 劃 的 表 示 法 , 如 Sequence Pair (SP) [6]、O-tree [9]、B*-tree [11]、Corner Block List(CBL)[14]、Transitive Closure Graph(TCG)[13]和 Corner Sequence

(16)

2.2.1 序列對映(Sequence Pair)表示法

在 90年中期,序列對映(Sequence Pair) (SP)[6]和 bounded-sliceline grid(BSG)[7],更進一步對不可分割板面規劃提出兩個有效表示法,Murata et al.[6]用序列對映(Sequence Pair)的兩個模組名稱的序列,來表示模組間初始 幾何關係而 此 組 區 塊 名 稱 的 序 列 就 稱 為 SP, 同 時 它 還 定 義 在板面規劃表 示法上P-admissible空間解的概念,所 謂 P-admissible表 示 法 需 滿 足 以 下 四 個 需 求:(1)表 示 法 的 個 數 為 有 限 的;(2)每 個 表 示 法 均 可 對 應 到 一 個 板 面 規 劃;(3)在 polynomial 時 間 內 即 可 將 表 示 法 轉 換 成 板 面 規 劃 和 完 成 成 本 的 估 算 ; (4)成 本 估 算 最 小 的 表 示 法 即 可 轉 換 成 最 佳 的 板 面 規 劃。SP表 示 法 對 於 一 般 的 板 面 規 劃 很 有 彈 性,可 是 它 卻 很 難 去 處 理 具 有 位 置 限 制 的 板 面 規 劃 問 題,而 且 它 無 法 直 接 從 表 示 法 得 知 區 塊 的 幾 何 關 係 及 成 本 估 算,所 以 必 須 先 將 表 示 法 轉 換 成 板 面 規 劃 才 可 知 道 區 塊 的 幾 何 關 係 及 估 算 出 成 本,以 致 它 必 須 花 費 相 當 長 的 執 行 時 間 在 成 本 的 估 算,同 時 它 還 需 要 額 外 的 記 憶 體 去 儲 存 SP,為了減少這個時 間複雜度, Tang and Wong [8] 提出FAST-SP表示法,它 是 藉由 計 算 SP共 同 的 子 序 列 來 快 速 估 算 成 本 。BSG 表示法是由Nakatake et al.[7]所提出,BSG 是 一 複 合 的 表 示 法 , 所 以 BSG 表 示 法 會 產 生 重 大 的 多 餘 。 由 於 序 列 對 映 (Sequence Pair)的概念簡單,已廣泛被應用於不可分割板面規劃的設計。然而,

在這些表示法中仍然有許多多餘,序列對映(Sequence Pair)表示法的空間解是 (n!)2 而BSG 表示法則為 n!C(n2; n),

(17)

2.2.2 O 樹(O-tree)表示法

考慮緊密板面規劃表示法,Guo et al. [9] 是第一個提出以樹為基礎架構 的 O-tree 表示法去表示一個緊密的不可分割板面規劃。為了在搗亂以後獲得一 個好的解,擺置和它的表示法之間需要做一維序列的壓密和轉換,在 O-tree 表 示 法 中 每 一 個 表 示 法 都 會 有 二 個 樹 狀 圖 , 稱 為 水 平 樹 狀 圖 (horizontal O-tree) 及 垂 直 樹 狀 圖 (vertical O-tree) 。 O-tree 的 運 算 雖 然 很 簡 單 可 是 邊 的 複 雜 度 太 大,常 會 導 致 運 算 變 的 很 複 雜。且 此 方 法 不 能 直 接 在 O-tree 表 示 法 做 向 左 及 向 下 壓 縮 之 動 作 , 所 以 無 法 從 表 示 法 中 直 接 得 知 區 塊 的 幾 何 關 係,而 於 所 對 應 的 板 面 規 劃 可 能 需 做 向 左 及 向 下 壓 縮 動 作,但 是 當 對 板 面 規 劃 的 區 塊 做 向 左 及 向 下 壓 縮 之 動 作 後,可 能 導 致 經 過 壓 縮 的 板 面 規 劃 之 表 示 法 與 原 來 的 表 示 法 不 一 致 。

2.2.3 B*-樹(B*-tree)表示法

此外,Chang et al.[11]提出以二元樹為基礎的B*-tree的表示法以表示一 個緊密的不可分割板面規劃。此 表 示 法 主 要 是 改 進 O-tree 的 邊 複 雜 度 且 表 示 法 的 個 數 也 比 較 少 。然而,由於它可能無法獲得與原始的B*-tree相應 的切實可行的板面規劃,因為它是二維的壓縮方式,儘管他們有很小的空間解 O(n!22n-2/n1.5), 他們僅描述部分的拓撲資訊且模組的尺寸大小需要精確地提供 給板面規劃。此外,這表示法並非唯一,並且由於不同拓撲模組的相互關係,單 一的O-tree或B*-tree的表示法能夠導出更多的板面規劃。B*-tree與 O-tree 另 有 一 相 同 問 題:就 是 無 法 直 接 從 表 示 法 得 知 區 塊 的 幾 何 關 係,所 以 它 們 都 不 符 合 P-admissible定 義 。

(18)

2.2.4 CS(Corner Sequence)表示法

P-admissible 的CS(Corner Sequence)[12]表示法被提出表示一個緊密的 不可分割板面規劃,它是由兩組元素所組成,去表示和模組一致的角及位置的序 列包裝,其一般最壞的情況是線性時間的壓縮方案。此 表 示 法 跟 CBL表示法很 類 似 , 只 是 此 表 示 法 是 以 區 塊 為 主 且 是 從 左 下 角 的 區 塊 開 始 產 生 序 列,而 CBL表示法則是 以 矩 形 空 間 為 主 是 從 右 上 角 的 矩 形 空 間 開 始 產 生 序列 。

2.2.5 TCG(Transitive Closure Graph)表示法

Lin and Chang 對一般板面規劃提出 TCG [13] 表示法,在透過操作轉換 和減少邊的搗亂期間 TCG 能夠保證它的可行性,雖 然 此 表 示 法 很 容 易 了 解 及 執 行,但 是 當 區 塊 個 數 變 多 時,TCG的 邊 複 雜 度 會 相 對 地 提 高 很 多 , 且 TCG表 示 法 所 對 應 的 板 面 規 劃 並 非 唯 一 , 有 可 能 一 個 表 示 法 會 產 生 多 個 板 面 規 劃 , 同 時 此 表 示 法 也 是 無 法 直 接 得 知 區 塊 的 幾 何 關 係 。

2.2.6 CBL(Corner Block List)表示法

除了沒有任何空的空間之外,馬賽克板面規劃與一般不可分割板面規劃類 似。Hong et al. [14],對馬賽克不可分割板面規劃提出 CBL表示法。用馬賽克 板面規劃,是指在晶片中每一個空間都容納唯一的一個模組(亦即,沒有空的區 域)。 CBL表示法有較快速壓縮方案; 然而,它不是P-admissible,因為它不能 保證對每一個搗亂找到一個切實可行的解,而且在切實可行解被發現以前,它可 能產生許多不切實可行的解。再者,這個 CBL表示法能夠表示的馬賽克板面規劃 比緊密的板面規劃還被限制。 CBL表示法被提出來表示馬賽克板面規劃。從時間

(19)

複雜度為線性可知這個表示法相對地有一較小的空間解O(n!23n)。然而,一些CBL 表示法不能符合每一個板面規劃。為了補救一些不可分割的結構不能被表示的缺 點,CBL表示法藉由在模組設立零面積的虛擬區塊來延伸,虛擬區塊的O(n2)被使 用來表示所有不可分割的結構,且這對不斷增大的空間解是值得注意的[15]。在 [16]文中,提出一個叫Q-Sequence的新表示法來表示馬賽克板面規劃,它是由包 含空的空間的[17]文中的加強板。

2.3 擁擠度評估(Congestion Estimation)

板面規劃(Floorplan)完成後,接著做輸出腳位佈置(Placement),把板面規 劃圖中每個方塊上的輸入和輸出腳位分派至方塊上,並且將原本擺置圖中方塊和 方塊之間的距離做適當的擴展,使得此空間能讓欲通過此通道(Channel)的線段 可以全部通過[23-24],之後便開始繞線(Routing)。

傳統的繞線皆採取通道方式的繞線方法(Channel Based Routing Approach) [23-24]。但因為金屬繞線層的增加,在做整體繞線時,繞線線段可以穿越原本 的邏輯閘和方塊,因此採用格狀繞線方式(Grid Based Routing Approach)[25-28]

來取代傳統的通道繞線方式。

圖 2.3 輸入和輸出腳位佈置圖

至於格狀繞線方式,首先在圖 2.3 的輸入和輸腳位的佈置圖上,設定一個最

(20)

小的格狀尺寸,將整個電路的佈局圖全部覆蓋,如圖 2.4 中所呈現。原本的佈置 圖被一格一格的小方塊覆蓋,而一個小方塊為一個格子;格子上會有水平格子邊 和垂直格子邊,而每個水平或垂直格子邊都有預先規定最多可以通過的繞線總 數,為水平格子邊容量和垂直格子邊容量。當要連接每個方塊上的輸出或輸入腳 位時,必須要考慮每個格子、水平格子邊容量和垂直格子邊容量是否可以容納。

圖 2.4 格狀繞線佈置圖

擁擠度是在深次微米和奈微米先進製程下,格狀繞線所產生的問題。在格 狀繞線方式下對整體線段執行分派時,必須將每條線段要穿越的格子、水平格子 邊和垂直格子邊做初步的分派,而在分派時必須要考慮繞線的路徑是否符合時間 的要求,和每個格子、水平格子邊和垂直格子邊是否會超過預先設定的最大可以 穿越的路徑總數,如圖 2.5。

水平邊界 格子

垂直邊界

(21)

V11 V12 V13

V21 V22 V23

V31 V32 V33

H11 H13 H14

H21 H22 H23 H24

w0

w1

w2

w3

w4

w5

w6

w7

w8

w9 H12

P1

P2 w10

G11 G12 G13 G14

G21 G22 G23 G24

G31 G32 G33 G34

圖 2.5 擁擠度問題

擁擠度的控制對於現今繞線系統有舉足輕重的影響,以往將晶片的繞線平面 切割為二維(2D)的方形格子,再對其內部擁擠度進行評估,此種分析和評估方式 稱為格狀擁擠度模式。

假設繞線區域內的每個水平格子邊和垂直格子邊皆有剩餘的繞線容量可供 繞線線段通過,對於繞線區域內所有的可能繞線路徑做一致的機率分析,對於繞 線區域內水平格子邊和垂直格子邊的擁擠度評估,如下:

分析整體線段(Global Wire)中單一線段(Segment)在繞線區域中跨越格 子、水平格子邊和垂直格子邊的繞線路徑、機率和擁擠度

假設起點為 A,終點 為 B,如圖 2.6 中。其中 m 為整體格狀分析圖中行所包含的總共格狀數,而 n 為 整體格狀分析圖中列所包含的總共格狀數,Gpq為 A 點所在的格子索引,Grs為 B 點所在的格子索引。

(22)

G11 G12

G21

n

m

A

B Gmn

(i,j)

H11 H12 H13 H14 H15 H16

H21 H22 H23 H24 H25 H26

V11 V12 V13 V14 V15

V22 V23 V24 V25

V21

V32 V33 V34 V35

V31

H31 H32 H33 H34 H35 H36

圖 2.6 格子邊擁擠度的分析與評估

1. 對於水平格子邊 Vi,j可能行經之機率的繞線總數為

=

} ,...

2 , 1 {

,

, ( )

M k

k H

j i H

j

i P w

M

2. 對於垂直格子邊 Vi,j可能行經之機率的繞線總數為

=

} ,..., 2 , 1 {

,

, ( )

M k

k V

j i V

j

i P w

M

每個格子、水平格子邊和垂直格子邊上之機率擁擠度

1. 已知水平格子邊之容量為 CH,則水平格子邊 Hi,j之擁擠度定義為

H H j H i

j

i C

C, = M ,

2. 已知垂直格子邊之容量為 CV,則垂直格子邊 Vi,j之擁擠度定義為

V V j V i

j

i C

C, = M ,

依據上述得知,每個格子上之水平格子邊和垂直格子邊擁擠度分析與評估方

(23)

法,依之前提到之實例(圖 2.5),評估每個格子、水平格子邊和垂直格子邊的擁 擠度。

2.4 研究動機

在以往 IC 設計大部份是面積導向(Area-Driven),也就是電路設計者為了 降低成本,在電路設計時會儘量以電路面積小型化,來做為主要的考量,但時至 今日,電路製作技術已大幅提升,整體製作成本亦隨之下降,電路面積小型化,

對現今 IC 設計已不再重要,代之而起的卻是因 DSM 和 SoC 使得 IC 設計複雜化之 後,決定 IC 設計成功與否的最大要素⎯可繞性控制(Routability Control),唯 有可以繞線成功的 IC 設計才有意義,遺憾的是可繞性通常需經過繞線(Routing) 之後方知結果,為了提前得知結果可以擁擠度的控制來達成,因此透過有效的擁 塞(Congestion)評估模型,在繞線之前,來預先評估擁塞的可能性,並予以排除 或降低擁塞,才能提高 IC 電路設計的成功率。

再者,繞線(Routing)問題受板面規劃(Floorplan)結果影響很大,好的擁 塞 考 量 的 板 面 規 劃 , 才 不 致 於 造 成 繞 線 失 敗 , 所 以 擁 塞 導 向 板 面 規 劃 (Congestion-Driven Floorplan)對可繞性而言非常重要,在傳統擁塞評估通常 採用二維相同大小的格子晶元模型(2D Uniform Grid Model),其缺點為格子的 大小不易決定,若格子訂的太大會低估擁擠度,造成評估不精確,以致影響可繞 性,若格子訂的太小則會因高估擁擠度,造成無謂的資料計算,浪費時間,因此,

建立一個新的擁塞評估模型,在繞線之前去預估擁塞可能性,進而產生一個擁塞 導向的板面規劃,對 IC 電路設計者是相當重要的。

(24)

第 三 章 DBL 表示法之模擬退火板面規劃

本章將介紹左下緊密板面規劃的觀念與階層式階梯狀輪廓結構,緊接著介 紹本論文提及的板面規劃演算法中所使用的表示法⎯雙重界限串列表示法 (DBL),及其操作與意義,最後則將 DBL 與之前所提的表示法比較。

3.1 LB 緊 密 板 面 規 劃 (LB Compact Floorplan)

對一組固定或活動的區塊而言,板面規劃的目的是要使這個板面規劃區域 之總線長(wirelength),或這個板面規劃區域最後晶片上總線長(wirelength) 的總合減到最少。一般把板面規劃分為可分割(Slicing)板面規劃、不可分割 (Non-slicing)板面規劃。能夠以遞迴方式用水平或垂直切割線將這個板面規劃 區域一分為二者稱為可分割(Slicing)板面規劃。然而,大多數是不可分割 (Non-slicing)板面規劃,並且這些不可分割(Non-slicing)板面規劃無法徹底以 遞迴方式用水平或垂直切割線地將這個板面規劃區域一分為二。同時在一般(可 分割或不可分割)板面規劃中的區塊在板面規劃區域中並不是緊密的。因此,一 個緊密的板面規劃必須從一般板面規劃轉換得到。

板面規劃的結果,是要把所有區塊都放在固定的位置上。對一組固定的區 塊而言,一個緊密的板面規劃是指一個板面規劃在不移動任何區塊的情況下,沒 有區塊能夠水平移動到它的左邊或者垂直地向下降。在板面規劃中彈跳矩形的左 下角座標會被作為一個緊密的參考點,亦即緊密參考點的座標設為(0,0)。顯然 地,能夠藉由沿著 X 軸的水平方向移動所有區塊到它的左邊做壓緊和垂直地沿 著 Y 軸方向向底部壓緊,把一個一般板面規劃轉變為一個緊密的板面規劃。由於 緊密的板面規劃是由一個二維的壓緊階段或者二個一維壓緊獲得的,彈跳矩形緊

(25)

密的板面規劃會被再次建構的板面規劃覆蓋,並且這個板面規劃面積可能再次計 算。一般而言,緊密的板面規劃將更具規則性且區塊之間為真實的相鄰關係,其 面積亦小於它的原始板面規劃的面積。如圖 3.1 所示為一組固定區塊之不可分割 板面規劃和它相關的緊密的板面規劃。

(a) (b)

圖 3.1 不可分割板面規劃和它相關的緊密的板面規劃

對一個緊密的板面規劃而言,從區塊放置的觀點來看,處理一個緊密的板 面規劃的結果,可以看成是一系列區塊在這個板面規劃中一個動態階梯狀輪廓般 的放置結果,而一個階梯狀輪廓則會包含幾個 L 類型角落。假設一個緊密的板面 規劃的左邊界 L 和底部邊界 B,被表示為兩個虛擬的區塊。最初,兩個虛擬的區 塊 L 和 B 在座標(0,0)上面形成一個 L 型角落,並且初始動態階梯狀輪廓在 L 和 B 之間僅僅含有一個 L 角落 L ->B。

3.2 階層式階梯輪廓結構(Hierarchical Stair Contour

Structure)

對於在(x, y)位置上一個 B -> B 的 L 型角落,它的高 h 和寬 w 被定

(26)

義為 hi,j = yi – y 和 wi,j = xj – x,則 Bi和 Bj的兩個右上角位置分別為(xi, yi) 和(xj, yj)。因為把兩個虛擬區塊 L 和 B 最右上的角落看作(0, ∞)和(∞, 0),

所以這個 L -> B 的 L 類型角落的高度和寛度皆為∞。一個含有這個 L -> B 的 L 類型角落的初始階梯狀輪廓,如果在這個唯一 L -> B 的 L 類型角落放置 一個區塊,這個 L -> B 的 L 類型角落,將會被兩個鄰近 L 類型角落 L -> Bi 和 Bi -> B 取代。因此,這個動態階梯狀輪廓將會隨著兩個鄰近 L 類型角落 L -> Bi 和 Bi -> B 改變成為 L -> Bi -> B。一個 Bi -> Bj 的 L 類型角落,如果 這個 Bi -> Bj 的 L 類型角落的高度 hi,j沒有大於區塊 Bi,且它的寛度 wi,j沒有 大於區塊 Bj,則稱這個 Bi -> Bj 的 L 類型角落為實體的 L 類型角落,相對地,

這個 Bi -> Bj 的 L 類型角落,若不是一個實體的 L 類型角落,則稱這個 Bi ->

Bj 的 L 類型角落為凹陷的 L 類型角落。

3.2.1 實體的 L 類型角落

在階梯狀輪廓 L ->…-> Bi ->…-> Bj -> Bj+1 ->…-> Bk ->…-> B 中,放 入一個區塊 Bt,如果它的高度和寬度比它放置的實體 L 類型角落還更小,那這 個實體 L 類型角落將會被兩個相鄰的實體 L 類型角落 Bj -> Bt 和 Bt -> Bj+1取 代,因此,動態階梯狀輪廓僅產生實體 L 類型角落,並且這動態輪廓的階梯拓 撲能夠被保持,如圖 3.2(a)所示。 如果放入的區塊其高度和寬度比它放置的實 體 L 類型角落還更大,就可以沿著水平方向找到放入區塊的最高點或以垂直方 向找到放入區塊的右邊界。因此, 動態階梯狀輪廓形成一個外部階梯狀輪廓,

並且最多產生含有二個凹陷的 L 類型角落的兩個內部階梯狀輪廓,和透過增加 一個垂直映對的 L 類型角落或者一個水平映對的 L 類型角落,連接這個可能的 內部階梯狀輪廓到外部階梯狀輪廓,如圖 3.2(b)所示,由於放入的區塊 Bt 的 高度比這個放置的那個實體 L 類型角落Bj -> Bj+1更大,可以沿著區塊 Bt 的上邊 界水平方向的找到區塊 Bi。因此, 動態階梯狀輪廓形成一個外部階梯狀輪廓,

(27)

L ->…-> Bi -> Bt -> Bj+1 ->…-> Bk ->…-> B,和含有一個凹陷 L 類型角落Bi -> Bt的一個內部階梯狀輪廓 Bi ->…-> Bj,和藉由增加一個垂直映對的 L 類型 角落 Bj -> Bt,連接Bi ->…-> Bj這個內部階梯狀輪廓到外部階梯狀輪廓L ->…->

Bi -> Bt -> Bj+1 ->…-> Bk ->…-> B。如圖3.2(c)所示,由於放入的區塊 Bt 的 寬度比這個放置的那個實體 L 類型角落Bj -> Bj+1更大,可以沿著區塊 Bt 的上 邊界垂直方向的找到區塊 Bk。因此,動態階梯狀輪廓形成一個外部階梯狀輪廓,

L ->…-> Bi ->…-> Bj -> Bt -> Bk ->…-> B,和含有一個凹陷 L 類型角落Bt ->

Bk的一個內部階梯狀輪廓 Bj+1 ->…-> Bk,和藉由增加一個水平映對的 L 類型角 落 Bt -> Bj+1,連接Bj+1 ->…-> Bk這個內部階梯狀輪廓到外部階梯狀輪廓L ->…->

Bi ->…-> Bj -> Bt -> Bk ->…-> B。

(a) (b)

Bt

L Bi Bt Bj+1 B

Bj

L

Bj

Bj+1

Bi

. . . .

. .

B Bk . .

Bk

Bt B

Bj+1

Bk

L Bi Bj Bt Bj+1 Bk B

L

Bj

Bj+1

Bi

. . . .

. .

B

. .

Bk

Bt

(c) (d)

Bt

L Bi

Bj

L

Bj

Bj+1

Bi

. . . .

. .

B Bk . .

L Bi Bj

L

Bj

Bj+1

Bi

. . . .

. .

B

. .

Bk

Bt

Bk

Bt B

Bj+1

圖 3.2 在實體 L 類型角落上區塊輪廓的改變

(28)

同樣地,如圖3.2(d)所示,由於放入的區塊 Bt 的高度和寬度比這個放置的 那個實體 L 類型角落Bj -> Bj+1更大,可以沿著區塊 Bt 的上邊界水平方向的找到 區塊 Bi和沿著區塊 Bt 的右邊界垂直方向的找到區塊 Bk,因此,動態階梯狀輪 廓形成一個外部階梯狀輪廓L ->…-> Bi -> Bt -> Bk ->…-> B,和含有兩個凹 陷 L 類型角落Bi -> Bt 和Bt -> Bk的兩個內部階梯狀輪廓Bi ->…-> Bj 和 Bj+1 ->…-> Bk,和藉由增加一個垂直映對的 L 類型角落 Bj -> Bt 與一個水平映對 的 L 類型角落 Bt -> Bj+1,分別連接Bi ->…-> Bj 與Bj+1 ->…-> Bk這兩個內部階 梯狀輪廓到外部階梯狀輪廓L ->…-> Bi -> Bt -> Bk ->…-> B。

3.2.2 凹陷的 L 類型角落

在動態階梯狀輪廓在放置的區塊序列中,有內部階梯狀輪廓和外部階梯狀 輪廓的階層式的架構。因此,把這個動態階梯狀輪廓定義為一個階層式階梯輪 廓。在階層式階梯輪廓中,存在兩種 L 類型角落(即實體和凹陷),在一個實體 L 類型角落上不存在凹洞,而在凹陷的 L 類型角落上則存在右邊或上面 L 狀的凹 洞。由於定義放置一個區塊在某種 L 類型角落,它意味著區塊的全部或部分的 區域會置於這個選擇的 L 類型角落上。因此,如果這個選擇的 L 類型角落是實 體的,那整個區塊將會置於這個 L 類型角落上。相對地,一個凹陷L 類型角落 Bj -> Bj+1,其中內含一個階層式階梯輪廓的Bj ->…-> Bu ->…-> Bv ->…-> Bj+1的 內部階梯狀輪廓,如果放置一個區塊Bt在凹陷L 類型角落 Bj -> Bj+1上,區塊Bt 可能掉落在這凹陷L類型角落 Bj -> Bj+1裡面,Bj -> Bj+1達到緊密壓縮的處理,區 塊Bt的部分的區域,被放置到相關的L 類型角落 Bj -> Bj+1上,如圖3.2所提,可 以沿著放置區塊 Bt 的上邊界水平方向的找到一個外部區塊 Bi,亦可以沿著區塊 Bt 的右邊界垂直方向的找到一個外部區塊 Bk,此外,沿著放置區塊 Bt 的底邊和 左邊邊界,亦可水平方向的找到一個內部區塊 Bu,和垂直方向的找到一個內部 區塊 Bv,如圖3.3(a)所示,這個凹陷L類型角落 Bj -> Bj+1 的內部空洞,完全地

(29)

被區塊Bt的區域覆蓋了,而內部的階梯狀輪廓Bj ->…-> Bu ->…-> Bv ->…-> Bj+1, 則自最後階層式階梯輪廓完全地被刪除,剩下的階層式階梯輪廓的改變與圖3.2 輪廓的改變類似,如圖3.3(b)所示,這個凹陷L 類型角落 Bj -> Bj+1 的內部空洞,

一部份被區塊Bt的區域覆蓋了,且一部份內部的階梯狀輪廓Bj ->…-> Bu -> Bv, 自最後階層式階梯輪廓被刪除了,剩下的階層式階梯輪廓,透過增加內部水平映 對的L角落Bt -> Bv 去連接一個內部的階梯狀輪廓Bv ->…-> Bk,到外部的階梯狀 輪廓Bi -> Bt -> Bk ->…-> Bj+1,同樣地,如圖3.3(c)所示,這個凹陷L類型角落 Bj -> Bj+1 的內部空洞,一部份被區塊Bt的區域覆蓋了,且一部份內部的階梯狀 輪廓Bu -> Bv ->…-> Bj+1,自最後階層式階梯輪廓被刪除了,剩下的階層式階梯 輪廓,透過增加內部垂直映對的L 角落Bu -> Bt,去連接一個內部的階梯狀輪廓 Bi ->…-> Bu,到外部的階梯狀輪廓Bj ->…-> Bi -> Bt -> Bk

(30)

(a) (b)

(c) (d)

Bt Bj+1

Bk

Bj Bj+1

Bv

Bk

Bt

Bj

Bj+1 Bu

. . . .

. . . .

Bv

. .

Bi

. .

Bk . .

Bt Bj

Bj+1 Bu

. . . .

. .

Bv . . . .

Bi

. .

Bk . .

Bj+1

Bt Bj

Bu

Bv

Bj Bj+1

Bk

Bi

Bi Bk

Bi

Bu

Bj

Bi

Bv

Bt Bj

Bj+1 Bu

. . . .

. . . .

Bv

. .

Bk . .

Bi

. .

Bt Bj

Bj+1 Bu

. .

. . . .

Bv

. .

Bi

. .

Bk

. .

Bt

Bj

Bj Bj+1

Bi

Bu

Bk Bv

Bj+1

Bk Bi

Bu B

u Bt

Bj Bj+1

Bk Bi

Bj Bj+1

Bi

Bk

Bv Bu

Bv

圖 3.3 在凹陷 L 類型角落上區塊輪廓的改變

如圖 3.3(a)、(b)和(c)說明,這個凹陷 L 類型角落 Bj -> Bj+1 的內部空洞,

可以全部或一部份被區塊 Bt的區域覆蓋,因此,在一個緊密的板面規劃中空的空 間,是由 Bj與 Bj+1和區塊 Bt的邊界之間四周圍成的內部階梯輪廓,所形成的封閉 空間,並且從最後階層式階梯輪廓的結構,刪除在 Bj和 Bj+1之間內部階梯輪廓的 全部或部分的架構,在一個緊密的板面規劃中考慮管理所有這個空白空間,當一 個凹陷 L 類型角落上的任何區塊發生變動了,被刪除的內部階梯輪廓,將進一步 收集在一個空間表中,相對地,如果掉落的區塊 Bt,無法全部或一部份覆蓋這凹 陷 L 類型角落 Bj -> Bj+1的內部空洞,而是被放置在 Bu -> Bv L 類型角落上,剩

(31)

下的階層式階梯輪廓,透過增加內部垂直映對的 L 角落 Bu -> Bt,和內部水平映 對的 L 角落 Bt -> Bv,去連接兩個內部的階梯狀輪廓 Bi ->…-> Bu和 Bv ->…-> Bk, 到外部的階梯狀輪廓 Bj ->…-> Bi -> Bt -> Bk->…-> Bj+1,如圖 3.3(d)所示。

3.2.3 緊密的板面規劃的建構與其階層式階梯輪廓

由圖 3.2 和 3.3 中可知區塊擺置輪廓會改變,如果區塊 Bt被放置在一個階 層式階梯輪廓上的一個實體或凹陷 L 類型角落 Bj -> Bj+1上,將可以沿著放置區 塊 Bt 的上面和右邊邊界水平方向的找到一個區塊 Bi,和垂直方向的找到一個區 塊 Bk,對於區塊 Bt擺置後階層式階梯輪廓的改變,L 類型角落 Bj -> Bj+1,會被 兩個相鄰的 L 類型角落 Bj -> Bt 和 Bt -> Bj+1取代,並且二種可能 L 類型角落 Bi -> Bt 和 Bt -> Bk,能夠進一步被建構形成一個階梯輪廓,另外,如果區塊 Bt被 放置在一個凹陷 L 類型角落 Bj -> Bj+1上,亦將可以沿著放置區塊 Bt 的底邊和 左邊邊界水平方向的找到一個內部區塊 Bu,和垂直方向的找到一個內部區塊 Bv,對於區塊 Bt擺置後階層式階梯輪廓的改變,L 類型角落 Bu -> Bv可能會被刪 除,而兩個 L 類型角落 Bu -> Bt 和 Bt -> Bv可能會被插入,因此,對於區塊 Bt 擺置後階層式階梯輪廓的動態改變,至多僅含有刪除兩種 L 類型角落和插入六 種 L 類型角落,如下列 Block_Assignment()程序所示。

(32)

Block_Assignment(Bt, Contour, Bj -> Bj+1) Input: One given fixed block, Bt;

One hierarchical stair contour, Contour;

One position of L-corner, Bj -> Bj+1;

{ Assign one block, Bt ,onto the L-corner, Bj -> Bj+1; Bi = Outer_Horizontal_Visible_Block(Bt, Contour);

Bk = Outer_Vertical_Visible_Block(Bt, Contour);

L_Corner_Deletion(Contour, Bj -> Bj+1);

L_Corner_Insertion(Contour, Bj -> Bt);

L_Corner_Insertion(Contour, Bt -> Bj+1);

L_Corner_Insertion(Contour, Bi -> Bt);

L_Corner_Insertion(Contour, Bt -> Bk);

If (Bj -> Bj+1 is one hollow L-type corner)

{ Bu = Inner_Horizontal_Visible_Block(Bt, Contour);

Bv = Inner_Vertical_Visible_Block(Bt, Contour);

If (Assignment_Case is Fig. 3.3(a))

L_Stair_Deletion(Contour, Bj ->…-> Bu ->…-> Bv ->…->

Bj+1);

If (Assignment_Case is Fig. 3.3(b))

{ L_Stair_Deletion(Contour, Bj ->…-> Bu -> Bv );

L_Corner_Insertion(Contour, Bt -> Bv); } If (Assignment_Case is Fig. 3.3(c))

{ L_Stair_Deletion(Contour, Bu -> Bv ->…-> Bj+1) L_Corner_Insertion(Contour, Bu -> Bt); }

If (Assignment_Case is Fig. 3.3(d)) {L_Corner_Deletion(Contour, Bu -> Bv);

L_Corner_Insertion(Contour, Bu -> Bt);

L_Corner_Insertion(Contour, Bt -> Bv); } }

Output one modified hierarchical stair contour, Contour;

}

Figure

Updating...

References

Related subjects :