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

gate level Verilog 2 iDFG Graph @ perl

做這個其實是要接續 multi-core STA 的 project,想說先把前端的 graph 建出來.後面就比較簡單摟... ref: Multi-Core STA sample case result project https://github.com/funningboy/veri_2_graph

2011年1月3日 星期一

Isolation Cell Insertion for Low Power Design @ perl

在之前 post 中,探討過幾個比較高階的 low power design 技巧. learning plus: DVFS emulator learning plus: power management 4 Linux learning plus: ILP Scheduling with DVFS constrain @ perl learning plus: SmartReflex™ Power and Performance Management ... ... 這邊探討一下 Gate level design 的 lower power 技巧. isolation cell... what's isolation cell? Isolation cells are used to isolate the outputs at the output of the power domain. Power domain is a block in a design that can be switched off when it is not required. When a specific block is switched off, the outputs of the block will have X, if this value is propagated to switched on blocks, then it may lead to undesired behavior or chip failure. To avoid this, isolation cells be used to isolate the switched off block outputs. For example, for an AND gate, if you propagate this X value and if you make the other input of the AND gate to 0, then you will get known values at the power domain output, in the same way, if 1 is specified at other input of OR gate, then also we can get known values at the power domain outputs. Ref: [DFP] what is Isolation Cells? Low Power Flow 底下用 NCTU 大學部的專題 'Isolation Cell Insertion for Low Power Design' 當例子.不過想當初大學應該也做不出來吧...殘念 XD... top design flow 1. Verilog grammar 2. power grammar 3. ISORun 3-1 check power domain connected or not? 3-2 select the ISO type by constrain '-from -to' 3-3 modify the design 4. explore new verilog with ISO inserted and map reports check power domain connected or not? 1. -from case 1-1 find the deepest module by DFS search 1-2 pop back the module and check the output list exist or not? 2. -to case 2-1 find the deepest module by DFS search 2-2 pop back the module and check the input list exist or not? 3. top case 3-1 check the top module connected at "-from -to" constrain project : https://github.com/funningboy/iso_cell Ref: http://adar.ee.nctu.edu.tw/project.php

ATPG stil grammar @ perl

DFT设计流程概述(下) CPU源代码分析与芯片设计及Linux移植:ATPG工具TetraMAX tool supports 1. stil pattern mask 2. stil pattern re-build (pattern cut && re-new) 3. stil pattern viewer 4. stil 2 tstl pattern-gen 5. scan hack(converter 2 ATPG scan-chain) ps: 基於保密原則本程式碼不公開.thx