• 沒有找到結果。

維持界限內的時脈差異條件下之由上而下 ADB 分佈…

在文檔中 中 華 大 學 (頁 49-59)

第四章 限制最大延遲時間條件下的 ADB 設定

4.2 維持界限內的時脈差異條件下之由上而下 ADB 分佈…

40

41

ADB 移除。給定 Bi為根的子樹,其中連接了 s 個 ADB,{ ADB1 ,.., ADBs },其指定 的延遲數值分別為 v1, v2 ,.., vs,且有部分的 ADB 指定的延遲數值為最小的延遲數值,

v

min。透過 ADB 的移除運算,可進一步移除指定延遲數值為 vmin的 ADB。經過 ADB 的移除運算後,緩衝器,Bi,被替換成 ADBi,並指定延遲數值,vmin,於 ADBi上,

已移除的 ADB 替換成一般緩衝器,而其餘未移除的 ADB,{ ADB1 ,.., ADBs },指定 的延遲數值為 vmin

Bi

ADB1 ADBs

+vs +v1

+vmin +vmin

ADBi

ADB1 ADBs

+v1-vmin

+vmin

+vs-vmin

圖 4-13 ADB 的移除運算

在前一節的 ADB 設定中,以由下而上的流程設定 ADB,在各分支點上插入 ADB 並指定適當的延遲數值,使時脈差異達到最小化。然而這一系列的 ADB 設定只在各 子樹中作區域地局部處理,而在 ADB 的數量上沒有達到最小化的結果,且指定的延 遲數值也沒有最小化,因此有部分的 ADB 為多餘的 ADB(redundant ADB)。本演算法 的目標是將這些多餘的 ADB 從時脈樹中移除(eliminate),且不違反差異的限制條件。

換言之即在維持界限內的時脈差異的大小之條件下,將多餘的 ADB 移除。由於時脈 差異越小,需要使用更多的 ADB,或指定 ADB 更大的延遲數值,而這將使 ADB 所 占用的佈局面積變得更大,並浪費額外的硬體資源。假設設定的差異界限為 B,藉由 設定的差異界限之大小,將最小化的時脈差異釋放界限,使時脈差異只要小於或等於

B 即滿足差異的限制條件。給定經過 ADB 設定後的緩衝器時脈樹,T

ADB,在 TADB

位於根節點的緩衝器之延遲時間區間為[lropt

, u

ropt],而時脈樹最小化的時脈差異為 uropt

-lropt,設定的差異界限,B,必須大於或等於時脈差異,uropt-lropt,才可滿足差異的

42

限制條件。根據差異界限,B,的大小,可在根節點上計算出相對的延遲時間區間 (Related latency range),[uropt-B , uropt]。給定任意的 ADB,ADBi,其指定的延遲數值 為 vi,延遲時間區間為[li , ui]。根據相對延遲時間區間之大小,計算出 ADBi的彈性範 圍(slack range)為[sli , sui]=[(uropt-B)-li

, u

ropt-ui],代表 ADBi指定的延遲數值,vi, 可增加或減少的彈性範圍。

在接下來的步驟中,透過由上而下的流程計算時脈樹中所有位於最頂層的 ADB 之彈性範圍,在已知彈性範圍的條件下,計算所有位於最頂層的 ADB 的延遲範圍 (delay range)為[dli , dui]=[sli

+v

i

, su

i

+v

i]。延遲範圍代表 ADBi指定的延遲數值,vi可能的範圍。若 ADBi的延遲範圍,[dli , dui ],為非空集合(non-empty)時,則可藉由 ADB 的分佈運算,將各個位於最頂層的 ADB 的延遲範圍分佈至其分支中,並透過重 複地分佈這些分支 ADB 的延遲範圍至對應的分支中,直到分佈至時脈樹中位於最底 層的緩衝器上為止。如圖 4-14 所示,ADBi的延遲範圍為[dli , dui ],透過 ADB 的分佈 運算,將延遲範圍分佈至 ADBi的分支中。而 ADBi將被替換成一般緩衝器,Bi,且 s 個初始的 ADB,{ ADB1

,.., ADB

s },的延遲範圍分別為[dli

+v

1

, du

i

+v

1] ,.., [dli

+v

s

, du

i

+v

s],而引申 ADB,ADB0

