クロックツリー合成(CTS:Clock Tree Synthesis)とは、配置配線の工程で、クロック信号を1つの発生源(PLLなど)からチップ内の数十万〜数百万個のフリップフロップへ、ほぼ同じタイミングで届けるための配線網(クロックツリー)を自動生成する作業です。クロックはすべての同期回路の拍子を取る信号であり、届くタイミングがずれると回路が正しく動作しなくなるため、配置と配線の間に独立した工程として行われます。
CTSで管理する主な指標は次の2つです。(1)スキュー:各フリップフロップにクロックが到着する時刻のばらつき。大きいとセットアップ時間やホールド時間の違反につながります。(2)レイテンシ(挿入遅延):発生源から末端までの遅延の絶対値。長いほど電圧・温度のばらつきの影響を受けやすくなります。CTSツールはバッファやインバータを多段に挿入し、配線長と負荷を均等化することでスキューを抑えます。
クロックツリーは消費電力の大きな割合を占めます。クロック信号は毎サイクル必ず0と1を往復するため、配線容量の充放電が常に発生し、チップの動的消費電力の3〜4割がクロック網で消費されることもあります。このため、使っていないブロックへのクロック供給を止めるクロックゲーティングの挿入や、ツリーの段数と配線長の最小化がCTSの重要な目標になっています。
構造にはいくつかの型があります。汎用的なのはバッファを木構造に並べるバッファツリーで、高性能プロセッサでは配線を格子状につないでばらつきを平均化するクロックメッシュや、左右対称のHツリーが使われます。また、あえてスキューを付けて遅いパスに時間を融通する「有用スキュー(useful skew)」という手法もあり、CTSはスキューを減らすだけでなくタイミング最適化の手段としても使われています。