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