第四章 限制最大延遲時間條件下的 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(1≦j≦s),則可在各分支 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, 1 j s } )。
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 (1≦j≦s),其指定的延遲數值為 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 k p }。
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 k p }。
給定緩衝器時脈樹,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 下的時脈樹