You are on page 1of 7

Routing with Cell Movement Advanced

R08943170 楊宇禾
R08943149 楊宜達

1. Data Structure

每種 input 會有自己的 class(Grid、cell、net、layer……),但大多數的

data 都在 grid、cell 與 net 上,在 cell 中可以得知座標位置、哪些 pin 分

別被那些 net 連接、demands 等等。而 net 中包含連接的 cells 的 pin、

segments。而 gird 則是依 input 的最大座標去造 gird 的動態陣列,每一

格都有上述資料。

2. Algorithm

在讀完 input 後,會先後單獨對每一個 cell 刪除連接的 net 直到分岔或遇

到另一個 cell,再從該 cell 以 Lee’s algorithm 依 constraint 去搜尋最近

的 net 的點並記錄順序,一旦找到後依紀錄將 net 寫入 grid,以保證初始

化 routing 是最佳化,
上圖以 net6 及 net1 示意最佳化後路線

接著建立 netarray、cellarray、gridarray 的備分,以供後續還原使用。

我們採用退火法,隨機生成隨機數量合法的 cell 及 movement 座標,如

果 cost 小於目前的 cellid 及座標則更新最佳結果,不論 cost 小於或大於

都還原。

因我們已將初始結果最佳化,所以只須處理 cell 的單邊 net,每次退火時

採用的方法與上述初始化相同:從該座標依序移除該 cell 連接的 net 直到

遇到其他 cell 或分岔,再從新座標以 Lee’s 找到最近的該 net 的點並連

接,最後溫度冰點時儲存的 cell 與座標即為我們的解。

3. Result

 Case1
NumMovedCellInst 1

CellInst C7 3 5

NumRoutes 100

2 2 1 2 2 2 N1

4 1 1 4 1 2 N1

4 4 1 4 4 2 N1

2 2 2 3 2 2 N1

2 2 2 2 2 1 N1

3 2 2 4 2 2 N1

3 2 2 2 2 2 N1

4 1 2 4 1 3 N1

4 1 2 4 1 1 N1

4 2 2 3 2 2 N1

4 2 2 4 2 3 N1

4 4 2 4 4 3 N1

4 4 2 4 4 1 N1

4 1 3 4 2 3 N1

4 1 3 4 1 2 N1
4 2 3 4 3 3 N1

4 2 3 4 1 3 N1

4 2 3 4 2 2 N1

4 3 3 4 4 3 N1

4 3 3 4 2 3 N1

4 4 3 4 3 3 N1

4 4 3 4 4 2 N1

2 4 1 2 4 2 N2

3 4 1 3 5 1 N2

3 4 1 3 4 2 N2

3 5 1 3 4 1 N2

3 5 1 3 5 2 N2

4 3 1 4 4 1 N2

4 3 1 4 3 2 N2

4 4 1 4 5 1 N2

4 4 1 4 3 1 N2

4 4 1 4 4 2 N2

4 5 1 4 4 1 N2

4 5 1 4 5 2 N2

5 2 1 5 3 1 N2

5 3 1 5 2 1 N2

5 3 1 5 3 2 N2

2 4 2 3 4 2 N2

2 4 2 2 4 1 N2

3 4 2 4 4 2 N2

3 4 2 2 4 2 N2

3 4 2 3 4 1 N2

3 5 2 4 5 2 N2

3 5 2 3 5 1 N2

4 3 2 5 3 2 N2

4 3 2 4 3 1 N2

4 4 2 3 4 2 N2

4 4 2 4 4 1 N2

4 5 2 3 5 2 N2

4 5 2 4 5 1 N2

5 3 2 4 3 2 N2

5 3 2 5 3 1 N2

2 2 1 2 3 1 N3
2 2 1 2 2 2 N3

2 2 1 2 2 2 N3

2 3 1 2 4 1 N3

2 3 1 2 2 1 N3

2 4 1 2 3 1 N3

2 2 2 3 2 2 N3

2 2 2 2 2 3 N3

2 2 2 2 2 1 N3

2 2 2 3 2 2 N3

2 2 2 2 2 3 N3

2 2 2 2 2 1 N3

3 2 2 4 2 2 N3

3 2 2 2 2 2 N3

3 2 2 2 2 2 N3

4 2 2 5 2 2 N3

4 2 2 3 2 2 N3

5 2 2 4 2 2 N3

2 2 3 2 2 2 N3

2 2 3 2 2 2 N3

2 2 1 2 2 2 N4

4 1 1 4 2 1 N4

4 2 1 4 1 1 N4

4 2 1 4 2 2 N4

2 2 2 3 2 2 N4

2 2 2 2 2 1 N4

3 2 2 4 2 2 N4

3 2 2 2 2 2 N4

4 2 2 3 2 2 N4

4 2 2 4 2 1 N4

2 2 1 2 2 2 N5

5 2 1 5 2 2 N5

2 2 2 3 2 2 N5

2 2 2 2 2 1 N5

3 2 2 4 2 2 N5

3 2 2 2 2 2 N5

4 2 2 5 2 2 N5

4 2 2 3 2 2 N5

5 2 2 4 2 2 N5
5 2 2 5 2 1 N5

2 4 1 2 5 1 N6

2 5 1 2 4 1 N6

2 5 1 2 5 2 N6

3 5 1 3 5 2 N6

2 5 2 3 5 2 N6

2 5 2 2 5 1 N6

3 5 2 2 5 2 N6

3 5 2 3 5 1 N6

 Case2

NumMovedCellInst 2

CellInst C3 4 3

CellInst C6 4 2

NumRoutes 32

4 1 1 4 2 1 N1

4 2 1 4 3 1 N1

4 2 1 4 1 1 N1

4 3 1 4 4 1 N1
4 3 1 4 2 1 N1

4 4 1 4 3 1 N1

3 3 1 3 4 1 N2

3 4 1 3 3 1 N2

3 4 1 3 4 2 N2

4 4 1 4 4 2 N2

3 4 2 4 4 2 N2

3 4 2 3 4 1 N2

4 4 2 3 4 2 N2

4 4 2 4 4 1 N2

3 3 1 3 3 2 N3

3 3 2 3 3 3 N3

3 3 2 3 3 1 N3

3 3 3 3 3 2 N3

3 3 1 3 3 2 N4

4 3 1 4 3 2 N4

3 3 2 4 3 2 N4

3 3 2 3 3 1 N4

4 3 2 3 3 2 N4

4 3 2 4 3 1 N4

4 2 1 4 3 1 N5

4 2 1 4 2 2 N5

4 3 1 4 2 1 N5

3 2 2 4 2 2 N5

4 2 2 3 2 2 N5

4 2 2 4 2 1 N5

4 1 1 4 2 1 N6

4 2 1 4 1 1 N6

End

You might also like