等長配線はどこまで詰めるか
「クロックとデータは等長に」と言われて、全部の配線を 0.1mm 単位で揃えている基板を見ます。1mm は 6.5ps です。その信号のタイミング余裕が 5ns なら、100mm ずれても問題ありません。
1mm は 6〜7ps
FR-4 の基板で、信号の伝搬遅延はマイクロストリップ(表層)で 6〜6.5ps/mm、ストリップライン(内層)で 7ps/mm 前後です。表層は空気に接しているぶん実効比誘電率が低く、速くなります。
等長配線の目的は、複数の信号の到着時刻を揃えることです。必要な精度は、その信号群のタイミング余裕(マージン)から逆算します。余裕が 100ps なら配線の差は 15mm 以内、余裕が 10ps なら 1.5mm 以内です。
つまり、等長配線を始める前に「この信号群のタイミング余裕は何 ps か」を知る必要があります。それを知らずに全部を 0.1mm で揃えるのは、配線に時間をかけているだけで、設計をしていることにはなりません。
要る信号と、要らない信号
SPI、I²C、UART、パラレルの低速バス。SPI が 20MHz なら周期 50ns、セットアップ・ホールドの余裕は数 ns 以上あります。100mm の差でも 650ps で、余裕の 1/5 以下です。等長は不要で、むしろ蛇行配線で長さを増やすほうが害があります。
ソースシンクロナスのバス(DDR、高速パラレル ADC など)。クロックやストローブと一緒にデータが送られ、受信側はストローブでデータをラッチします。DDR3-1600 ならデータの 1 ビットは 625ps で、その中でセットアップ・ホールドを確保するため、データとストローブの余裕は数十 ps しかありません。バイトレーン内(DQ0〜7 と DQS)は±0.5〜1mm 程度の精度が要ります。アドレス・コマンド・クロックはもう少し緩く、数 mm です。具体的な数字はメモリコントローラのメーカが設計ガイドで指定しているので、それに従います。
差動ペア。ペアの 2 本の長さ差(ペア内スキュー)は、信号の一部を差動からコモンモードに変えます。USB 2.0 High Speed(480Mbps、1 ビット 2.08ns)で 1mm 程度、USB 3.x や PCIe のような数 Gbps では 0.1〜0.3mm 程度を目安にします。ペアどうしの長さ差(ペア間スキュー)はプロトコル側で吸収できることが多く、要求は緩めです。
クロック分配。複数の IC に同じクロックを配るとき、各 IC でのクロックの到着差が、その IC 間のデータ受け渡しの余裕を食います。1 本のクロックで動く同期バスなら、余裕は周期の何割かで、100MHz(周期 10ns)なら 1ns(150mm)くらいの余裕があることが多いです。
| 信号 | 1 ビットの時間 | 等長精度の目安 | 換算 |
|---|---|---|---|
| SPI 20MHz、I²C、UART | 50ns 以上 | 不要 | — |
| 100MHz 同期パラレルバス | 10ns | ±10mm 程度 | ±65ps |
| DDR3-1600 アドレス/コマンド | 1.25ns | ±2〜3mm | ±15〜20ps |
| DDR3-1600 DQ/DQS(レーン内) | 625ps | ±0.5〜1mm | ±3〜7ps |
| USB 2.0 HS ペア内 | 2.08ns | ±1mm 程度 | ±7ps |
| PCIe Gen3 ペア内 | 125ps | ±0.1〜0.3mm | ±1〜2ps |
配線長を揃えても、遅延が揃うとは限らない
等長配線の道具は「長さ」ですが、揃えたいのは「遅延」です。長さが同じでも遅延がずれる要因がいくつかあります。
層による速度差。表層(6ps/mm)と内層(7ps/mm)では 15% 違います。100mm のうち 50mm を内層に引いた配線と、全部表層の配線では、長さが同じでも 25ps の差が出ます。同じ信号群は同じ層で引くか、層ごとの遅延を換算して長さを合わせます。
ビア。ビア 1 個は基板厚ぶんの垂直配線で、1.6mm なら 10ps 前後です。ビアの数を揃えるか、ビア 1 個を 1.5〜2mm の配線長として換算します。
蛇行配線の結合。長さを稼ぐために配線を折り返すと、折り返しの区間どうしが結合し、信号が短絡的に伝わって意図した遅延より短くなります。折り返しの間隔を線幅の 3〜4 倍以上あけ、折り返しの区間を短く多数にするより、少数の大きな折り返しにします。
パッケージ内の配線。BGA のボール位置とチップ上のパッドの間には、パッケージ内に数 mm〜十数 mm の配線があり、ピンごとに違います。DDR コントローラや FPGA のメーカは「パッケージ遅延テーブル」を公開しているので、基板の配線長にそれを足して揃えます。1mm の精度で揃えたいのにパッケージ内で 5mm 違う、ということが普通にあります。
手順
- デバイスの設計ガイドから、信号群ごとの等長要求(mm または ps)を読む。書いていなければ、タイミング余裕から逆算する。
- 同じ信号群は同じ層構成(表層か内層か、ビアの数)で引く。
- 最も長い配線を先に決め、他をそれに合わせて伸ばす。短くする方向には合わせられないので、最長の配線を無駄に長くしない。
- パッケージ遅延がある場合は、CAD に入れるか、手計算で各ピンの目標長を補正する。
- 蛇行の間隔は 3W 以上。折り返しは信号の受端側ではなく、長さ差の生じた場所の近くで入れる。
- 余裕がわからない信号は、揃えない。揃えるコストは配線面積と時間で、揃える利益はゼロ。
よくある質問
設計ガイドに等長の指定がない信号はどうすればよいですか。
0.1mm 単位で揃えることに意味はありますか。
差動ペアのペア内スキューは、ペアの端で補正すればよいですか。
等長のために配線が長くなり、インピーダンス整合が崩れませんか。
参考にした規格・資料
- JEDEC JESD79-3 (DDR3) / JESD79-4 (DDR4) — DDR のタイミング仕様。tDS / tDH などの余裕の根拠
- 各メモリコントローラ・FPGA メーカの基板設計ガイド — 信号群ごとの等長要求とパッケージ遅延テーブル
- USB-IF, USB 2.0 Specification — High Speed の信号品質要件
- H. W. Johnson, M. Graham, High-Speed Digital Design — 蛇行配線の結合、層による遅延差