260 likes | 392 Views
專題報告. 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
E N D
專題報告 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 Placement Density Constraint
Timing Slack Constraint • Timing Slack • The temporal difference between the deadline, the ready time and the run time signal • Reduce Routing Length
PlacementDensityConstraint Bin Chip Grid
PlacementDensityConstraint Congested area (>9) is not allowed for new flip-flop insertion. 上圖引用2010CAD競賽參考圖
The Problem Goal The Least total power consumption Least CPU time and memory usage
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 &); };
Quad tree (3000,3000) FLIP-FLOP3 PIN6 PIN5 PIN2 FLIP-FLOP1 PIN1 BLOCK FLIP-FLOP2 PIN4 PIN3 (0,0)
Quad tree (3000,3000) FLIP-FLOP3 PIN6 PIN5 PIN2 FLIP-FLOP1 PIN1 BLOCK FLIP-FLOP2 PIN4 PIN3 (0,0)
Quad tree (3000,3000) FLIP-FLOP3 PIN6 PIN5 PIN2 FLIP-FLOP1 PIN1 BLOCK FLIP-FLOP2 PIN4 PIN3 (0,0)
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)
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
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 中並將檔案寫出
Algorithm (3000,3000) FLIP-FLOP3 PIN6 PIN5 PIN2 FLIP-FLOP1 PIN1 BLOCK FLIP-FLOP2 PIN4 PIN3 (0,0)
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)
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)
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)
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)
Algorithm (3000,3000) FLIP-FLOP3 PIN6 PIN5 Qtree[3] FLIP-FLOP2 FLIP-FLOP1 Qtree[2] FLIP-FLOP3 PIN2 PIN1 BLOCK PIN4 PIN3 (0,0)
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)
GUI 右圖為簡單的GUI介面 當我們要完成這張圖時, 必須知道: CHIP_SIZE,BIN_SIZE, PIN,FLIP-FLOP,BLOCK
GUIProblem 下圖為片段區域的GUI介面