セットアップ時間・ホールド時間(Setup / Hold Time)は、フリップフロップなどの順序回路が入力データを正しく取り込むために必要な、クロックエッジ周辺のタイミング制約です。セットアップ時間はクロックエッジより前にデータが安定していなければならない時間、ホールド時間はエッジより後もデータを保持しなければならない時間を指します。
これらの制約が守られないと、フリップフロップが不安定な中間状態(メタステーブル)に陥り、出力が確定せず論理誤りを引き起こす恐れがあります。したがって、すべてのパスでセットアップ・ホールドを満たすようにタイミングを収束させる「タイミングクロージャ」が設計の重要工程になります。
セットアップ違反は動作周波数を下げれば回避できますが、ホールド違反はクロック周波数に依存せず、配線遅延やクロックスキュー(クロック到達時刻のばらつき)で起こるため、遅延素子の挿入などで個別に修正します。これらはスタティックタイミング解析(STA)で網羅的に検証します。
タイミング制約は論理合成や配置配線で最適化の目標として使われます。logic-synthesisやrtl、scan-testの各項とあわせて読むと、機能記述から実チップのタイミング検証までの流れが理解できます。ツールはSynopsys・Cadence・Siemens EDAが提供します。