クロックスキューとジッタ
同期設計の前提条件は「全てのFFに同時にクロック信号が分配されること」であるが、現実のクロック信号は厳密には同時ではなく、配線遅延やゲート遅延によりFFごとに時間差がある。この時間差をクロックスキューと呼び、通常は最短と最長の差で定義する。(一般にskewとは同時に起きるべきイベントに時間差が生じることを指す)
またクロック信号自体のエッジの位置も一定ではなく、オシレータの変動や信号波形の歪みによりノミナル位置からばらつく。この時間差をジッタと呼び、通常はノミナルからのずれで定義する。
これらのスキューとジッタを考慮に入れると、FF間転送のタイミング条件は次のように修正される。
tCO + tPD(max) < tPERIOD - (skew + jitter) - tSU ・・・(1)
tHD + (skew + jitter) < tCO + tPD(min) ・・・(2)
したがって正確に言うと、クロックが同時であるとはこのクロックスキューとジッタが一定値以下に管理されているということである。FPGAにはグローバルバッファが備わっていてこれを使えば、全FFに対してクロックスキューが一定値以下に抑えられるようになっている。逆に、このグローバルバッファを使っていないFFは転送のタイミング条件は保証されない。