ディジタル回路#07
タイミング
ディジタル回路#07 1
“Digital Design and Computer Architecture, Second Edition”, Lecture Slide より
前回のディジタル回路
•FSMの作り方
•状態遷移図→状態遷移表→回路
•ミーリマシンとムーアマシン
ディジタル回路#07 2
今日のおしながき
タイミング
ディジタル回路#07 3
・タイミング制約
・クロック・スキュー
・メタ・ステーブル
タイミング制約
ディジタル回路#07 4
順序回路 (Sequential Logic)
•写真のぶれ
– シャッター時の手ぶれ,被写体ブレ
– シャッターが開いている間は安定させないといけない
•シャッターって意外と長い
•フリップ・フロップも同様
– 値を取り込むクロックエッジ周辺で入力を安定させないといけない
– さもないと準安定を引き起こす可能性(metastability)
ディジタル回路#07 5
FF使用時のタイミング設計規約
•同期式順序回路(synchronous sequential circuit)のフリップ・フロップへの入力は開口時間中に安定しなければならない
•具体的には,以下の間安定させる– クロックエッジ前の少なくともtsetup の間
– クロックエッジ後の少なくともthold の間
ディジタル回路#07 6
FF入力のタイミング制約
• セットアップ・タイム: tsetup = クロックエッジのどれだけ前までに入力値を安定(変化しない状態)させないといけないか
• ホールド・タイム: thold = クロックエッジの後どれだけ入力値を安定させておかないといけないか
• 開口時間(aperture time): ta = クロックエッジの周辺で入力値をどれだけ安定させておかないといけないか (ta = tsetup + thold)
ディジタル回路#07 7
CLK
tsetup
D
thold
ta
同期式順序回路のタイミング設計
•レジスタ間には,FFと組み合わせ回路の最小遅延と最大遅延が入る
ディジタル回路#07 8
CL
CLKCLK
R1 R2
Q1 D2
(a)
CLK
Q1
D2(b)
Tcクロック周期
FF出力のtcd ~ tpd
組み合わせ回路のtcd ~ tpd
FF出力の遅延
• 伝搬遅延(propagation delay): tpcq = クロックエッジの後,FF出力値が安定するまでの(最大)時間
• 混入時間(contamination delay): tccq = クロックエッジの後,FF出力値が変化を始めるまでの(最小)時間
ディジタル回路#07 9
CLK
tccqtpcq
Q
セットアップ・タイムの制約
•R1からR2への最大遅延が問題となる– クリティカルパス
•R2への入力(D2)は少なくともクロックエッジのtsetup 前に安定しなければならない
ディジタル回路#07 10
CLK
Q1
D2
Tc
tpcq tpd tsetup
CL
CLKCLKQ1 D2
R1 R2Tc ≥
セットアップ・タイムの制約
•R1からR2への最大遅延が問題となる– クリティカルパス
•R2への入力(D2)は少なくともクロックエッジのtsetup 前に安定しなければならない
ディジタル回路#07 11
CLK
Q1
D2
Tc
tpcq tpd tsetup
CL
CLKCLKQ1 D2
R1 R2Tc ≥ tpcq + tpd + tsetup
tpd ≤
セットアップ・タイムの制約
•R1からR2への最大遅延が問題となる– クリティカルパス
•R2への入力(D2)は少なくともクロックエッジのtsetup 前に安定しなければならない
ディジタル回路#07 12
CLK
Q1
D2
Tc
tpcq tpd tsetup
CL
CLKCLKQ1 D2
R1 R2Tc ≥ tpcq + tpd + tsetup
tpd ≤ Tc – (tpcq + tsetup)
(tpcq + tsetup): FFによるオーバヘッド
ホールド・タイムの制約
•R1からR2への最小遅延が問題となる– ショートパス
•レジスタR2への入力は少なくともクロックエッジ後thold
以上安定しなければならない
ディジタル回路#07 13
CLK
Q1
D2tccq tcd
thold
CL
CLKCLKQ1 D2
R1 R2thold <
ホールド・タイムの制約
•R1からR2への最小遅延が問題となる– ショートパス
•レジスタR2への入力は少なくともクロックエッジ後thold
以上安定しなければならない
ディジタル回路#07 14
CLK
Q1
D2tccq tcd
thold
CL
CLKCLKQ1 D2
R1 R2thold < tccq + tcd
tcd >
ホールド・タイムの制約
•R1からR2への最小遅延が問題となる– ショートパス
•レジスタR2への入力は少なくともクロックエッジ後thold
以上安定しなければならない
ディジタル回路#07 15
CLK
Q1
D2tccq tcd
thold
CL
CLKCLKQ1 D2
R1 R2thold < tccq + tcd
tcd > thold - tccq
タイミング解析
ディジタル回路#07 16
CLK CLKA
B
C
D
X'
Y'
X
Y
Timing Characteristics
tccq = 30 ps
tpcq = 50 ps
tsetup = 60 ps
thold = 70 ps
tpd = 35 ps
tcd = 25 pstpd =
tcd =
セットアップ・タイム制約:Tc ≥
fc =
ホールド・タイム制約:tccq + tcd > thold ?
per g
ate
タイミング解析
ディジタル回路#07 17
CLK CLKA
B
C
D
X'
Y'
X
Y
Timing Characteristics
tccq = 30 ps
tpcq = 50 ps
tsetup = 60 ps
thold = 70 ps
tpd = 35 ps
tcd = 25 pstpd = 3 x 35 ps = 105 ps
tcd = 25 ps
セットアップ・タイム制約:Tc ≥ (50 + 105 + 60) ps = 215 ps
fc = 1/Tc = 4.65 GHz
ホールド・タイム制約:tccq + tcd > thold ?
(30 + 25) ps > 70 ps ? 違反?
per g
ate
タイミング解析
ディジタル回路#07 18
Timing Characteristics
tccq = 30 ps
tpcq = 50 ps
tsetup = 60 ps
thold = 70 ps
tpd = 35 ps
tcd = 25 pstpd =
tcd =
セットアップ・タイム制約:Tc ≥
fc =
ホールド・タイム制約:tccq + tcd > thold ?
per g
ate
CLK CLKA
B
C
D
X'
Y'
X
Y
ショート・パスにバッファを挿入して対策
タイミング解析
ディジタル回路#07 19
Timing Characteristics
tccq = 30 ps
tpcq = 50 ps
tsetup = 60 ps
thold = 70 ps
tpd = 35 ps
tcd = 25 pstpd = 3 x 35 ps = 105 ps
tcd = 2 x 25 ps = 50 ps
セットアップ・タイム制約:Tc ≥ (50 + 105 + 60) ps = 215 ps
fc = 1/Tc = 4.65 GHz
ホールド・タイム制約:tccq + tcd > thold ?
(30 + 50) ps > 70 ps ? OK!pe
r gat
e
CLK CLKA
B
C
D
X'
Y'
X
Y
ショート・パスにバッファを挿入して対策
クロック・スキュー
ディジタル回路#07 20
クロック・スキュー (clock skew)
•クロックは全てのレジスタに同時に到達するわけではない
•スキュー: 二つのクロックエッジの差
•最悪の場合でも全てのレジスタについてタイミング規約が満たさせるようにする(worst case analysis)
ディジタル回路#07 21
t skew
CLK1
CLK2
CL
CLK2CLK1
R1 R2
Q1 D2
CLKdelay
CLK
セットアップ・タイム制約(スキュー有り)
•最悪の場合:CLK2がCLK1よりも早い
ディジタル回路#07 22
CLK1
Q1
D2
Tc
tpcq tpd tsetuptskew
CL
CLK2CLK1
R1 R2
Q1 D2
CLK2Tc ≥
セットアップ・タイム制約(スキュー有り)
•最悪の場合:CLK2がCLK1よりも早い
ディジタル回路#07 23
CLK1
Q1
D2
Tc
tpcq tpd tsetuptskew
CL
CLK2CLK1
R1 R2
Q1 D2
CLK2Tc ≥ tpcq + tpd + tsetup + tskew
tpd ≤
セットアップ・タイム制約(スキュー有り)
•最悪の場合:CLK2がCLK1よりも早い
ディジタル回路#07 24
CLK1
Q1
D2
Tc
tpcq tpd tsetuptskew
CL
CLK2CLK1
R1 R2
Q1 D2
CLK2Tc ≥ tpcq + tpd + tsetup + tskew
tpd ≤ Tc – (tpcq + tsetup + tskew)
ホールド・タイムの制約(スキュー有り)
•最悪の場合:CLK2がCLK1よりも遅い
ディジタル回路#07 25
tccq tcd
thold
Q1
D2
tskew
CL
CLK2CLK1
R1 R2
Q1 D2
CLK2
CLK1tccq + tcd >
ホールド・タイムの制約(スキュー有り)
•最悪の場合:CLK2がCLK1よりも遅い
ディジタル回路#07 26
tccq tcd
thold
Q1
D2
tskew
CL
CLK2CLK1
R1 R2
Q1 D2
CLK2
CLK1tccq + tcd > thold + tskew
tcd >
ホールド・タイムの制約(スキュー有り)
•最悪の場合:CLK2がCLK1よりも遅い
ディジタル回路#07 27
tccq tcd
thold
Q1
D2
tskew
CL
CLK2CLK1
R1 R2
Q1 D2
CLK2
CLK1tccq + tcd > thold + tskew
tcd > thold + tskew – tccq
余談:等長配線
ディジタル回路#07 28
タイミング制約を満たせないと…?
•タイミングエラー
– そのサイクルで生成するはずの値と異なる値がFFに取り込まれる
•変化が間に合わなかった
•次のサイクルの値が混入した
•回路遅延は熱や電圧,プロセスばらつきで変化
– e.g. 熱暴走
– 設計時に最悪値/統計的にマージンをいれる
•値の変化だけでなく,メタ・ステーブルの危険性
ディジタル回路#07 29
メタ・ステーブル
ディジタル回路#07 30
避けづらいタイミング規約違反
•同期回路部分は設計でカバーできるとして…
•非同期入力はタイミング規約違反の可能性が避けられない– ユーザの押すスイッチ
– 異なるクロックで動く機器同士の通信
ディジタル回路#07 31
CLK
tsetup thold
taperture
D
Q
D
Q
D
Q ???
Cas
e I
Cas
e II
Cas
e III
D Q
CLK
butto
n
準安定 (metastability)
•バイステーブル装置: 二つの安定状態とその間の準安定状態
•フリップ・フロップ: 二つの安定状態(1と0)と一つの準安定状態
– 変化中の値を取り込んでしまうことで起こる
– もし準安定状態になってしまうと,バランスがくずれるまでしばらくの間中間電位で落ち着いてしまう
•いつまでに落ち着く,という保証はなし
•確率的に持続
ディジタル回路#07 32
metastable
stablestable
内部イメージ
•セットアップの途中で変化があった場合
– 例えば下のRSラッチでQが0の状態のときに一瞬S=1, R=0となってからS=0に戻ったとする
– Q,Qにロジックレベルの範囲外の値が与えられたまま保持状態へ
– 中間値付近が入力されるNOTのループ状態になる
– 微小に揺れ続け,なにかのきっかけで1か0へ安定する
ディジタル回路#07 33
R
S
Q
Q
N1
N2
入力変化に対してFF出力が安定するまでの時間 tres
•入力変化がaperture time外で行われていれば– 出力変化にかかる時間はFFの伝搬時間: tpcq
•もしセットアップやホールドの制約を満たせず,メタステーブルを引き起こした場合– 長くなる:時間経過とともに確率的に治まる
•入力変化タイミングがランダムなときの見積もり
– 𝑃𝑃(𝑡𝑡𝑟𝑟𝑟𝑟𝑟𝑟 > 𝑡𝑡) = 𝑇𝑇𝑜𝑜𝑇𝑇𝑐𝑐𝑟𝑟−
𝑡𝑡𝜏𝜏
•メタステーブルが治まるまでの時間tresがある時間tよりも長くなる確率
– 時間が増えれば指数的に確率は減少
– Tc:クロック周期,T0,τ: FFの特性で決まってくる値
– T0/TC :入力変化が悪いタイミングで起きる確率τ:FFがどの程度の時間でメタステーブルから回復するかの特性
ディジタル回路#07 34
ダブル・シンクロナイズ
•非同期入力は不可避
– ユーザ・インタフェース
– 異なるクロックのシステム同士の通信
•回路設計ではメタ・ステーブルの可能性を極力小さくしなくてはならない→ダブル・シンクロナイズ
– 何もしないでもう一段FFで同期させる
– 1段目のFFでメタ・ステーブルが生じても,2段目までの時間で治まることを期待
•それでもだめなら3段,4段と増やしていく
– 可能性を0にはできないが,削減することはできるディジタル回路#07 35
ダブル・シンクロナイズの効果
•一段いれた場合メタステーブルが伝搬する確率はP(failure) = (T0/Tc ) e-(Tc - tsetup)/τ
ディジタル回路#07 36
D
Q
D2 Q
D2
Tc
tsetup tpcq
CLK CLK
CLK
tres
metastable
F1 F2
ダブル・シンクロナイズのMTBF
•Mean Time Between Failure
– 平均故障間隔:システムでよく用いられる信頼性指標の1つ
•もし入力が一秒にN回変化するとすれば– P(failure)/second = (NT0/Tc) e-(Tc - tsetup)/τ
•メタステーブルの発生は1/[P(failure)/second]
• MTBF = 1/[P(failure)/second] = (Tc/NT0) e(Tc - tsetup)/τ
ディジタル回路#07 37
ダブル・シンクロナイズの例
ディジタル回路#07 38
D D2 Q
CLK CLK
F1 F2
• パタメタを以下とする
Tc = 1/500 MHz = 2 ns τ = 200 psT0 = 150 ps tsetup = 100 psN = 10 events / second
• メタ・ステーブル発生確率とMTBFは?
ダブル・シンクロナイズの例
ディジタル回路#07 39
D D2 Q
CLK CLK
F1 F2
• パタメタを以下とする
Tc = 1/500 MHz = 2 ns τ = 200 psT0 = 150 ps tsetup = 100 psN = 10 events / second
• メタ・ステーブル発生確率とMTBFは?
P(failure) = (150 ps/2 ns) e-(1.9 ns)/200 ps
= 5.6 × 10-6
P(failure)/second = 10 × (5.6 × 10-6 )= 5.6 × 10-5 / second
MTBF = 1/[P(failure)/second] ≈ 5 hours
実践として
• T0やτはトランジスタやFPGAのデータシートなど
にのっている
– システムが要求するMTBFを満たすように他の設計パラメタを合わせる
•実験などでは
– FPGAなどで非同期信号を受ける回路を設計するときにはFFを一つ余分にはさむ
– それでも安定しないときはさらに追加していく
ディジタル回路#07 40
今回のまとめ
ディジタル回路#07 41
本日のディジタル回路
1. タイミング制約
2. クロック・スキュー
3. メタ・ステーブル
ディジタル回路#07 42
更にディジタルな者達
•SPICE等の回路シミュレーションで任意の回路について安全なクロックを供給し,安定稼働を確かめよう– クロックを早めていくとどのようにエラーが生じるか?
•異なるクロックドメインで動く回路間の通信を行う回路を設計してダブル・シンクロナイズの効果を確かめよう
ディジタル回路#07 43
次回予告
•ディジタル数値表現
– 或いはどうしてマリオの残機が一瞬にしてマイナスになったのか
ディジタル回路#07 44