Timing Optimization Techniques

VLSI設計工学5
タイミング: DSM時代の最大関心事の1つ
(もう1つは消費電力)
•
回路における「配線の影響」が支
配的なくらい大きい
– 寄生容量
– 抵抗
– インダクタンス
•
100万ゲート以上
– システムLSI
1
論理素子の遅延と回路の遅延
• 論理素子の遅延時間
– 入力が決まってから出力が決まるまでの時間
• 回路の遅延時間
– 入力が決まってから出力が決まるまでの時間
– 回路は論理素子を結合したものなので、論理素子の遅延の積算
• 論理回路のタイミング
– 回路の二つの信号の間の時間的な関係
2
論理素子の遅延時間
• 素子の入力が決まってから出力が決まるまでの時間
– 情報を光よりも高速に伝えることはできない
– 10 ps (ピコ秒、10-12 秒) ~ 10 ns (ナノ秒、10-9 秒)
A
A
Y
delay
delay
Y
t(時間)
3
配線の遅延時間
• ゲートの出力 Y の変化が、Y に結合されているゲートの入力に伝
わるまでの時間
– 配線の容量に起因
Y
C
D
Y
C, D
delay
delay
t(時間)
4
配線遅延の問題点
• 素子の配置、配線の終了後でないと評価不能
– 設計段階で評価できない
– 設計変更で対処しずらい
• 大きなバッファ、太い配線
• 素子の遅延よりも大きくなりつつある
– LSI の製造プロセスの微細化による
5
ゲート遅延と配線遅延のモデル
• 遅延素子を用いたモデル化
– 遅延の積算時に考慮
配線の遅延
ゲートの遅延
C
Y
D
配線の遅延
6
配線遅延のモデル化
• 入出力対毎で遅延の異なる素子としてモデル化する
B→ Z: 8
C→ Z: 11
B
2
6
Z
C
5
Y
D
7
組合せ回路の最大遅延時間
• フィードバックループがないので素子の遅延時間を加算すれば良い
• 外部入力から外部出力へ向かって計算
– 素子をレベルソートする
– レベルの小さい順に素子の最大遅延を計算
レベル i の素子は
レベル i-1 以下の素子
の出力しか用いない
レベル 0 レベル 1
(外部入力)
レベル 2
8
素子のレベルの計算式
• level(v) = max i (level(v i)) + 1
– 外部入力のレベルは 0、vi は v の入力
•計算量は結線の数に比例
•素子数 n に対して n2
v1
v2
v3
v
9
素子の最大遅延の計算式
• maxd(v) = max i (maxd(v i)) + d(v)
– 外部入力の遅延は 0、vi は v の入力
– d(v) は素子 v の遅延時間
8
v1
計算量は結線の数に比例
8
v2
3
3
2
5
v
4
12
v3
2
2
10
素子の最小遅延の計算式
• mind(v) = min i (mind(v i)) + d(v)
– 外部入力の遅延は 0、vi は v の入力
– d(v) は素子 v の遅延時間
8
v1
8
計算量は結線の数に比例
v2
3
3
2
2
v
4
6
v3
2
2
11
組合せ回路と順序回路
• 組合せ回路
– 記憶を持たない回路、フィードバックループのない回路、現在の
入力のみで出力が決る
• 順序回路
– 記憶を持つ回路、フィードバックループのある回路、出力は現在
および過去の入力に依存
• 同期式順序回路
– クロック信号に同期して動作する順序回路
12
同期式順序回路の概念図
• 組み合せ回路とエッジトリガフリップフロップ
外部入力
n
m
外部出力
組み合せ回路
状態変数
(現状態)
k
k
状態変数
(次状態)
クロック
エッジトリガフリップフロップ
13
エッジトリガ Flip Flop の動作
• クロックの変化時(立ち上りまたは立ち下がり)の入力を見て出力を
決める
– クロック変化の前(セットアップ)と後(ホールド)は入力が安定で
あること
入力
set-up
hold
クロック
delay
出力
14
同期回路のタイミング制約
• 組み合せ回路の最大遅延とクロック周期
組み合せ回路
状態変数
(現状態)
状態変数
(次状態)
クロック
状態変数
最大遅延の許容範囲
入力 (次状態)
set-up
hold
クロック
delay
出力 状態変数
(現状態)
15
同期回路のタイミング検証
• 最大遅延(tmax)について: tpd + tmax + tsu < tcy
• 最小遅延(tmin)について: tpd + tmin > th
入力
tsu
th
クロック
tcy
出力
tpd
16
同期回路の利点
• 最大遅延: tpd + tmax + tsu < tcy
– 組み合せ回路の出力は、最大遅延時間後は入力が変化しない限
り安定
– クロック周期(tcy)を十分大きくとれば必ず制約を満たせる
• 最小遅延: tpd + tmin > th
– エッジトリガフリップフロップの設計時に工夫可
• タイミング問題を組み合せ回路の最大・最小遅延の評価に帰着できる
17
同期回路の詳細なモデル
• レジスタ転送 (RT) レベル回路
組み合せ回路
組み合せ回路
組み合せ回路
組み合せ回路
クロック
18
同期回路の問題点
• 今のクロックで決ったレジスタの値に対し、次のクロックでレジスタに
記憶する値を計算
• クロックがすべてのレジスタに同時に到達することを仮定
• 本当に同時に到達するか
– クロックも配線を通してレジスタまで送られる
– 配線には遅延があるので、同時とは言えない
– ズレ(クロックスキュー)へ対処する必要がある
19
クロックスキューの問題点
• 組み合せ回路部の最大遅延時間を限定
• クロックを遅くしても問題が解決しない
クロック
クロック(A)
スキュー
クロック(B)
C1の計算時間
C2の計算時間?
組み合せ回路
C1
クロック
組み合せ回路
C2
A
B
20
クロックスキューへの対処
• スキューをなるべく小さくする
– 太い配線を用いる
– 配線長を合わせる
• クロックツリー合成
– スキューを合わせる
• 早く到達する部分に遅延をいれる
• スキューを仮定した回路設計
– ローカルには同期、グローバルには非同期
– スキューを制御して、積極的に利用
21
スキューの積極的な利用
• あるモジュールの許容遅延時間を長くとる
クロック
クロック(A)
C1の許容遅延時間
クロック(B)
d1
C2の許容遅延時間
組み合せ回路
C1
クロック
ただし minC2 > d1
組み合せ回路
C2
A
B
22
同期回路のタイミング設計と検証
• 組合せ回路部の最大遅延 tmax がクロックの1周期の時間より小さいか
どうかの判定
– tpd + tmax + tsu < tcy
– なるべく高速なクロックで動作させたい
• 設計側
– 最大遅延時間のなるべく小さい回路を設計する
• 検証側
– 最大遅延 tmaxの正確な評価が重要
– グラフ的な最大遅延 (topological delay)は本当に最大か
23
タイミング最適化設計の流れ
論理合成
レイアウト前、タイミング最適化
not ok
レイアウト前のタイ
ミング制約を満たす?
back annotation
問題点
– 最適化ルーチンでは、レイアウ
ト後の実際の配線容量や遅延
モデルとは異なるモデルで最
適化している
• タイミング最適化が収束し
にくい
RTL spec
フロントエンド
•
フロントエンドとバックエンドは別々
– レイアウト後の情報を戻して(
back annotation)、タイミング
最適化を繰り返す
バックエンド
•
ok
配置・配線
レイアウト後、タイミング最適化
実タイミング
制約を満たす?
not ok
ok
マスクパターン
24
タイミング最適化というのは、
なかなか収束しない!
タイミングエラー数
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
繰り返し回数
25
基本事項・定義
•
•
信号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)
クリティカルパス: 最小のスラックをもつ信号の集合
タイミング最適化の目標: スラックの最小値を最大化する
26
タイミング最適化の基本プロシージャ
基本ルーチン {
タイミング解析;
while ( 目標に到達していない) {
次のクリティカルな場所を選ぶ;
その場所を 回路変換 する;
タイミング解析;
critical region
if (スラックの最悪値が向上した)
回路変換を受け入れる;
else
回路を元に戻す;
}
}
critical path
•
レイアウト前、レイアウト中、レイアウト後に適用される
– それぞれ、異なるタイミングモデルの上に定義された、異なる回路変換
が適用される
27
静的タイミング解析
• 静的にクリティカルパル・最長パスを求める
– 回路を入力から出力へ順にarrival timeを計算していく
– そして、回路の出力から入力へrequired timeを計算する
• タイミング最適化の際のガイドとなる
• 信号経路が実際に活性化される(本当に信号を伝える)かどうかは
考えない
– フォールスパス問題が発生する
• あるパスは、決して信号を伝播しないかもしれない
• つまり、そのパスが信号を伝えるような入力値の組み合わせ
は存在しない
28
静的タイミング解析におけるフォールスパスの例
a 2-bit carry-bypass adder
c0
s0
a0
b0
p0
c1
s1
a1
b1
p1
1
0
sel
c2
(if 1, then c2 = c0, c0 - c1 - c2 not selected;
if 0, then p0 or p1 is 0, blocking c0 - c1 - c2)
– c0 - c1 - c2 がフォールスパス
• a0, a1, b0, b1 が時刻0、c0 が時刻2に到着、各ゲートの遅延は1
– フォールスパス c0 - c1 - c2 (遅延 7)
– 真の最長パス a0 - c1 - c2 (遅延 6)
29
逐次的タイミング解析によるスラックの更新
• 回路の部分的な変更に対して:
– 回路の順方向に arrival time を更新
• 変更部分の直前の入力からスタート
– 回路の逆方向に required time を更新
• 順方向に更新した際に、扱ったゲートからスタート
– ゲートの入力信号変化が変わるとそのゲートの遅延値は変化
逆方向に
required time を
更新
変更回路
部分
順方向に
arrival time を
更新
• 基本的に、遅延値の変化がなくなった時点で終了
30