, ADB

s+1 ,.., ADBs+t,其延遲範圍為[dli , dui]。

ADBi

FF1 FFr

ADB1

Bt

ADBs

B1

+vs

+v1

[dli, dui]

Bi

ADB1 ADBs

FF1 FFr

ADBs+1 ADBs+t

ADB0

[dli, dui]

[dli, dui] [dli, dui] [dli+v1, dui+v1]

[dli+vs, dui+vs] ADB

的分佈運算

圖 4-14 分佈 ADB 的延遲範圍至分支中

給定經過 ADB 設定後的緩衝器時脈樹,TADB,其中有 m 個一般緩衝器及 n 個正

43

反器,根據 TADB的資訊定義 ADB 連結圖(ADB-connection graph),GADB(VADB , EADB),

其建構方法如下所述:在 VADB中各端點(vertex),vi,代表在時脈樹中的 ADB,而在

E

ADB中的各個邊(edge),ei,代表時脈樹中介於兩個連接的 ADB 之間的連接關係。針 對時脈樹中所有位於最頂層的 ADB,在已知彈性範圍的條件下,若其延遲範圍為非 空集合時,則以由上而下的流程持續分佈 ADB 的延遲範圍至其分支中,直到分佈至 時脈樹中位於最底層的緩衝器上為止。藉由下列的 ADB 分佈(ADB_Distribution)演算 法來分佈 ADB 的延遲範圍:

以下舉例說明 ADB 分佈演算法的步驟,假設給定的差異界限為 7,緩衝器,B1, 在兩種功率模式下之相對延遲時間區間分別為[7 , 14]及[8 , 15]。根據相對延遲時間區 間之大小,可得所有位於最頂層的 ADB 之彈性範圍。以模式 1 而言,如圖 4-10 所示 之時脈樹,位於最頂層的 ADB 分別為 ADB1及 ADB3,其延遲範圍分別為[1 , 3]及[-0.5 , 5]。藉由 ADB 的分佈運算,將 ADB1及 ADB3的延遲範圍分佈至分支中,並持續分佈 至時脈樹中位於最底層的緩衝器上為止。於 ADB1為根的子樹中,可得所有位於最底 層的分支 ADB 分別為 ADB2、ADB6及虛擬的 ADB,ADB0,其延遲範圍分別為[4.5 , 6.5]、

[1 , 3]及[1 , 3]。於 ADB3為根的子樹中,可得所有位於最底層的分支 ADB 分別為 ADB4

及 ADB5,其延遲範圍分別為[1 , 6.5]及[-0.5 , 5]。

另一方面,在模式 2 中,如圖 4-11 所示之時脈樹,位於最頂層的 ADB 分別為 ADB 分佈演算法

輸入:緩衝器時脈樹,TADB,其中共有 m 個緩衝器和 n 個正反器,及各正反器的 初始延遲時間;

{ 根據 TADB建構 ADB 連接圖,GADB;

將 TADB中所有 ADB 以拓樸排序的方式儲存在 GADB中;

for (所有位於時脈樹中最頂層的 ADB)

{ 持續地分佈延遲範圍至分支中,直到時脈樹中最底層的緩衝器上為止; } 輸出所有位於最底層 ADB 的延遲範圍;

}

44

ADB

1及 ADB2,其延遲範圍分別為[2 , 5]及[2 , 6]。藉由 ADB 的分佈運算,將 ADB1

及 ADB2的延遲範圍持續地分佈至時脈樹中位於最底層的緩衝器上為止。於 ADB1根的子樹中,可得所有位於最底層的分支 ADB 分別為 ADB5、ADB6及虛擬 ADB,ADB0其延遲範圍皆為[2 , 5]。於 ADB2為根的子樹中,可得所有位於最底層的分支 ADB 分 別為 ADB3及 ADB4,其延遲範圍分別為[4.5 , 8.5]及[2 , 6]。

FF5 FF6 FF4

FF3 FF2

FF1 FF7 FF8 FF9 FF10 FF11 FF12

B1

B2

B3

B4 B5 B6 B7

B8 B9 B10

模式 1 9 12 8.5 10.5 10.5 13.5 10 14 10 11 10.5 11.5 ADB5 [4.5 , 6.5]

B0

ADB0 ADB2

