1 / 15

專題簡報

專題簡報. 指導教授 曾奕倫 學 生 江秋紜 鐘孟浩. Obstacle-Avoiding Rectilinear Clock Routing with Preferred Directions. 目標概述. 在超大型積體電路 (VLSI) 的 IC 設計中, clock routing 一直是一個很重要的議題,在這個專題裡,題目便將原本極度複雜的 routing 問題簡化。

becky
Download Presentation

專題簡報

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 專題簡報 指導教授 曾奕倫 學 生 江秋紜 鐘孟浩

  2. Obstacle-Avoiding Rectilinear Clock Routing with Preferred Directions

  3. 目標概述 • 在超大型積體電路(VLSI)的IC設計中,clock routing一直是一個很重要的議題,在這個專題裡,題目便將原本極度複雜的routing問題簡化。 • 主要是尋找n-pin net的最短連線,並且以水平線與垂直線來做連接,來避免發生傾斜線段。在連線的時候,必須要避過題目所給定的障礙物,這邊的障礙物就代表了超大型積體電路(VLSI)的IC設計內之晶片。

  4. 目標概述 • 在不同的layer,有它連線的方向性,若不遵守其方向性,則所需要花費的cost將會非常大。 • 在switch內,則可以行走的方向會剛好和原本那層所規定的方向相反,此外,switch的邊緣也都是可以行走的,這些走法所花費的cost都是極小的。 • 在超大型積體電路(VLSI)的IC設計中極為重要,它可以手動地增加switch direction region來增加連線的可能性,最常用到此技術的就是當IC中有許多晶片時。

  5. 目標概述 • 除了所有點連接起來的線要越短越好之外,另外要考慮的問題就是clock skew的問題。 • 即要讓同一個net中的每一個sink,與source的連線長度盡量一致。 • 如此才不會發生當有些點已經收到訊號了,另外有些點要等待很久才會收到訊號,這樣容易產生出來的結果不正確。

  6. 問題描述 • 在一個三維空間中,最多十五層的,由下往上分別編號為1、2、3、…、15。每一層的面積大小最大是10000000* 10000000,每個Net最多要被連接的點是二十個,並且在每一個測試檔裡,Net最多只會有10000條。

  7. 問題描述 • Net中的所有點都必須以水平線和垂直線連接起來,並且需要避開障礙物。每一層layer除了有特定的線段方向性必須遵守外,它還有routing pitch必須要遵守,。

  8. 問題描述 • 連線線段,不可以和其他的Net相交,簡單來說:就是對於A Net而言,B Net的連線線段可以當作是A Net的障礙物。 • 當將所有Net的所有點全部連接後,要計算出total wire length和total routing cost,前者表示所用到的實際線段,後者表示整個系統的clock skew,這兩者都是越小越好。

  9. 流程圖

  10. 程式架構 • 在這程式中, 我們使用多種不同的結構來儲存不同的資料 • struct NET • struct NETINFO //存每條線的資訊 • struct LAYER struct SWITCH struct VIA • struct OBS

  11. 程式規劃 • 我們把程式Functional, 切成分開的小程式以利管理 • intCheckCoverOBS(int x1, int y1, int z1, int x2, int y2, int z2); //檢查線段是否在obs裡 • intCheckCoverSWITCH(int x1, int y1, int z1, int x2, int y2, int z2); //檢查線段是否在switch裡 • intTouchNet(int x1, int y1, int x2, int y2, int layer1, int layer2, intnow_net); //檢查是否有碰到其他線段 • intCheckNetEnd(intin_x, intin_y, intin_layer, intout_x, intout_y, intout_layer); //檢查連線是否到終點

  12. 程式規劃 • void CheckNetInfo(intnow_net, int count); //檢查Net Info是否正確 • void InsertNet(int x, int y, int layer, intnow_net, int count); //插入新的點 • void DelNet(intnow_net, int count); //刪除不需要的點 • intCalDistance( int x1, int y1, int x2, int y2); //計算兩點間距離 • intCalPitch(int layer1, int layer2); //計算可以跳躍的pitch位置 • void Dijkstra(int count); //計算最短路徑, 以此作為依據來決定先後連接順序

  13. 程式規劃 • void BasicSortNet( int count); //基本線排序 • void ConnectNet(int count, intnow_number, intcon_number); //把NET連起來 • void Algorism(int count); //演算法 • void Wirelength(intnow_net, intnow_number, intcon_number); //算全部線段長 • void RoutingCost(intnow_net); //算routing cost

  14. 專題成果 • 以下是我們的一個執行結果 : Input : 5層layer, 2個switch, 3條net, 3個障礙物 Output : wirelength 6610 routingcost 10820

  15. 謝謝指教

More Related