Presentation is loading. Please wait.

Presentation is loading. Please wait.

Using Multi-Bit Flip-Flops for

Similar presentations


Presentation on theme: "Using Multi-Bit Flip-Flops for"— Presentation transcript:

1 Using Multi-Bit Flip-Flops for
專題製作 CAD競賽 Using Multi-Bit Flip-Flops for Clock Power Saving 學生:黃士庭 指導教授:曾奕倫 教授

2 Abstract Multi-bit flip-flop是一種有效節省電的實施方法,透過合併 flip-flops可以有效地減少clock dynamic power和flip-flop的總面積。

3 下圖顯示2個single-bit flip-flops合併成1個2-bits flip-flops。
Single-bit flip-flops包含2個inverters, master-latch和slave-latch。

4 結合多個single-bit flip-flops成Multi-bit flip-flop可以減少2個inverters,使flip-flop的total clock dynamic power consumption和面積可以大幅減少。

5 Introduction 1. Problem Description
Multi-bit flip-flops可以降低能源消耗,是因為flip-flop可以用分享inverter來減少inverter的數量,同時使總面積能夠最小。要能夠獲得這些優勢,我們必須確保我們的設計能夠符合某些限制。

6 timing slack的限制:當使用Multi-bit flip-flops來取代1-bit flip-flops或者以上的時候,multi-bit flip-flop會制定新的routing length。 b.placement密度的限制,multi-bit flip-flop的面積會大於1-bit flip-flop,我們必須將它放置在一個新的地點。

7 Implementation Data Structures
struct info { long chip_size_w,chip_size_h; long grid_size_x,grid_size_y; long bin_size_w,bin_size_h; long density; }; 儲存chip的size ,grid的size,bin的size,和一個bin可 容納的density

8 struct chip_info { long bit_num; long power; long area; }; 儲存可以合併的flip flop的資料 bit_num是可合併的個數 power 為此形態的flip flop power是多少 area 為所佔的面積

9 struct chip { long style; string name; long loca_x,loca_y; vector<long> connect; }; 儲存 input 檔所給的flip flop資料 style 為此flip flop型態 name 為此flip flop名稱 loca_x loca_y為此flip lfop位置 connet 為此flip flop跟誰結合了

10 struct pin { long style; long loca_x,loca_y; long slack; string name; string which_flip_flop; }; 儲存 pin 的資料 style 為此pin的型態 是input 或output loca_x loca_y 為此pin的位置 slack 為此pin的slack neme 為此pin的名稱 which_flip_flop 為此pin 連到哪個flip flop

11 struct block { string name; long loca_x,loca_y; long density; }; 儲存block 的資料 name 為此block的名稱 loca_x loca_y為此block的位置 density 為此block所佔的面積

12 struct net { string name; string which_flip_flop; long slack; }; 儲存net 的資料 name 是pin的名稱 which_flip_flop是此pin連到哪個flip flop slack 是此pin的slack

13 Algorithms Algorithm: Input: input_data
此input為所給的file,裡面包含了:library,flip_flop list,pin list,net list, 和block list。 Output: output_data output file包含了:flip flop list,net list,max placement density,和execution time。

14 Begin  1. 將資料讀取進我們所規劃的資料結構裡 2. 計算我們所要合併的次數N Total flip flop<1000 N=5000 Total flip flop>1000 < N=10000 Total flip flop> < N=15000 Total flip flop>15000 < N=20000 Total flip flop>20000 N=25000

15 3. 選取資料裡最長的 slack然後除以bin_size 計算出等等要使用的boundary 4. For 0->N a. 隨機產生我們要合併多少個bit的flip flop 的數字。之後隨機挑選要合併的flip flop 並檢查是否超過要合併的數字。 b. 檢查之後選取到得flip flop是否坐落在第 一個選取到的flip flop周圍的bin。若沒 則重新選取。

16 c. 利用所選取的flip flop的最左下角和最右 上角的座標形成一個四邊形,此四邊形 的範圍裡隨機選取要放置新合併的flip flop的位置。 d. 比對slack是否符合限制,再比對放置 新的flip flop在此位置是否符合density 的限制。 若不符合,goto step.a N++

17 6. 更新資料結構裡的資料 7. 產生output檔

18 3.合併過後的flip flop可以再重複的合 併。
軟體特色 1.會依照使用者所給檔案的flip flop 數來控制要合併的次數 2.會依照使用者所給檔案的slack來計 算boundary 3.合併過後的flip flop可以再重複的合 併。