ADB4 ADB6

[1 , 3] [1 , 3]

[1 , 6.5] [-0.5 , 5]

圖 4-15 模式 1 下的 ADB 的分佈運算

FF5 FF6

FF4

FF3

FF2

FF1 FF7 FF8 FF9 FF10 FF11 FF12

B1

B2

B3

B4 B5 B6 B7

B8 B9 B10

模式 2 10.5 12.5 11.5 12.5 9.5 13.5 10 15 9.5 12.5 10 12

B0

ADB0 ADB5

ADB3 ADB4

[2 , 5]

[4.5 , 8.5]

ADB6

[2 , 5] [2 , 5] [2 , 6]

圖 4-16 模式 2 下的 ADB 的分佈運算

45

4.3 維持界限內的時脈差異條件下之由上而下 ADB 移除

在上一節的步驟中,可得時脈樹中所有位於最底層的分支 ADB 之延遲範圍。藉 由在這些延遲範圍中找到交集的延遲範圍,利用 ADB 的移除運算,進一步將多餘的 ADB 移除。演算法可分成下面兩個步驟:

第一步驟:ADB 的移除運算(ADB elimination) 第二步驟:ADB 的延遲指定(Delay assignment)

首先在第一個步驟中,如圖 4-17 所示,給定 Bi為根的子樹,其中連接了 s 個初 始 ADB,{ ADB1 ,.., ADBs },其指定的延遲數值分別為{v1, v2 ,.., vs},延遲範圍分別為 [dli

+v

1

, du

i

+v

1] ,.., [dli

+v

s

, du

i

+v

s],及 t+1 個引申 ADB,{ADB0, ADBs+1 ,.., ADBs+t},

其延遲範圍為[dli , dui]。根據 ADBi的彈性差值(Slack Difference),dui

-dl

i,之大小,判 斷是否可找到各分支 ADB 的延遲範圍之間的交集。若在 s 個初始 ADB 中,其指定的 延遲數值小於 ADBi的彈性差值,換言之 vj

du

i

-dl

i(1js),則可在各分支 ADB 的延遲 範圍中找到共同交集的延遲範圍;但若 vj>dui

-dl

i,則無法找到交集。假設 ADB 可調 的延遲數值範圍為{D1, D2

,.., D

p},透過下面的設定方式,可計算出共同交集的延遲 範圍為:

[ dli

+v

c , dui] ( dli

+v

c

D

p , vc=Max{ vj | vj

du

i

-dl

i

, 1js } )。

ADBi

FF1 FFr ADB1

Bt

ADBs

B1

Bj

+v1 +vs

ADB 的精簡運算 Bi

ADB1 ADBs

FF1 FFr

ADBs+1 ADBs+t

ADB0

[dli, dui]

[dli, dui] [dli, dui] [dli+v1, dui+v1]

[dli+vs, dui+vs]

[dli+vc, dui]

圖 4-17 找到共同交集的延遲範圍,並移除多餘的 ADB

給定任意的分支 ADB,ADBj (1js),其指定的延遲數值為 vj,若 vj

du

i

-dl

i,則 可將 ADBj移除;若 vj>dui

-dl

i,則保留 ADBj,並指定延遲數值,vj。如圖 4-17 右所

46

示,經過 ADB 的移除運算後,所有引申 ADB 將被移除,且緩衝器,Bi,被替換成

ADB

i,其延遲範圍為[dli

+v

c , dui]。

透過重複地執行 ADB 移除運算,以由下而上的流程將時脈樹中所有位於最頂層 的 ADB 為根的子樹中多餘的 ADB 移除,並將各分支 ADB 共同交集的延遲範圍向上 吸收到根節點中,最後可得所有位於最頂層的 ADB 之更新後的延遲範圍。

接下來,在第二個步驟中,如圖 4-18 所示,根據各分支 ADB 所共同交集的延遲 範圍,從 ADB 可調的延遲數值範圍中找到最小的不連續延遲數值,Dmin,並指定於

ADB

i上。透過下面的定義來找到最小的延遲數值,Dmin

D

min = Min { Dk | dli

+ v

c

D

k

du

i , 1

kp }。

ADB 的延遲指定 ADBi

FF1 FFr

ADB1

Bt ADBs

B1 Bj

+v1 +vs

