
DDR3不跑等長印象里第一版投板后讀寫時序偶發(fā)不穩(wěn)定排查了整整一周才把矛頭指向那組地址線——兩端相差了將近800mil。后來老老實實在Altium Designer里補蛇形走線一次解決問題。這些年做高速PCB蛇形走線幾乎是繞不開的必修課DDR總線、USB差分對、HDMI、PCIe只要時序上要求嚴格它就一定出場。所以這篇把我實際做等長布線時的原理理解、軟件操作、參數(shù)設置和踩過的坑整理出來適合剛接觸Altium Designer、正打算認真做高速板的朋友也給已經會畫但沒深究過為什么的人一個參考。1. 為什么高速PCB等長布線繞不開蛇形走線1.1 時序對齊的本質物理長度不等于信號延遲很多新手會把等長單純理解為讓所有走線一樣長這個說法不完整。真正要滿足的是時序要求也就是信號的傳播時間要對齊而傳播時間由物理長度、傳播速度共同決定。信號在PCB走線里的傳播速度取決于周圍介質的介電常數(shù)。FR4板材的介電常數(shù)一般在4.2到4.6之間信號在表層微帶線中的傳播速度大約是每英寸165到180皮秒在內層帶狀線中會更慢一些大約每英寸180到190皮秒。也就是說表面走線和內層走線即使物理長度完全相同信號到達的時間也有差異。做等長布線時必須以時間預算為標尺而不是簡單地以長度標尺。Altium Designer中規(guī)則設置最后都會落到物理長度單位上是因為軟件已經根據(jù)疊層參數(shù)幫你把時間換算成了長度。1.2 等長布線的幾種實現(xiàn)手段與蛇形的取舍彌補長度偏差的手段不是只有蛇形走線這一種。理論上你可以在布線階段就把所有相關網絡的物理路徑設計成一致長度但這在實際操作中極其困難——芯片引腳分布決定了某些線必然更近或更遠。更常見的做法是所有線先按最短路徑、合理路徑走完然后以其中最長的線作為基準在較短的線上額外繞出蛇形段來補足長度。其他可選的補償手段還包括調整走線層讓高速信號統(tǒng)一走同一層但這空間成本太高。調整過孔位置來改變走線路徑長度只能做小幅修正。在BGA扇出階段就規(guī)劃好所有線的長度工程量大且容易出錯。蛇形走線之所以成為主流是因為它能在占用較小面積的前提下提供很大的長度補償范圍而且Altium Designer提供了半自動化的交互式長度調整工具繞線的效率遠高于手工畫折線。2. 動手設置前的準備工作網絡分組與規(guī)則建立2.1 用Net Class和Match Length規(guī)則鎖定等長目標打開PCB文件后第一步不是急著繞線而是先建立網絡分組和等長規(guī)則。在Altium Designer中等長規(guī)則位于Design - Rules - High Speed - Matched Net Lengths。雙擊該規(guī)則進入設置界面你會看到兩個關鍵部分規(guī)則適用范圍Where the object matches和參數(shù)約束。實際項目中我通常把DDR總線的數(shù)據(jù)線、地址控制線分別建組。方法有兩種在原理圖編輯器中為網絡添加Net Class屬性同步到PCB。直接在PCB面板中選中網絡右鍵 - Place - Net Class批量添加。我習慣在原理圖階段就把網絡分組做好因為等長規(guī)則的可讀性更強。給DDR數(shù)據(jù)線組命名如DDR_DQ地址控制線組命名如DDR_ADDR到PCB階段直接引用這些類名。2.2 目標長度從哪來時序預算的實操換算建立規(guī)則后需要設定容差和基準長度。這里的基準長度不是隨便填的應該來自芯片數(shù)據(jù)手冊中的時序參數(shù)。以DDR3為例數(shù)據(jù)線組DQ/DQS與DQS的時序偏差通常要求控制在幾十皮秒量級換算到FR4板材上大約對應正負20到50mil。地址控制線組相對寬松常見要求是正負100到200mil。實際操作為了留出設計余量我會把數(shù)據(jù)線的等長容差收緊到正負10到20mil地址線收緊到正負50到100mil。這雖然會增加繞線工作量但避免了板材參數(shù)波動帶來的風險。目標長度的確定方法在Altium Designer中有兩種思路第一種先完成所有相關網絡的布線查看最長的那根網絡長度將它設為規(guī)則中的目標長度。這種方法更適合空間緊湊、繞線余地有限的板子。第二種根據(jù)芯片設計規(guī)范直接計算目標長度。假設DDR控制器規(guī)格要求DQS與CLK的時序偏差在正負15皮秒以內表層走線傳播速度約170皮秒/英寸那么對應長度偏差就是約正負88密爾。但注意這是假定的寬松值實際DDR3數(shù)據(jù)線會更嚴格。實際操作中我更推薦先用第一種方法把所有線按比較自然的方式布完用PCB面板查看長度分布挑出最長的那組再設置規(guī)則。這樣不容易出現(xiàn)規(guī)則目標長度設定過大空間根本繞不開的尷尬。3. 在Altium Designer里實操蛇形走線的完整步驟3.1 用Interactive Length Tuning工具做初次繞線相關網絡布好線、規(guī)則也設定好了接下來就是真正的蛇形走線操作。菜單路徑是Route - Interactive Length Tuning。也可以直接按快捷鍵T R在交互式布線狀態(tài)下按Shift R切換模式。這個工具的使用邏輯是選中一根已經布好的走線點擊走線然后往一個方向拖動鼠標軟件會自動按你設定的振幅和間距生成蛇形彎折同時狀態(tài)欄實時顯示當前長度與目標長度的差值。操作時我建議先設定好參數(shù)再點擊走線否則默認參數(shù)往往偏大繞出來密密麻麻一大片后期很難看。3.2 振幅、間距和節(jié)距這三個參數(shù)該怎么擰在起點長度調整交互模式下按Tab鍵打開屬性面板你會看到幾個直接影響繞線效果的關鍵參數(shù)。振幅Amplitude蛇形折彎的寬度也就是蛇形段向外凸出的距離。振幅越大每個蛇形周期提供的額外長度也越大但占用橫向空間越多。我通常設在30到60mil之間。BGA器件內部走線空間小用30mil起步比較安全。間距Gap相鄰兩段蛇形臂之間的凈距。很多人會忽略這個參數(shù)但它直接決定了串擾風險。經驗值是間距至少達到3倍線寬。常規(guī)走線線寬5mil間距最好大于等于15mil。如果空間不允許底線是10mil再小就容易出問題。節(jié)距Period/Style蛇形折彎的重復周期。程序提供Accordion、Trombone、Ammeter等幾種樣式實際效果略有差異。Accordion手風琴式是最常見的折彎角度較大長度補償效率高。Trombone長號式更平滑適合差分對和高速單端信號但補償長度效率略低。還有一點屬性面板上方有一個Style下拉菜單里面提供了不同的蛇形走線形狀選項。單端信號用Accordion完全沒問題差分對我建議用Trombone或Sawtooth原因后面避坑部分會詳細說。3.3 繞完后的手工微調與實時長度校驗參數(shù)設置完成后開始拖動鼠標在走線上滑過一段距離優(yōu)美的蛇形彎折就自動生成了。此時注意右下角PCB Status欄里的長度讀數(shù)綠色說明已達標紅色說明還不夠或超出。如果實際需要的補償長度比較大一次拖動可能不夠。繼續(xù)在同一段走線上拖動直到滿足目標長度如果繞過頭了按Shift R切換回布線狀態(tài)重新拖動即可。蛇形生成后還可以手工微調。選中蛇形的某個節(jié)點會出現(xiàn)角度和長度的控制手柄。實際操作中我很少動這些手柄——直接重新執(zhí)行長度調整工具更高效避免蛇形形狀不規(guī)整導致制造工藝問題。每次調整完成后按一下數(shù)字鍵盤上的3僅當你配置了快捷方式時或在PCB面板查看該網絡的長度確認最終值在規(guī)則容差內。4. 蛇形走線落地過程中最常見的五個坑4.1 無腦把最長網絡當基準導致繞線空間不足很多人布線完成后把最長的網絡當成等長目標結果過長的網絡正好位于BGA底部或者板邊周圍根本沒有足夠的空間給其他網絡繞蛇形。更合理的做法是在布局和布線階段就有意識地控制最長網絡的位置和路徑。我在做DDR布線時會先在原理圖階段標注關鍵芯片的位置讓DQS數(shù)據(jù)線與DQS時鐘信號分布在相對居中的區(qū)域。這樣即使它是較長的網絡其他較短的網絡依然有足夠的空間進行蛇形補償。如果空間實在有限還有一個小技巧以較短的網絡為目標長度來設計走線趨勢然后在長網絡上適當繞短一點或改走到內層。但要先核算時序預算確認還有余量。4.2 蛇形折臂間距小于3W引發(fā)隱性串擾這是蛇形走線中最隱蔽的問題之一。蛇形走線通過并行靠近的折臂產生長度補償?shù)@種并行結構同時也帶來了耦合電容和互感。如果折臂間距太小信號會在蛇形段內部形成不必要的串擾嚴重時甚至引發(fā)信號質量的明顯劣化。我實測過一組5mil線寬、間距只有8mil的蛇形線仿真結果顯示相鄰折臂間的耦合比常規(guī)布線大了將近一倍。解決方法是要么加大間距要么把補償長度分配到更長的蛇形段上避免密集折返。如果空間實在沒辦法滿足3W原則至少把蛇形折臂的間距做到10mil以上并把布線區(qū)域附近的時鐘信號或敏感信號移開。4.3 表層內層混用后的等價長度陷阱很多4層板的地線或DDR地址線會在表層和內層之間切換。表層微帶線速度高于內層帶狀線同樣是1英寸長度信號到達時間的差異接近10%。如果在匹配長度時只看物理長度而忽略了參考層的差異那么即使DRC報告顯示所有網絡都在等長容差內實際時序依然可能偏差很大。解決這個問題有兩個思路。第一個不同層走線的網絡分組不同時混用比如整個DDR數(shù)據(jù)組要么全走表層要么全走內層。實際項目中這不一定做得到BGA扇出總會打到底層。第二個在計算補償長度時針對內層走線做等效換算。換算方式內層實際長度乘以一個比例系數(shù)比如0.93加上表層長度作為等效長度再拿這個等效長度去做等長匹配。Altium Designer本身沒有自動做這種換算的功能需要手動在Excel里算批量整理所有相關網絡各層段的長度。4.4 差分對內蛇形走線的特殊注意事項差分信號的等長要求比單端更嚴格因為差分對內部的正負信號必須保持嚴格的相位關系偏差過大會導致共模噪聲增大。差分對需要等長時我?guī)缀醪挥肁ccordion樣式因為這會讓折返的兩條線產生不對稱的耦合對共模噪聲的抑制效果變差。更穩(wěn)妥的是用Trombone樣式它的彎折更平緩在補償長度的同時保持差分對兩側的對稱性。另外差分內部的蛇形線間距要保持和正常差分對一致的線間距不能因為蛇形走線的彎折而變大或變小。我通常會在規(guī)則中單獨為差分對建立一個更嚴格的等長規(guī)則容差直接給到正負5mil。4.5 參考平面斷裂與蛇形走線區(qū)域的協(xié)同問題蛇形走線本身不會導致參考平面斷裂但如果你為了讓蛇形走線而改變了布線通道很可能把本來完整的參考平面切割出縫隙。比如在地平面完整的區(qū)域為繞蛇形而把走線引到了靠近板邊或靠近隔離帶的位置就可能使走線下方的回流路徑被迫繞大圈。這帶來的問題是信號的回流面積變大回路電感增加可能抵消掉等長帶來的時序收益。每次繞完蛇形后切到參考平面層看一眼確認蛇形區(qū)域下方沒有長的開槽或阻斷面這是一個花不了幾秒?yún)s能省下大麻煩的習慣。5. 投板前的復核清單與個人實操心得5.1 DRC跑過不代表萬事大吉復核的重點網絡判定等長規(guī)則設置完成后很多人直接批量DRC看到綠色對勾就覺得萬事大吉。實際上常規(guī)DRC主要檢查規(guī)則范圍內是否存在違反項而等長的真正實現(xiàn)程度還需要看兩個東西長度面板數(shù)據(jù)和信號完整性評估。在Altium Designer中打開PCB面板切換到Nets模式可以按網絡查看長度信息。如果你建立了Net Class還可以從下拉菜單選擇類查看整組長度分布。一個有代表性的做法是把這個面板里的最大最小值和規(guī)則容差值放在一起對比如果最大誤差只是勉強卡在容差內建議再看一眼是否還有調整余量。對于真正的高速板我還會用Signal Integrity面板選關鍵網絡跑一輪快速反射仿真。雖然這功能沒有HyperLynx或SIwave專業(yè)但對判斷蛇形走線有沒有引入明顯反射非常直觀。5.2 制板廠視角的工藝確認蛇形走線在制造環(huán)節(jié)最容易出問題的是銅皮間距和蝕刻精度。折臂間距如果逼近廠家最小線距能力制造良率會明顯下降。投板前我會生成制造輸出之前專門針對蛇形區(qū)域做一次視覺檢查打開單層顯示放大到1密爾網格精度確認沒有出現(xiàn)尖角、鋸齒、間距過小等異常。對于引腳間距極密的BGA區(qū)域蛇形走線的振幅寧可小一點也不要頂著空間極限繞。另外一個工藝細節(jié)蛇形段的銅皮寬度在蝕刻后會比直線段略窄這是因為拐角處的電流密度更集中。要求較高的板子我會把蛇形段的線寬按正常走線增加1mil。最后分享一下我的工作習慣。每一個等長組繞完線后我會立即截圖保存長度面板數(shù)據(jù)標注時間和修改內容放進項目文件夾。這樣一旦后面改版或者需要回看設計決策所有數(shù)據(jù)都有據(jù)可查。整個等長過程不是繞上蛇形線就結束而是時序目標 - 布線分組 - 參數(shù)設定 - 繞線補償 - 數(shù)據(jù)復核的一個完整閉環(huán)。每一個環(huán)節(jié)看起來都簡單但真正把整個流程走扎實高速板上的時序問題大概率不會再來找你。