19 報告完畢 以下為附件:SOURCE CODE

20 Source Code 隨機產生BIT 數 do //rand how many bit we will combine {
move_check = 1; //reset m=0; if(m == 0) // rand_bit = (rand() % max_bit) + 1; for(i=0; i<library.size(); i++) if(rand_bit == library[i].bit_num && rand_bit != 1) rand_bit_style = library[i].name; m=1; } }while(m != 1);

21 確認邊界條件和重複選取,或已經結合了 do { bin_check = 0;
rand_temp = rand() % flip_flop.size(); bin_num_x = flip_flop[rand_temp].loca_x/para[0].bin_size_w; bin_num_y = flip_flop[rand_temp].loca_y/para[0].bin_size_h; if(bin_num_x - bin_boundary < 0) boundary_lx = 0; else boundary_lx = bin_num_x - bin_boundary; if(bin_num_x + bin_boundary > para[0].chip_size_w/para[0].bin_size_w) boundary_rx = para[0].chip_size_w/para[0].bin_size_w; boundary_rx = bin_num_x + bin_boundary; ……. if(bin_check == 1) for(j=0, rt = flip_flop[rand_temp].connect.begin(); rt < flip_flop[rand_temp].connect.end(); j++, rt++) { if(rand_temp == flip_flop[rand_temp].connect[j]) { bin_check = 0; break; }

22 for(m=0, rt2 = rand_ff.begin(); rt2 < rand_ff.end(); m++, rt2
{ if(rand_temp == rand_ff[m]) bin_check = 0; break; } if(rand_ff_times++ > 99)

23 擺放新的位置 do { n++; move_check = 1;
posi_add_x = rand() % (max_x - min_x); //compute move value posi_add_y = rand() % (max_y - min_y); while(posi_add_x % para[0].grid_size_x !=0) posi_add_x = rand() % (max_x - min_x); } while(posi_add_y % para[0].grid_size_y !=0) temp_posi_x = min_x + posi_add_x; temp_posi_y = min_y + posi_add_y; for(i=0, ft = flip_flop.begin(); ft < flip_flop.end(); i++, ft++) check_all = 0; if(temp_posi_x == flip_flop[i].loca_x && temp_posi_y == flip_flop[i].loca_y

24 while(posi_add_y % para[0].grid_size_y !=0)
{ posi_add_y = rand() % (max_y - min_y); } temp_posi_x = min_x + posi_add_x; temp_posi_y = min_y + posi_add_y; i = 0; //reset ft = flip_flop.begin(); //reset

25 比對SLACK for(rt=rand_ff.begin(),i=0;rt<rand_ff.end();rt++,i++) {
for(nt=net_info.begin(),j=0;nt<net_info.end();nt++,j++) if(net_info[j].which_flip_flop == flip_flop[rand_ff[i]].name) for(pt=pin_info.begin(),m=0;pt<pin_info.end();pt++,m++) if(pin_info[m].name == net_info[j].name) final_slack = pin_info[m].slack + abs(flip_flop[rand_ff[i]].loca_x - pin_info[m].loca_x) + abs(flip_flop[rand_ff[i]].loca_y - pin_info[m].loca_y) - abs(pin_info[m].loca_x - temp_posi_x) - abs(pin_info[m].loca_y - temp_posi_y); if(final_slack < 0) move_check = 0; break; } } } } if(move_check == 0) break; if(move_check == 0)

26 比對density是否合乎規定 if(move_check == 1) //if slack OK {
bin_num_x = (min_x + posi_add_x)/para[0].bin_size_w; bin_num_y = (min_y + posi_add_y)/para[0].bin_size_h; last_density = bin_array[bin_num_x][bin_num_y]; for(rt=rand_ff.begin(),i=0;rt<rand_ff.end();rt++,i++) for(lt=library.begin(),j=0;lt<library.end();lt++,j++) if(library[j].name == flip_flop[rand_ff[i]].style) bin_array[bin_num_x][bin_num_y] = bin_array[bin_num_x][bin_num_y] - library[j].area; } } if(library[j].bit_num == rand_bit) bin_array[bin_num_x][bin_num_y] = bin_array[bin_num_x][bin_num_y] + library[j].area; break; if(bin_array[bin_num_x][bin_num_y] > para[0].density bin_array[bin_num_x][bin_num_y] = last_density; move_check = 0;


Download ppt "Using Multi-Bit Flip-Flops for"

Similar presentations


Ads by Google