[dli+vc, dui]

ADBi

FF1 FFr

ADB1

Bt

ADBs B1

Bj

+v1 +vs

+Dmin

圖 4-18 指定位於最頂層 ADB 的延遲數值

最後若仍有剩餘的彈性差值,則可對時脈樹中指定延遲數值為最大值的 ADB 作 延遲數值最小化的運算,進一步將 ADB 指定的延遲數值作最小化。透過這樣的方式,

使 ADB 可調的延遲數值範圍中的延遲數值之上限降低,使 ADB 消耗的電容減少,

進一步降低 ADB 占用的佈局面積。針對指定延遲數值為最大值的 ADB,根據其延遲 範圍,從 ADB 可調的延遲數值範圍中找到最小的延遲數值,Dmin,透過下面的定義 決定 Dmin的大小:

D

min = Min { Dk | dli

D

k

du

i , 1

kp }。

給定緩衝器時脈樹,TADB,針對所有位於時脈樹中最頂層 ADB 為根的子樹,以 由下而上的流程找到子樹中各分支 ADB 的延遲範圍之交集,並將共同交集的延遲範

47

圍向上吸收到根節點中,進一步移除分支 ADB,重複地執行步驟直到時脈樹中位於 最頂層的 ADB 為止。最後在各子樹中將多餘的 ADB 移除,而各個位於最頂層的 ADB 也重新指定適當的延遲數值。透過下列的 ADB 移除演算法完成此步驟:

以下舉例說明 ADB 移除演算法的步驟,以模式 1 而言,如圖 4-19 所示,首先對 右邊三角形的 ADB 子樹作運算,ADB4及引申 ADB,ADB5,的延遲範圍分別為[1 , 6.5]

及[-0.5 , 5]。由於兩者的延遲範圍之間有共同交集,透過 ADB 的移除運算可將 ADB4

及 ADB5移除,並得到交集的延遲範圍為[1 , 5]。落於這個延遲範圍中,從 ADB 可調 的延遲數值範圍內找到最小的延遲數值,1.5,並重新指定 ADB3的延遲數值為 1.5。

接下來再對左邊三角形的子樹作運算,ADB2及引申 ADB,ADB6的延遲範圍分別為 [4.5 , 6.5]及[1 , 3]。由於兩者的延遲範圍之間無任何交集,因此保留 ADB2,並指定原

ADB 移除演算法

輸入:緩衝器時脈樹,TADB,其中共有 m 個緩衝器和 n 個正反器,和各正反器的 初始延遲時間,及所有位於最底層的 ADB 的延遲範圍;

{ 根據 TADB建構 ADB 連接圖,GADB;

將 TADB中所有 ADB 以拓樸排序的方式儲存在 GADB中;

for (所有位於最頂層的 ADB 為根的子樹)

{ while(以由下而上的流程對所有分支 ADB 作運算) { if (處理的 ADB 為時脈樹中位於最頂層的 ADB)

{ 從 ADB 可調的延遲範圍中指定適當的延遲數值; } else

{

if (分支 ADB 所指定的延遲數值

位於最頂層 ADB 的彈性差值) 移除分支 ADB;

else

保留分支 ADB 並指定原本的延遲數值;

} }

while(所有指定延遲數值為最大值的 ADB)

{ 將 ADB 所指定延遲數值作最小化; } } 輸出緩衝器時脈樹,TADB,並維持界限內的時脈差異;

}

48

本的延遲數值,3.5,而 ADB1的延遲範圍為[1 , 3],落於這個延遲範圍中,從 ADB 可 調的延遲數值範圍內找到最小的延遲數值,1.5,並重新指定 ADB1的延遲數值為 1.5。

最後再進一步對指定延遲數值為最大值的 ADB2 作延遲數值最小化的運算。ADB2 的 延遲範圍為[2.5 , 6.5],落於這個延遲範圍中,從 ADB 可調的延遲數值範圍內找到最 小的延遲數值,2.5,並重新指定 ADB2的延遲數值為 2.5。如圖 4-20 所示,經過 ADB 移除運算後,其時脈差異被調整為 6.5,符合差異的限制條件。

FF5 FF6 FF4

FF3 FF2

FF1 FF7 FF8 FF9 FF10 FF11 FF12

B1

B2

B3

