3-8 タイミング設計と制約(STA)
FPGA設計では、
正しい論理を作ることと同じくらい
正しいタイミングで動作すること
が重要です。
このタイミングの正当性を確認するために用いられるのが
STA(Static Timing Analysis:静的タイミング解析)
です。
なぜタイミング設計が必要なのか
FPGA内部では、
LUT・配線・FF のすべてに
伝搬遅延
が存在します。
クロックが速すぎると、
- 信号が安定する前に次のクロックが来る
- 誤ったデータをFFが取り込む
といった問題が発生します。
クロック制約の基本
設計者は、
FPGAツールに対して
「この回路は何MHzで動かしたいか」
を制約として与えます。
代表的な制約には以下があります。
- クロック周期(create_clock)
- 入力遅延(input delay)
- 出力遅延(output delay)
これらは、
外部回路との関係
を明確にするために不可欠です。
セットアップタイムとホールドタイム
FFが正しく動作するためには、
- セットアップタイム:クロック前に安定している時間
- ホールドタイム:クロック後も保持される時間
を満たす必要があります。
STAでは、
すべての信号経路について
これらの条件が満たされているかを
実行前に解析
します。
CPUとの設計思想の違い
CPUでは、
クロックやパイプライン構造は
ハードウェア側で固定
されています。
FPGAでは、
設計者がタイミング責任を負う
という点が大きく異なります。
これは難しさでもありますが、
性能を最大限に引き出せる自由度
でもあります。