2011年1月31日 星期一

3D IC Design Partitioning with Power Consideration pt1

在新世代的 IC design 上, 為了減少 place and route 的 cost. 連 IC design 也都要搞個 3D .不過跟 3D 電視不一樣拉..XD 當然在 3D IC design 上最大的挑戰莫過於 TSV cell inserted. 但 TSV inserted 會影響到 power 跟 area 的 cost. 所以底下我們就拿 IC/CAD 的題目 3D IC Design Partitioning with Power Consideration 當sample. Refs: [PDF] 3D IC 設計簡介 3D IC design power delivery network analysis challenges [PDF] 3D IC & TSV - Présentation PowerPoint AVL tree、B-tree http://www.wretch.cc/blog/tigereye3010 http://en.wikipedia.org/wiki/B-tree Design flow step1. parser cell library, verilog, power library step2. power && area calculate dynamic + static power for cell port area for cell module step3. iGABFS algorithm partition and cluster with iGA-BFS search based step4. explore and reoprt explore the partition result and report 這邊列出可能會遇到的問題跟解決方式 Q1. 在 BFS search 下會遇到 flip-flop feedback loop 的case. 導致無窮回圈. R1: 加入 boundary condition or cut edge in flip-flop Q2. 如何決定每個 partition layer 的 cluster vertex R1. 利用 iGA-BFS search(Genetic algorithm + BFS area constrain search), 因為在 cell library 下會定義每個 cell 的 power 跟 area 和 partition layer @ TSV cell inserted. 所以我們可以大概估算出每個 layer 大概所需要的 area. 可先用 BFS search update 每個 vertex 的 layer, power, area, neighbor numbers ... 得到這些 cost function 之後, 就可以用 greedy 的方式. 把vertex 周圍的 vertex 做量化做 sort . ex: neighbor number > layer > power > area ... 當然你也可以定義你的 cost function. 這邊我們會用 rand 的方式 先選定一個 vertex 跟 layer 在藉由 greedy 的方式 expand 我們的 cluster tree. 等全部的 vertex 決定好 layer 之後. 我們為了確保這組解空間是最佳的解集合, 我們會透過 Genetic algorithm 的方式找出最適當的解. 畢竟這是個多目標最佳化的題目.要 TSV number 愈少, area 愈小, 真是個貪心的題目阿.... Refs:
gate level Verilog 2 iDFG Graph @ perl Multi-Core STA floorplanning && partition case study

2011年1月8日 星期六

Multi-Core STA

相信有做過 DFT(design for testing)的人對 (STA) static timing report 應該不陌生.必須先透過 STA 把有效的 paths extract 出來.再把這些 path 餵到 ATPG (TMAX) 做 pattern gen 的動作. 底下就用 IC/CAD contest 的題目來做個簡單的 STA report. step flows 1. verilog parser parse verilog 2 our data based. 2. set timing constrain 2-1 require_time 2-2 slack time 3. run Multi core STA for timing report and input vectors. 3-1 pop up the top DFG graph. 3-1-1 DFG graph include "vertex, edge, logic, delay ..." types. 3-2 using the (BFS) search algorithm 3-2-1 finding the true && control path in each gate input and out logic. 3-3 using the (DFS) search algorithm 3-3-1 finding the valid path,which fit the timing constrain. 4. report the valid paths and input vectors. sample results:
{ Path 1 }
A true Path list {
=================================================
pin     type    incr    path_delay
=================================================
A[0]    (in)    0       0       r
U10/A   NAND2   0       0       r
U10/Y   NAND2   1       1       f
U9/A    NOT1    0       1       f
U9/Y    NOT1    1       2       r
U7/A    NAND2   0       2       r
U7/Y    NAND2   1       3       f
U4/A    NAND2   0       3       f
U4/Y    NAND2   1       4       r
M[1]    (out)   0       4       r
=================================================
Data Required time                      10
Data Arrival time                       4
=================================================
Slack                   6
}
Input Vector {
A[0]-TOP = r
A[1]-TOP = 0
B[0]-TOP = 0
B[1]-TOP = 1
}
project: https://github.com/funningboy/muti_sta