フリップフロップのセットアップ時間の説明として正しいものはどれか。
- Aクロックのエッジのあとに、データを保持し続けなければならない最小時間
- Bクロックのエッジより前に、データ入力が安定していなければならない最小時間
- C電源を入れてから動作するまでの時間
フリップフロップからフリップフロップへの1本の経路について、静的タイミング解析(STA)と同じ考え方でセットアップとホールドの余裕(スラック)を計算します。遅延やスキューを変えて、どちらの条件が先に破れるかを確かめてみてください。単位はすべて ns です。
条件を満たす 違反
上段は最も遅いデータがセットアップの期限(破線)より前に届くか、下段は最も早いデータがホールドの期限(破線)より後に届くかを表しています。スラックが負なら違反です。
ほかの入力は今の値のまま、選んだ入力だけを今の値の1/4〜4倍の範囲で変えたときの結果です。赤い点が今の値です。
送信側のフリップフロップがクロックのエッジでデータを出してから、組み合わせ回路を通って受信側に届くまでの最も遅い時間は、クロック→出力遅延の最大値と組み合わせ回路の遅延の最大値の和です。これが、次のクロックのエッジ(周期+スキュー)からセットアップ時間とクロックの不確かさを引いた時刻より前でなければなりません。セットアップのスラックは「期限 − 到着時刻」で、負になると周期が足りず、周波数を下げるか遅延を減らす必要があります。
ホールドは、同じクロックのエッジで送信側が次のデータを出したとき、それが速く届きすぎて受信側がまだ取り込んでいる前のデータを壊さないかという条件です。最も早いデータの到着(クロック→出力遅延の最小値と組み合わせ回路の遅延の最小値の和)が、スキューとホールド時間の和より後でなければなりません。ホールドの条件にはクロック周期が入らないため、周波数を下げても直りません。違反はバッファを挿入して経路の遅延を増やして直します。
受信側のクロックが送信側より遅れて届く(スキューが正の)場合、セットアップには期限が延びて有利になる一方、ホールドには不利になります。スキューが負なら逆です。そのため、スキューをわざと付けてセットアップの厳しい経路を救う手法(有用スキュー)もありますが、ホールドの余裕を同時に確認する必要があります。実際のSTAでは、最悪の条件(遅いコーナーでのセットアップ、速いコーナーでのホールド)で全経路を調べます。
セットアップのスラックがちょうど0になる周期が、この経路での最小周期で、その逆数が最大動作周波数です。式では fmax = 1 / (クロック→出力遅延 + 組み合わせ回路の遅延 + セットアップ時間 + 不確かさ − スキュー) です。チップ全体の最大周波数は、最も遅い経路(クリティカルパス)で決まります。パイプラインの段数を増やして1段あたりの組み合わせ回路を短くすると、周波数を上げられます。
セットアップ違反は、クロック周波数を下げる、組み合わせ回路の遅延を減らす、パイプラインを分けるなどで直します。ホールド違反は周波数に依存しないので、バッファを挿入して最短経路の遅延を増やして直します。
両方に効き、向きが逆です。受信側のクロックが遅れる正のスキューはセットアップに有利でホールドに不利、負のスキューはその逆になります。
タイミングの期限に対する余裕の時間です。期限から実際の到着時刻を引いた値で、正なら条件を満たし、負なら違反です。