1 / 26

專題報告

專題報告. Using Multi-Bit Flip-Flops for Clock Power Saving. CAD contest 2010 Problem B1. 指導教授 : 曾奕倫 專題生 : 黃偉倫 陳宗儀. Introduction. Multi-bit flip-flop. Area and power consumption of multi-bit flip-flops. 上圖引用 2010CAD 競賽參考圖. Problem Descriptions. Timing Slack Constraint

Télécharger la présentation

專題報告

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. 專題報告 Using Multi-Bit Flip-Flops for Clock Power Saving CAD contest 2010 Problem B1 指導教授:曾奕倫 專題生:黃偉倫 陳宗儀

  2. Introduction Multi-bit flip-flop Area and power consumption of multi-bit flip-flops 上圖引用2010CAD競賽參考圖

  3. Problem Descriptions Timing Slack Constraint Placement Density Constraint

  4. Timing Slack Constraint • Timing Slack • The temporal difference between the deadline, the ready time and the run time signal • Reduce Routing Length

  5. PlacementDensityConstraint Bin Chip Grid

  6. PlacementDensityConstraint Congested area (>9) is not allowed for new flip-flop insertion. 上圖引用2010CAD競賽參考圖

  7. The Problem Goal The Least total power consumption Least CPU time and memory usage

  8. Code of Data Structure class object { public: bool obj; // 標記 ff or pin string obname; // ff or pin name string orname; // lib or ff name int obvalue; // bit 數 or slack long x; long y; object(); object(const object &); intoperator<(const object &rhs) const; }; class flip_flop_property { public: short bit_number; short power_consumption; short area; string libname; flip_flop_property(); flip_flop_property(const flip_flop_property &); intoperator<(const flip_flop_property &rhs) const; }; Platform : Linux Language:C++ OpenGL class block { public: long x; long y; int value; block(); block(const block &); }; class specify { public: int place_DC; long chip_size_x; long chip_size_y; short grid_size_x; short grid_size_y; int bin_size_x; int bin_size_y; specify(); specify(const specify &); };

  9. Quad tree (3000,3000) FLIP-FLOP3 PIN6 PIN5 PIN2 FLIP-FLOP1 PIN1 BLOCK FLIP-FLOP2 PIN4 PIN3 (0,0)

  10. Quad tree (3000,3000) FLIP-FLOP3 PIN6 PIN5 PIN2 FLIP-FLOP1 PIN1 BLOCK FLIP-FLOP2 PIN4 PIN3 (0,0)

  11. Quad tree (3000,3000) FLIP-FLOP3 PIN6 PIN5 PIN2 FLIP-FLOP1 PIN1 BLOCK FLIP-FLOP2 PIN4 PIN3 (0,0)

  12. Quad tree (3000,3000) 1 FLIP-FLOP3 2 PIN6 PIN5 N=3 X=375/2 Y=375/2 N=2 X=750/2 Y=750/2 N=1 X=1500/2 Y=1500/2 N=0 X=3000/2 Y=3000/2 Level:3 Node 數為: (43+1-1)/(4-1) Level:n Node 數為: (4n+1-1)/(4-1) PIN2 FLIP-FLOP1 PIN1 3 4 BLOCK FLIP-FLOP2 PIN4 PIN3 (0,0)

  13. Quad tree 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 81 82 83 84

  14. Algorithm (1)將副檔名為 input 的檔案讀入 (2)讀完檔後做初始化1.將 Chip 的 X,Y值拿來做除以 2 每除一次 N 值加1 2.若其中一方餘數為1則停止計算 N 值 3.建立一個 Quad tree 大小為 N-level 的 complete tree 4.依據每個 Flip-flop 的座標,放置到每個 leaf 中 (3)檢查 Quad tree是否在 root,若是則執行 (12) (4)從 Quad tree最後一個 leaf 裡的 node 開始合併 (5)檢查是否違反 Density ,若沒有則執行(7) (6)將合併的 Flop-flip 分解後執行 (11) (7)檢查是否與其他原件重疊,若沒有則執行 (9) (8)將 Flip-flop 稍微移動 (9)檢查 Flip-flop 是否達到 Library 所給的最大Flip-flop數 若沒有則執行 (11) (10)將 Flip-flop 放到 finish list (11)將 leaf 剩下的 Node 合併到他的 parent 回到 (3) (12)將剩下的 Node 放入 finish list 中並將檔案寫出

  15. Algorithm (3000,3000) FLIP-FLOP3 PIN6 PIN5 PIN2 FLIP-FLOP1 PIN1 BLOCK FLIP-FLOP2 PIN4 PIN3 (0,0)

  16. Algorithm (3000,3000) FLIP-FLOP3 PIN6 PIN5 PIN2 FLIP-FLOP1 PIN1 BLOCK FLIP-FLOP2 Qtree[56] FLIP-FLOP2 PIN4 Qtree[57] FLIP-FLOP1 Qtree[43] FLIP-FLOP3 PIN3 (0,0)

  17. Algorithm (3000,3000) FLIP-FLOP3 PIN6 PIN5 Qtree[56] FLIP-FLOP2 Qtree[57] FLIP-FLOP1 Qtree[43] FLIP-FLOP3 Qtree[14] FLIP-FLOP2 PIN2 Qtree[13] FLIP-FLOP1 FLIP-FLOP1 Qtree[10] FLIP-FLOP3 PIN1 BLOCK FLIP-FLOP2 Qtree[3] FLIP-FLOP2 PIN4 FLIP-FLOP1 Qtree[2] FLIP-FLOP3 PIN3 (0,0)

  18. Algorithm (3000,3000) FLIP-FLOP3 PIN6 PIN5 Qtree[56] FLIP-FLOP2 Qtree[57] FLIP-FLOP1 Qtree[43] FLIP-FLOP3 Qtree[14] FLIP-FLOP2 PIN2 Qtree[13] FLIP-FLOP1 FLIP-FLOP1 Qtree[10] FLIP-FLOP3 PIN1 BLOCK FLIP-FLOP2 距離小於所有 pin 的 slack Qtree[3] FLIP-FLOP2 PIN4 FLIP-FLOP1 Qtree[2] FLIP-FLOP3 PIN3 (0,0)

  19. Algorithm (3000,3000) FLIP-FLOP3 PIN6 PIN5 Qtree[3] FLIP-FLOP2 FLIP-FLOP1 Qtree[2] FLIP-FLOP3 PIN2 FLIP-FLOP1 PIN1 BLOCK FLIP-FLOP2 PIN4 PIN3 (0,0)

  20. Algorithm (3000,3000) FLIP-FLOP3 PIN6 PIN5 Qtree[3] FLIP-FLOP2 FLIP-FLOP1 Qtree[2] FLIP-FLOP3 PIN2 PIN1 BLOCK PIN4 PIN3 (0,0)

  21. Algorithm (3000,3000) FLIP-FLOP3 PIN6 PIN5 Qtree[3] FLIP-FLOP2 FLIP-FLOP1 Qtree[2] FLIP-FLOP3 PIN2 Qtree[3] NEW FLIP-FLOP PIN1 Qtree[2] FLIP-FLOP3 BLOCK PIN4 NEW FLIP-FLOP Finish_list NEW FLIP-FLOP PIN3 Qtree[0] FLIP-FLOP3 (0,0)

  22. GUI 右圖為簡單的GUI介面 當我們要完成這張圖時, 必須知道: CHIP_SIZE,BIN_SIZE, PIN,FLIP-FLOP,BLOCK

  23. GUIProblem 下圖為片段區域的GUI介面

  24. TestOutput

  25. Data Analysis

  26. END

More Related