Timing Optimization Techniques

VLSI設計工学6
•
•
•
•
タイミング解析・最適化
順序回路合成の基本
順序回路マクロ
6月14,21日は石原先生による代講
– 設計の上位レベルの設計手法とその支援法
– ソフトウェアを書くようにハードウェアを書く(設計する)
1
タイミング最適化設計の流れ
論理合成
レイアウト前、タイミング最適化
not ok
レイアウト前のタイ
ミング制約を満たす?
back annotation
問題点
– 最適化ルーチンでは、レイアウ
ト後の実際の配線容量や遅延
モデルとは異なるモデルで最
適化している
• タイミング最適化が収束し
にくい
RTL spec
フロントエンド
•
フロントエンドとバックエンドは別々
– レイアウト後の情報を戻して(
back annotation)、タイミング
最適化を繰り返す
バックエンド
•
ok
配置・配線
レイアウト後、タイミング最適化
実タイミング
制約を満たす?
not ok
ok
マスクパターン
2
タイミング最適化というのは、
なかなか収束しない!
タイミングエラー数
50
45
0.35 m
40
35
30
25
20
0.5 m
15
10
0.8 m
1.0 m
5
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16 17 18
繰り返し回数
3
基本事項・定義
•
•
信号cのarrival time
– 外部入力からの信号が c に到達するのに要する最大時間
信号cのrequired time
– タイミング制約を満たすために、信号 c の値が確定していなけばならな
い時刻
req
(6, 6)
2
c
1
(3,3)
1 e
(5, 4)
1
(4,3)
a b
•
•
•
arrc =
max(arra + delaya c,,
arrb + delayb  c)
逆方向の計算
(7, 6)d
順方向の計算
arr
reqc =
min(reqd - delayc d,
reqe - delayc  e)
reqa = reqc - delaya c
reqb = reqc - delayb c
信号cのスラック: (信号cのrequired time) - (信号cのarrival time)
クリティカルパス: 最小のスラックをもつ信号の集合
タイミング最適化の目標: スラックの最小値を最大化する
4
タイミング最適化の基本プロシージャ
基本ルーチン {
タイミング解析;
while ( 目標に到達していない) {
次のクリティカルな場所を選ぶ;
その場所を 回路変換 する;
タイミング解析;
critical region
if (スラックの最悪値が向上した)
回路変換を受け入れる;
else
回路を元に戻す;
}
}
critical path
•
レイアウト前、レイアウト中、レイアウト後に適用される
– それぞれ、異なるタイミングモデルの上に定義された、異なる回路変換
が適用される
5
逐次的タイミング解析によるスラックの更新
• 回路の部分的な変更に対して:
– 回路の順方向に arrival time を更新
• 変更部分の直前の入力からスタート
– 回路の逆方向に required time を更新
• 順方向に更新した際に、扱ったゲートからスタート
– ゲートの入力信号変化が変わるとそのゲートの遅延値は変化
逆方向に
required time を
更新
変更回路
部分
順方向に
arrival time を
更新
• 基本的に、遅延値の変化がなくなった時点で終了
6
論理関数の展開
• 関数 G を F の中に展開する( a がクリティカルと仮定)
F = cG
G=a+b
a
b
a+b
F = ac + bc
G
cG
c
2 levels
F
a
b
c
ac+bc
F
1 level
– 論理段数が減少
• 面積増大を考慮する必要(面積はリテラル数で数える)
– クリティカルパス上で部分的に展開する
– 必要なら積和形論理簡単化プログラムを実行する (espresso)
• 論理関数の分割処理をこの後行う
7
論理関数の分割
• 論理関数 F を「うまく割る」関数 D をみつける
F=D•q+r
– 一般的に、論理関数を考慮して割り算をすると多数の候補が存在
し、計算時間もかかる
• 代数的な割り算に制限する
– D と q は同じ変数を共有しない
– D • q は代数的積と呼ばれる
– r はより少ない項数となる
• 例: F = x’z’ + yz + xz
– 論理関数的割り算: D = x’ + z
• F = (x’ + z)(x + z’) + x’y, または
• F = (x’ + z)(y + z’) + xz
(割り算の結果は一意ではない)
– 代数的割り算: D = x + y
• F = z(x + y) + x’z’
(割り算の結果は一意)
8
タイミングを考慮した論理関数の展開を分割
• f をクリティカルパスに沿って、部分的に展開し、新たな論理関数 k
で割り算する
– 基本戦略: クリティカルな信号をより出力側へもっていく
f
f
f
展開された
ノード
a
a
e
b
e
b
c d
k
divisor
a
e
c
d
b
c
d
クリティカルパス
9
テクノロジを考慮した関数分割
• まず、与えられた関数を NAND2/INV だけからなる回路に分割
– 小さいゲートの集合:
• セルライブラリを使って実現できることが保証されている
– ライブラリに4入力NANDはないかもしれない
• テクノロジマッピングしやすい
• タイミングへの影響大
– タイミングを考慮して分割
a
b
c
d
a
b
a
b
c
d
c
d
a, b, c, dが同じくらいクリティカル
Dが最もクリティカル
10
ゲートサイジング/ピン交換
• 等価セルで大きさのことなるものに変える
– ゲートのドライブ力、遅延、入力容量が変化する
size-down
late signal
a
2X
size-up
b
a
1X
b
1X
1X
2X
1X
critical path
• 入力ピンの交換
– 遅い信号を遅延の小さい入力ピンに接続する
longer pin-to-pin delay
late signal a
b
b
a
11
バッファ挿入
• ファンアウト負荷の削減する方法
– クリティカルパスを分離する
• クリティカルではないところにバッファを挿入する
critical path
– 負荷を合わせる
• すべての分岐の負荷を同じにする
12
リタイミング
• 元のクロック周期 = 4.5 ns
2.7 ns
4.5 ns
(1 ns)
組合せ回路
(2.7 ns)
組合せ回路
(3.5 ns)
• リタイミング後のクロック周期 = 3.7 ns
3.7 ns
組合せ回路
(2.7 ns)
3.5 ns
(1 ns)
組合せ回路
(3.5 ns)
13
同期式順序回路の概念図
• 組み合せ回路とエッジトリガフリップフロップ
外部入力
n
m
外部出力
組み合せ回路
状態変数
(現状態)
k
k
状態変数
(次状態)
クロック
エッジトリガフリップフロップ
14
順序回路の表現
in 4
Present State
Latch
Primary Output
out 1
in 3
(1010, 0110)/1
in 1
in 2
(--00, 11-0)/0
Primary inputst
0
----/1
• 回路
• STG (Signal
Transition Graph)
• 状態遷移関係
(Transition Relation)
---1/1
1
Next State
Gates and Latches
(Netlist)
State Transition Graph
(STG)
ns1
pi
ps
ns'
1 ns
2
ns'
2 ns
3
ns'
3
ns
n
ns'n
Transition Relation
15
Verilogによる設計例: 交通信号制御回路
module hwy_control(clk, car_present, enable_hwy,
short_timer, long_timer, hwy_light,
hwy_start_timer, enable_farm);
input clk,car_present,enable_hwy,short_timer,
long_timer;
output hwy_light,hwy_start_timer,enable_farm;
boolean wire car_present;
wire short_timer, long_timer, hwy_start_timer,
enable_farm, enable_hwy;
color reg hwy_light;
initial hwy_light = GREEN;
assign hwy_start_timer = (((hwy_light == GREEN)
&& ((car_present == YES) && long_timer))
||
(hwy_light == RED) && enable_hwy);
assign enable_farm=((hwy_light==YELLOW)&&short_timer);
always @(posedge clk) begin
case (hwy_light)
GREEN: if ((car_present == YES) &&
long_timer) hwy_light = YELLOW;
YELLOW: if (short_timer) hwy_light = RED;
RED: if (enable_hwy) hwy_light = GREEN;
endcase
end
endmodule
16
状態遷移グラフと状態遷移表
(Signal Transition Graph, Signal Transition Table)
• 交通信号制御回路のmealy machineによる記述
not(c and t1)/
hl = GREEN; fl = RED; st = 0
ts/
HG
hl = RED; fl = YELLOW; st = 0
not(ts)/
hl = RED; fl = YELLOW; st = 0
FY
c and t1/
hl = GREEN; fl = RED; st = 1
HY
not(c) or t1/
hl = RED; fl = GREEN, st = 1
FG
not(ts)/
hl = YELLOW; fl = RED; st = 0
ts/
hl = YELLOW; fl = RED; st = 1
not(not(c) or t1)/
hl = RED; fl = GREEN; st = 0
State Transition Graph: Example
PS
HG
HG
HY
HY
FG
FG
FY
FY
IN
not(c and t1)
c and t1
not(ts)
ts
not(not(c) or t1)
not(c) or t1
not(ts)
ts
NS
HG
HY
HY
FG
FG
FY
FY
HG
OUT
hl = GREEN; fl = RED; st = 0
hl = GREEN; fl = RED; st = 1
hl = YELLOW; fl = RED; st = 0
hl = YELLOW; fl = RED; st = 1
hl = RED; fl = GREEN; st = 0
hl = RED; fl = GREEN; st = 1
hl = RED; fl = YELLOW; st = 0
hl = RED; fl = YELLOW; st = 1
State Transition Table: Example
17
順序回路論理合成、最適化
• 有限状態ステートマシン(Finite State Machine)を操作
• 分割(decomposition)と展開(collapse)
decompose
FSM
FSM
FSM
FSM
collapse
• FSMをFSMで論理的に割る(FSMの割り算)
x
x
M
Q
z
z
M1
M
• 組合せ回路論理合成、最適化に比べ、アルゴリズムとして改良の余
地は大きい
18