Zynq 5cm基板−DDRデータ線はピンスワップで配線を優先 ― 中間VIAなしまで追い込んだ
English Summary
After defining the main routing and VIA regions, the next step was to route the DDR3 data lines.
The data interface was handled in Byte Lane groups, with each lane containing eight DQ signals, a DQS differential pair, and related signals such as DM. Two of the available signal layers were used mainly for DDR data routing in order to keep the layout as simple and organized as possible.
One useful advantage of FPGA-based DDR interfaces is that DQ pins can be swapped within the allowed Byte Group rules. Instead of forcing the PCB to follow the original schematic pin order, the schematic and FPGA pin assignments were adjusted so that the physical PCB routing became easier and more direct.
This approach worked very well. By using pin swapping and carefully selecting the routing layers, the DDR data lines could be routed without intermediate VIAs between the FPGA and DDR devices.
After the routing topology was completed, the traces were length-matched within each Byte Lane. The DQS differential pair was adjusted to approximately 0.03 mm or less of length difference, while the other signals within the Byte Lane were matched to within roughly 1 mm of the DQS reference.
This required more time than expected, but it resulted in a very clean data-side DDR layout.
The experience also reinforced an important FPGA PCB design principle: the schematic, FPGA pin assignment, and PCB layout should not always be treated as separate one-way steps. Moving back and forth between them can significantly simplify high-speed routing.
前回、DDR周辺でどこにVIAを置くか、どのあたりを配線領域として使うかをある程度決めました。
そこで次は、DDRのデータ側の配線を進めることにしました。
DDR3のデータ側では、DQとDQS、DMなどをByte Lane単位でまとめて考える必要があります。AMDのガイドでも、同じByte GroupのDQとDQSは、ブレークアウト部を除いて同じ層で配線することが推奨されています。
今回の基板では、データ配線のために信号層のうち主に2層を使い、できるだけほかの信号を入れずにDDRデータ線を優先することにしました。

DDRのデータ線はByte Lane単位で考える
DDR3の32bitデータバスでは、DQが32本あります。
これを大きな32bitの束として考えるのではなく、基本的には8bitずつのByte Laneとして扱います。
各Byte Laneには、
- DQ × 8
- DQS差動ペア
- DM
といった信号があります。
ここで重要なのが、DQSを基準として各データ信号の配線長を揃えていくことです。
ただし、この段階ではまず、
どうすれば配線そのものをきれいに通せるか
を考えました。
配線しやすいようにピンスワップする
DDRデータ側には非常に便利な特徴があります。
Zynqでは、一定のルールの範囲内でDDRのDQピンを入れ替えることができます。
AMDのガイドでも、同じByte Group内でのbit swappingが認められています。ただし、DQSなどは専用ピンの制約があるため、何でも自由に入れ替えられるわけではありません。
そこで今回は、
回路図を絶対としてPCBを無理に合わせるのではなく、PCBが配線しやすくなるように回路図側のDQ接続を変更する
という方法を取りました。
例えば、FPGA側から見て、
「このDQをこちらのDDRピンにつないだ方が直線的に配線できる」
という場合には、許される範囲でDQの割り当てを入れ替えます。
PCBを見ながら回路図を変更し、より素直な配線になるよう調整していきました。
結果として中間VIAをゼロにできた
このピンスワップがかなり効きました。
最終的にデータ側については、
FPGAとDDRの途中に入るVIAをゼロ
まで持っていくことができました。
BGAから信号を取り出すためのVIAは必要ですが、その後の配線途中で、
「ここで別の層へ逃げる」
という中間VIAを使わずにDDRまで到達できる形です。
VIAは便利ですが、高速信号ではできるだけ少ない方が扱いやすくなります。
今回のような小さな基板では配線距離そのものも短いため、Byte Laneごとに配線層を整理し、ピンスワップを活用することで、かなりシンプルなデータ配線にすることができました。
最後は等長配線をかなり追い込んだ
配線が通った後は、各Byte Lane内の配線長を調整しました。
ここは自分でも、
「ちょっと凝りすぎたかな」
と思うくらい時間をかけました。
DQS差動ペアについては、P/N間の配線長差を約0.03mm以下まで調整しました。
さらに同じByte Lane内のDQなどについても、DQSを基準としておおむね1mm以内の差になるように調整しました。
もちろんDDRでは、単純なPCB上のパターン長だけではなく、デバイス内部のpackage delayなども含めて考える必要があります。AMDのDDR設計ガイドでも、配線長を評価する際にはpackage delayを含めることが示されています。
それでも今回については、まずPCB上でもできる限りきれいに揃えておこうと考えました。
回路図とPCBを行き来する
今回のデータ配線で印象に残ったのは、
回路図を作ってからPCBを作る、という一方向の作業ではない
ということです。
PCBを配線して、
「このピン配置では配線しにくい」
と分かれば、許される範囲で回路図へ戻ってピンを入れ替える。
そしてもう一度PCBへ戻る。
この繰り返しです。
特にFPGAはピンアサインの自由度があります。
その自由度をPCB設計にも利用すると、配線をかなりシンプルにできる場合があります。
今回はその結果、
DDRデータ側を中間VIAなしで配線し、さらにByte Lane内の配線長もかなり細かく揃える
ところまで持っていくことができました。
時間はかなりかかりましたが、最終的なパターンを見ると、ここまでやった甲斐はあったかなと思っています。
次は、データ側よりさらに配線に苦労した、DDRのアドレス・コマンド側について書いてみたいと思います。
弊社では短期間基板開発を支援します
FPGAインフォメーションのページはこちらからどうぞ
お問い合わせは、こちらからです。
