SoC設計においては、複数のフリップフロップが同期して動作するため、
クロック設計とタイミング整合性の確保(Timing Closure)が非常に重要です。
本節では、クロック分配の基本と、STA(Static Timing Analysis)による検証手法を導入します。
┌──────────────┐
Clock → │ Flip-Flop 1 │ → 論理経路 → │ Flip-Flop 2 │
└──────────────┘ └──────────────┘
セットアップ時間を守らないと動作不良!
用語 | 意味 |
---|---|
セットアップ時間 | データがクロック前に安定している必要のある最小時間 |
ホールド時間 | クロック後もデータが保持されるべき最小時間 |
スラック(Slack) | 許容遅延と実遅延の差(余裕) |
クロックスキュー | クロックが異なる場所に到達する時間差 |
課題 | 対策 |
---|---|
セットアップ違反 | セル遅延の削減/高速セルへの置換/パイプライン挿入 |
ホールド違反 | インバータチェーン挿入/配線経路調整 |
クロックスキュー | クロックツリー合成(CTS)でスキュー最小化 |
演習 | 内容 |
---|---|
STAレポートの読解 | セットアップ/ホールド違反の検出例を解析 |
クロックツリー観察 | CTS後のクロック経路とスキューを可視化 |
スラック調整実験 | セルサイズ変更と遅延変化の影響を確認 |
OpenSTA
によりSTA検証が可能.lib
(セルの遅延特性)と .sdc
(制約条件)を用いて、設計のタイミング制約を確認できるread_liberty sky130.lib
read_verilog netlist.v
read_sdc constraints.sdc
report_checks
クロックとタイミングの設計は、動作の正しさを保証する基盤です。
次節では、これに加えて電源・リセット・I/Oといった周辺インフラ設計の基本を学びます。