B4 B5 B6 B7

B8 B9 B10

模式 1 9 12 8.5 10.5 10.5 13.5 10 14 10 11 10.5 11.5 ADB5

[4.5 , 6.5]

B0

ADB0

ADB2

ADB4

ADB6

[1 , 3] [1 , 3]

[1 , 6.5] [-0.5 , 5]

(2) (1)

ADB 可調的延遲數值範圍:

延遲 = +1.5 延遲 = +2.5 延遲 = +3.5 延遲= 0

ADB5

B7

ADB4

[-0.5 , 5]

[1 , 6.5]

ADB3

B9 B10

[1 , 5]

ADB3

B9 B10

+1.5

(1)

ADB6

B2

[1 , 3]

[4.5 , 6.5]

ADB1

+1.5 B5

ADB2

ADB2

+2.5

(2)

ADB1

B5

[1 , 3]

ADB2

+3.5

ADB1

B5

ADB2

+1.5

[2.5 , 6.5]

圖 4-19 模式 1 下 ADB 的移除運算

FF5 FF6 FF4

FF3 FF2

FF1 FF7 FF8 FF9 FF10 FF11 FF12

B1

B2 B3

B4 B5 B6 B7

B8 B9 B10

模式 1 7 10 7.5 9.5 9.5 13.5 10 14 7.5 8.5 9.5 10.5 ADB1=+1.5

ADB2=+2.5 ADB3=+1.5

[7.5 , 14] ADB 可調的延遲數值範圍:

延遲 = +1.5 延遲 = +2.5 延遲 = +3.5 延遲= 0

圖 4-20 經過 ADB 移除運算後於模式 1 下的時脈樹

49

另一方面,在模式 2 中,如圖 4-21 所示,首先對右邊三角形的 ADB 子樹作運算,

ADB

3及引申 ADB,ADB4,的延遲範圍分別為[4.5 , 8.5]及[2 , 6]。雖然兩者的延遲範 圍之間有共同交集的延遲範圍,但從 ADB 可調的延遲數值範圍中無法找到落於此延 遲範圍內之延遲數值,因此保留 ADB3,並指定原本的延遲數值,2.5。而 ADB2的延 遲範圍為[2 , 6],更新 ADB2的指定延遲數值為 2.5。而左邊三角形子樹的延遲範圍為 [2 , 5],更新 ADB1的指定延遲數值為 2.5。如圖 4-22 所示,經過 ADB 移除運算後,

時脈差異被調整成 6.5,符合差異的限制條件。

FF5 FF6 FF4

FF3 FF2

FF1 FF7 FF8 FF9 FF10 FF11 FF12

B1

B2

B3

B4 B5 B6 B7

B8 B9 B10

模式 2 10.5 12.5 11.5 12.5 9.5 13.5 10 15 9.5 12.5 10 12 B0

ADB0

ADB5

ADB3

ADB4

[2 , 5]

[4.5 , 8.5]

ADB6

[2 , 5] [2 , 5] [2 , 6]

ADB 可調的延遲數值範圍:

延遲 = +1.5 延遲 = +2.5 延遲 = +3.5 延遲= 0

ADB3

B9

ADB2

B9

+2.5

[2 , 6]

ADB3

+2.5 ADB3

B7

ADB4

[4.5 , 8.5]

[2 , 6]

ADB2

+2.5

(1)

ADB6

B2

[2 , 5]

ADB5

(2)

ADB1

B5

B4

[2 , 5]

[2 , 5]

ADB1

B5

B4

+2.5

圖 4-21 模式 2 下 ADB 的移除運算

FF5 FF6 FF4

FF3 FF2

FF1 FF7 FF8 FF9 FF10 FF11 FF12

B1

B2

B3

B4 B5 B6 B7

B8 B9 B10

模式 2 9.5 11.5 10.5 11.5 8.5 12.5 10 15 8.5 11.5 9 11 ADB1=+2.5

ADB3=+2.5

ADB4=+2.5

[8.5 , 15] ADB 可調的延遲數值範圍:

延遲 = +1.5 延遲 = +2.5 延遲 = +3.5 延遲= 0

圖 4-22 經過 ADB 移除運算後於模式 2 下的時脈樹

在文檔中 中 華 大 學 (頁 49-59)

相關文件