セットアップ時間とホールド時間の違い:定義・遅延・周波数・直し方を比較

どちらも、フリップフロップがデータを正しく取り込むための時間の条件ですが、守る向きが逆です。セットアップ時間は、クロックのエッジより前にデータを確定させておく時間で、データが遅すぎないかを確かめます。ホールド時間は、エッジの後もデータを保っておく時間で、データが速すぎないかを確かめます。セットアップの条件にはクロックの周期が入るので、クロックを遅くすれば直りますが、ホールドは同じエッジどうしの比較なので、周波数を下げても直りません。

項目セットアップ時間ホールド時間
定義クロックの有効なエッジより前に、データを確定させておく最小の時間クロックの有効なエッジの後も、データを変えずに保つ最小の時間
確かめることデータが遅すぎないか。次のエッジに間に合うかデータが速すぎないか。同じエッジで新しいデータが入り込まないか
比べるエッジ送り側のエッジと、1周期後の受け側のエッジ送り側と受け側の同じエッジ
チェックに使う遅延最大(max)の遅延。最も遅い経路最小(min)の遅延。最も速い経路
条件の式(目安)tcq(max) + tlogic(max) + tsu ≤ T + tskewtcq(min) + tlogic(min) ≥ th + tskew(tskewは受け側のクロックが遅れる向きを正とする)
クロック周波数との関係周期Tが式に入る。最大動作周波数を決める周期が式に入らない。周波数とは無関係
クロックスキューの影響受け側のクロックが遅れると余裕が増える受け側のクロックが遅れると余裕が減る
違反の直し方論理の段数を減らす、駆動力の大きいセルやしきい値の低い速いセルに替える、配置を近づける、パイプラインで経路を分ける、クロックを遅くするデータ経路に遅延用のバッファを入れる、しきい値の高い遅いセルに替える、クロックスキューを調整する
違反しやすいコーナー遅い条件。遅いプロセス・低い電圧・高温(微細なプロセスでは低温の方が遅いこともある)速い条件。速いプロセス・高い電圧・低温など
チップができてから見つかるとクロックを遅くすれば動く。性能は下がる周波数を下げても直らず、正しく動かない。修正には設計の変更が必要になることが多い

数値は代表的な目安で、世代や製品によって異なります。

どんなときに使うか

セットアップ時間
最大動作周波数を決めるとき、遅い経路を探して速くするとき。静的タイミング解析では、maxの遅延と遅いコーナーで確認します。
ホールド時間
フリップフロップの間の経路が短いとき、クロックスキューが大きいとき。minの遅延と速いコーナーで確認し、通常はクロックツリーを作った後で直します。
組み合わせ
片方を直すと、もう片方が悪くなることがあります。ホールドを直すためにバッファを入れすぎるとセットアップの余裕が減るので、すべてのコーナーで両方を同時に満たす必要があります。

よくある質問

ホールド違反は、なぜクロックを遅くしても直らないのですか?

ホールドの条件は、送り側と受け側の同じクロックのエッジどうしを比べるので、式にクロックの周期が入らないからです。データ経路にバッファを入れて遅らせるなど、経路の遅延そのものを変えて直します。

セットアップの確認でmax、ホールドの確認でminの遅延を使うのはなぜですか?

セットアップは、データが最も遅く届くときに次のエッジに間に合うかが問題なので、最大の遅延で確かめます。ホールドは、新しいデータが最も早く届くときに前のデータを壊さないかが問題なので、最小の遅延で確かめます。

セットアップ時間やホールド時間を守れないと、何が起きますか?

フリップフロップが間違った値を取り込むか、出力がしばらく0とも1とも定まらないメタステーブル状態になります。非同期の信号ではこれを完全には避けられないので、2段以上のフリップフロップで同期化して受けます。

理解度チェック

フリップフロップのセットアップ時間の説明として正しいものはどれか。

  1. Aクロックのエッジのあとに、データを保持し続けなければならない最小時間
  2. Bクロックのエッジより前に、データ入力が安定していなければならない最小時間
  3. C電源を入れてから動作するまでの時間
答えと解説を見る

正解:B. クロックのエッジより前に、データ入力が安定していなければならない最小時間

フリップフロップが正しく取り込むには、クロックのエッジより一定時間前からデータが安定している必要があり、これがセットアップ時間です。データ経路の遅延がクロック周期からセットアップ時間を引いた値を超えると違反になり、クロックを遅くすれば解消できます。エッジ後にデータを保持する必要がある時間はホールド時間で、どちらかを満たさないと誤った値の取り込みやメタステーブルの原因になります。

フリップフロップのホールド時間の説明として正しいものはどれか。

  1. Aクロックの有効なエッジの前に、データ入力を確定させておかなければならない時間
  2. Bクロックが入ってから出力が変わるまでの時間
  3. Cクロックの有効なエッジの後も、データ入力を変えずに保たなければならない時間
答えと解説を見る

正解:C. クロックの有効なエッジの後も、データ入力を変えずに保たなければならない時間

ホールド時間は、クロックのエッジ後もデータを安定させておく必要がある最小時間です。前段のフリップフロップから次段までの経路が短すぎると、同じエッジで更新された新しいデータが次段に早く届きすぎて違反します。周期と無関係なのでクロックを遅くしても直らず、データ経路にバッファを挿入して遅延を加えるのが対策です。製造後に見つかるとチップが使えなくなるため、設計時の検証が重要です。

同期式回路の「クロックスキュー」の説明として正しいものはどれか。

  1. Aクロックの周波数が時間とともに変動すること
  2. Bクロック信号がフリップフロップごとに到着する時刻のずれ
  3. Cクロック信号の電圧が電源電圧より高くなること
答えと解説を見る

正解:B. クロック信号がフリップフロップごとに到着する時刻のずれ

クロックスキューは、同じクロックが配線の長さや負荷の違いでフリップフロップごとに異なる時刻に到着するずれです。受け側のクロックが遅れるとセットアップには有利でもホールドには不利になり、逆も同様です。チップ全体に届くクロックツリーをCTS(クロックツリー合成)で設計し、バッファの配置や配線長をそろえてスキューを数十ps以下に抑えます。周期の時間的な揺らぎはジッタです。

  1. 静的タイミング解析で、信号がクロックのエッジ直後に早く変化しすぎて、フリップフロップが前のデータを正しく保持できなくなるタイミング違反はどれか。
  2. 静的タイミング解析を、プロセスのばらつき・電源電圧・温度の組み合わせを変えた複数の条件で行う理由として正しいものはどれか。
  3. 受信側のホールド時間を満たしているかを確認するとき、送信側のクロック→出力の遅延として使うべき値はどれか。

論理回路の練習問題へ

関連する用語の解説

セットアップ時間
フリップフロップでクロックの有効なエッジより前に、データ入力を確定させておかなければならない最小の時間。守れない経路は、回路の最大動作周波数を制限する。
ホールド時間
フリップフロップでクロックの有効なエッジの後も、データ入力を変えずに保たなければならない最小の時間。違反するとクロック周波数を下げても直らないため、遅延を追加して対策する。
クロックスキュー
同じクロック信号が、フリップフロップごとに到着する時刻のずれ。セットアップやホールドの余裕を変えるため、クロックツリー合成で小さく抑える。
STA(静的タイミング解析)
テストパターンを使わずに回路の各パスの遅延を計算し、タイミング制約を満たしているかを検証する手法。
メタステーブル
フリップフロップでセットアップ時間やホールド時間が守られないとき、出力がしばらく0とも1とも定まらない状態。非同期信号は2段のフリップフロップで同期化して対策する。

関連する比較