卻崩?ESD在高速Serdes鏈路中的隱性破壞與防護(hù)要點(diǎn))
從事高速有線設(shè)計(jì)這些年有一個(gè)問題我琢磨了很久——為什么很多設(shè)備明明扛過了ESD測(cè)試芯片也沒燒卻在現(xiàn)場(chǎng)動(dòng)不動(dòng)“莫名其妙”地重啟、斷鏈、死機(jī)甚至跑著跑著誤碼率就上來了。大家習(xí)慣性地把ESD當(dāng)作“燒芯片”的元兇可實(shí)際上ESD還有另一面它不燒你的芯片但能精準(zhǔn)地毀掉你的系統(tǒng)。尤其是在serdes、高速有線鏈路里這種隱蔽的邏輯陷阱遠(yuǎn)比想象中常見。這篇內(nèi)容我不打算講教科書上的ESD基礎(chǔ)而是想結(jié)合我實(shí)際調(diào)試過的serdes鏈路、PHY、交換機(jī)和接口板聊一聊ESD如何通過“非顯性損傷”的方式破壞系統(tǒng)功能以及我們?cè)谠O(shè)計(jì)階段如何提前堵住這些坑。不管你是做硬件、畫PCB還是調(diào)嵌入式軟件只要你在碰高速有線傳輸這篇文章應(yīng)該能幫你少走不少彎路。1. 為什么ESD沒燒芯片系統(tǒng)卻悄悄崩了1.1 一個(gè)容易被忽略的事實(shí)ESD正在以三種方式搞亂系統(tǒng)先明確一個(gè)前提ESD真正把芯片打穿、打炸的案例反而是少數(shù)。大多數(shù)時(shí)候防護(hù)器件和IC內(nèi)部的保護(hù)結(jié)構(gòu)都扛住了物理沖擊芯片功能完好pin腳也能正常讀寫寄存器。但這不代表系統(tǒng)就安全了。第一種常見路徑是電源毛刺。ESD脈沖注入后最直接的受害者往往不是信號(hào)腳而是電源網(wǎng)絡(luò)。瞬態(tài)電流在電源走線和地平面之間激起電壓跌落或過沖如果幅值超過了芯片電源域的上電復(fù)位閾值輕則影響PLL的鎖定狀態(tài)重則直接觸發(fā)全局復(fù)位。很多設(shè)備表現(xiàn)在“工作一段時(shí)間后自己重啟”其實(shí)某個(gè)瞬間就是ESD打在了外殼或連接器上耦合進(jìn)了內(nèi)部電源軌把復(fù)位管理器給“忽悠”了。第二種是邏輯電平翻轉(zhuǎn)。低速控制信號(hào)、復(fù)位腳、中斷腳、使能腳這些信號(hào)通常沒有高速信號(hào)那么強(qiáng)的抗干擾能力。ESD耦合過去之后只要幾十納秒的電平毛刺就能讓一個(gè)GPIO從高變低觸發(fā)看門狗計(jì)時(shí)或者讓PHY以為收到了掉線信號(hào)。芯片本身沒壞邏輯狀態(tài)卻被篡改了。第三種是閂鎖效應(yīng)。CMOS電路內(nèi)部天然存在寄生PNPN結(jié)構(gòu)ESD瞬態(tài)一旦把某個(gè)寄生可控硅觸發(fā)導(dǎo)通電源和地之間就會(huì)形成低阻大電流路徑。這種狀態(tài)下芯片沒燒但電流異常增大系統(tǒng)表現(xiàn)為掛死、發(fā)燙、必須斷電才能恢復(fù)。遇到過幾次設(shè)備“重啟沒用必須拔電”的情況最后查到根因就是靜電觸發(fā)了閂鎖。這三種路徑有一個(gè)共同特點(diǎn)失效表現(xiàn)不是“某個(gè)器件壞了”而是“系統(tǒng)整體行為異?!薄E挪殡y度因此直線上升因?yàn)槟憧床坏揭粋€(gè)明確的物理故障點(diǎn)。1.2 從“物理損傷”到“邏輯陷阱”高速鏈路為何格外脆弱如果說上面的問題在低速系統(tǒng)里也會(huì)發(fā)生那serdes和高速有線鏈路則是把這種風(fēng)險(xiǎn)放大了好幾倍。Serdes鏈路的完整工作依賴一整套精密的模擬與數(shù)字協(xié)同發(fā)送端的Driver、接收端的均衡器、CDR時(shí)鐘恢復(fù)、PLL、鏈路狀態(tài)機(jī)以及PHY和MAC之間的協(xié)議握手。這些環(huán)節(jié)里任何一個(gè)被ESD瞬態(tài)干擾后果都不是“某個(gè)電平錯(cuò)了”而是整個(gè)鏈路要重新訓(xùn)練。我們用過不少serdes PHY寄存器里能清楚看到ESD發(fā)生后Lane進(jìn)入了Recovery狀態(tài)然后重新Auto Negotiation、重新對(duì)齊。整個(gè)過程中芯片沒有物理損傷但業(yè)務(wù)中斷了十幾毫秒甚至幾百毫秒。更隱蔽的是ESD對(duì)接收端誤碼率的長期影響。高速鏈路的眼圖本身就有代價(jià)預(yù)算發(fā)射端和接收端的均衡能力已經(jīng)把裕量用得差不多了。ESD如果在接收端殘留下一個(gè)毛刺或者通過地彈影響了CDR的采樣時(shí)刻BER就會(huì)悄悄惡化。短時(shí)間看鏈路還“up”但誤碼不斷累積最終觸發(fā)協(xié)議層的錯(cuò)誤計(jì)數(shù)或重啟機(jī)制。還有一類容易被忽略的“受害者”——AC耦合電容。Serdes鏈路里收發(fā)端之間通常會(huì)串一個(gè)電容隔直比如0.1uF或者0.22uF。ESD脈沖的巨大di/dt和瞬間高壓長期重復(fù)沖擊之下這類電容的絕緣性能可能被一點(diǎn)點(diǎn)劣化。表面上看電容沒擊穿但ESR變了、漏電流大了直流偏置點(diǎn)悄悄偏移最終導(dǎo)致鏈路誤碼。這屬于典型的“慢性毀系統(tǒng)”路徑之一。2. 藏在“保護(hù)”背后的信號(hào)完整性代價(jià)2.1 防護(hù)器件不是免費(fèi)的一個(gè)皮法足以壓垮整條鏈路既然ESD這么可怕那給每個(gè)高速I/O都加上TVS管是不是就萬事大吉了沒那么簡單。ESD保護(hù)器件本身會(huì)引入寄生電容而且這個(gè)電容對(duì)高速信號(hào)來說是實(shí)打?qū)嵉呢?fù)擔(dān)。拿10Gbps以上的serdes舉例。每個(gè)TXP/TXN差分對(duì)上的ESD保護(hù)器件如果結(jié)電容是1pF那在10GHz以上的頻段上它就會(huì)形成明顯的容性負(fù)載改變走線阻抗增加插入損耗和反射。眼圖的張開會(huì)變小抖動(dòng)預(yù)算會(huì)被壓縮系統(tǒng)速度快一點(diǎn)就頂不住。以前調(diào)試過一條鏈路加防護(hù)前眼高還可以加了一排“全能型”TVS之后眼圖直接閉合最后只能降速跑。所以高速鏈路的ESD選型核心不是“鉗位電壓越低越好”而是“寄生電容越小越好”?,F(xiàn)在的超高速ESD保護(hù)器件可以把結(jié)電容做到0.2pF到0.3pF專門為USB4、PCIe、25G以太網(wǎng)這類場(chǎng)景設(shè)計(jì)。如果是RS232、CAN這些低速總線1pF甚至幾pF的電容完全無所謂但你要是把同款管子放到serdes差分線上那就是災(zāi)難。這也就是為什么很多高速板卡上保護(hù)器件要專門區(qū)分“高速線用低容ESD管控制線用普通TVS”不能圖省事全部統(tǒng)一。還有個(gè)細(xì)節(jié)容易被忽略ESD保護(hù)器件的封裝寄生電感同樣重要。封裝越大、引腳越長寄生電感越大ESD瞬態(tài)時(shí)壓降就越大保護(hù)效果反而變差。這也是為什么現(xiàn)在高速ESD管越做越小封裝從SOT-23卷到0201。2.2 從“I/O口掛TVS”到“系統(tǒng)級(jí)隔離”高速設(shè)計(jì)需要換思路在高速鏈路里做ESD防護(hù)不能只看單個(gè)器件得像搭積木一樣做層次化設(shè)計(jì)。第一層是連接器外殼和屏蔽層的接地處理。金屬外殼的連接器要可靠接地靜電優(yōu)先從殼體泄放而不是往芯線上沖。這一層做不好后面再多的TVS都是亡羊補(bǔ)牢。第二層是共模電感。很多serdes PHY的參考設(shè)計(jì)里TX/RX差分線對(duì)后面會(huì)放一顆共模扼流圈。它平時(shí)濾共模噪聲ESD來襲時(shí)也能起到一定的抑制和隔離作用讓殘余電流不那么猛烈。很多設(shè)計(jì)只看重TVS卻忽視了共模電感在ESD路徑里扮演的角色。第三層才是低電容ESD保護(hù)器件。位置很講究要盡量靠近連接器但同時(shí)也要保證它到PHY之間的走線阻抗連續(xù)。有些設(shè)計(jì)把ESD管放得離PHY很近結(jié)果高速走線中間被一個(gè)焊盤的寄生電容生生“砸”出一個(gè)反射點(diǎn)ESD保護(hù)到位了信號(hào)完整性反而崩了。這種案例在實(shí)驗(yàn)室里屢見不鮮。第四層是電源和地的系統(tǒng)隔離。高速系統(tǒng)的ESD問題經(jīng)常不是走信號(hào)線進(jìn)來的而是從電源地平面耦合進(jìn)來的。這時(shí)候要用到電源端的TVS、足夠的去耦電容、合理的地平面分隔。ESD泄放路徑的設(shè)計(jì)核心就一句話讓靜電電流走一條預(yù)先規(guī)劃好的、低阻抗的、不經(jīng)過關(guān)鍵芯片的路線。凡是沒規(guī)劃的路徑ESD都會(huì)自己“開發(fā)”出來而且專挑你最脆弱的地方走。3. 高速鏈路ESD防護(hù)設(shè)計(jì)的實(shí)操要點(diǎn)3.1 選型不只看“鉗位電壓”高防護(hù)與低寄生怎么平衡很多工程師選ESD保護(hù)器件喜歡盯著“±8kV接觸放電、±15kV空氣放電”這種參數(shù)看這沒錯(cuò)但只有這個(gè)是不夠的。在高速鏈路上你需要關(guān)注一套更完整的參數(shù)組合工作電壓要略高于信號(hào)線上的直流電平否則正常工作就已經(jīng)把ESD管導(dǎo)通信號(hào)直接磨平。鉗位電壓要低于被保護(hù)器件的最大額定值最好留出20%以上的裕量別貼著極限選。結(jié)電容是高速線上的硬指標(biāo)serdes差分對(duì)建議選0.3pF以下的型號(hào)千兆以太網(wǎng)這類可以用0.5pF到1pF的低速總線則無所謂。漏電流要小尤其是在高密度板卡上漏電累積起來會(huì)變成不明不白的功耗和電壓漂移。響應(yīng)速度要快真正抗ESD的管子大多是響應(yīng)時(shí)間亞納秒級(jí)的選型時(shí)優(yōu)先選動(dòng)態(tài)鉗位特性好的產(chǎn)品。我自己的習(xí)慣是先把鏈路速率和信號(hào)電平定下來然后推導(dǎo)出允許的最大負(fù)載電容再反推保護(hù)器件的型號(hào)。舉個(gè)例子一條工作在5Gbps的serdes差分線信號(hào)擺幅在1V左右差分阻抗100歐姆。這時(shí)我傾向選工作電壓在3.3V、鉗位電壓在6V以下、結(jié)電容0.2pF等級(jí)的TVS陣列。同時(shí)會(huì)在保護(hù)器件和PHY之間預(yù)留一個(gè)0歐姆電阻位萬一實(shí)測(cè)發(fā)現(xiàn)信號(hào)完整性受損可以換成磁珠或者小阻值電阻做緩沖。這里特別強(qiáng)調(diào)一點(diǎn)廠商datasheet里標(biāo)稱的結(jié)電容有的是在0V偏置下測(cè)的有的松一點(diǎn)、有的緊一點(diǎn)。選型時(shí)最好結(jié)合具體應(yīng)用——信號(hào)線上有直流偏置時(shí)實(shí)際電容會(huì)比標(biāo)稱值略小。但無論如何預(yù)留的容性裕量不要超過總預(yù)算的10%到15%否則后面EMC整改時(shí)你會(huì)非常被動(dòng)。3.2 布局與泄放路徑讓靜電走該走的路選對(duì)了管子只完成了一半。同樣的ESD管布局差一截效果可以差出一大截。我自己畫高速板卡時(shí)對(duì)ESD相關(guān)的布局有幾條硬規(guī)矩第一條ESD保護(hù)器件必須靠近連接器引腳放置走線盡量短直接連到連接器的信號(hào)腳上不要繞。原因很簡單ESD脈沖的上升沿可以快到幾百皮秒走線每長一毫米引入的寄生電感和額外的壓降都會(huì)讓保護(hù)效果打折扣。第二條ESD管的接地引腳要單獨(dú)打過孔下到地平面而且這個(gè)過孔不能跟高速信號(hào)的回流過孔湊在一起。靜電電流是瞬態(tài)大電流如果它和信號(hào)回流共享過孔就等于把瞬態(tài)噪聲直接灌進(jìn)信號(hào)的回流路徑里地彈立刻飆升。正確做法是保護(hù)器件附近單獨(dú)打一組過孔讓ESD電流就近泄放到接地平面。第三條高速信號(hào)線從連接器到保護(hù)器件的這段阻抗控制要做但別在保護(hù)器件下面開“天窗”。有些工程師為了隔離地和信號(hào)地把ESD管下方的平面挖空了結(jié)果寄生電感變大保護(hù)性能跳水。更好的做法是保證完整參考平面讓ESD電流有一個(gè)低阻抗路徑。第四條金屬殼連接器的外殼接地腳要很粗很短地連接到機(jī)殼地而不是PCB的地。機(jī)殼地、信號(hào)地、電源地這三者之間是“單點(diǎn)連接”的關(guān)系不是直接大平面互通的。很多ESD問題都是因?yàn)闄C(jī)殼地和PCB地混在一起導(dǎo)致靜電直接耦合進(jìn)內(nèi)部電路。另外還有一個(gè)小技巧在連接器附近尤其是電源引腳和低速控制引腳上可以額外放一些陶瓷電容和磁珠它們對(duì)ESD高頻能量也有一定抑制作用。雖然它們不是專門的ESD器件但在系統(tǒng)級(jí)防護(hù)里是實(shí)打?qū)嵉妮o助力量。4. 那些讓人頭大的“非顯性”故障現(xiàn)象與排查實(shí)錄4.1 典型故障場(chǎng)景ESD后鏈路掉鏈、系統(tǒng)重啟芯片卻完好先分享一個(gè)真實(shí)案例。某臺(tái)設(shè)備使用serdes PHY做高速有線傳輸現(xiàn)場(chǎng)偶爾會(huì)報(bào)“鏈路斷開又自動(dòng)恢復(fù)”有時(shí)甚至整機(jī)重啟。拿到設(shè)備后芯片檢測(cè)沒任何問題寄存器讀寫正常幾路電源對(duì)地也不短路看起來完全健康。后來我們把設(shè)備送去過ESD抗擾度測(cè)試現(xiàn)象終于復(fù)現(xiàn)了。接觸放電打外殼連接器的時(shí)候鏈路指示燈瞬間熄滅大概幾百毫秒后重新建立連接。通過PHY的寄存器日志我們看到ESD發(fā)生的瞬間Lane狀態(tài)從L0跳到了RecoveryRX的誤碼計(jì)數(shù)器跳了一大截之后又重新完成了訓(xùn)練和對(duì)齊。整個(gè)過程里芯片毫發(fā)無損但設(shè)備在這幾百毫秒里是完全斷業(yè)務(wù)的。對(duì)某些場(chǎng)景來說這就是一次“事故”。另一個(gè)案例是看門狗復(fù)位。嵌入式系統(tǒng)里外掛看門狗芯片是常規(guī)操作但如果看門狗芯片的喂狗IO線從ESD泄放路徑附近經(jīng)過或者復(fù)位輸出線離連接器太近ESD耦合進(jìn)來的毛刺就會(huì)讓看門狗誤判系統(tǒng)異常強(qiáng)行拉低復(fù)位腳。表現(xiàn)就是設(shè)備原本跑得好好的某次插拔線纜或者人員走動(dòng)后突然重啟重啟后功能又恢復(fù)正常。這種故障在現(xiàn)場(chǎng)極難抓因?yàn)榈饶氵^去的時(shí)候設(shè)備早就自己恢復(fù)了日志里只留下一行“上次復(fù)位原因是外部復(fù)位”。排查這類“看不見的ESD”問題時(shí)我的經(jīng)驗(yàn)是三步定位。第一步通過復(fù)位管理器、PHY寄存器、錯(cuò)誤計(jì)數(shù)等記錄縮小故障模塊的范圍。第二步用示波器對(duì)可疑信號(hào)做長時(shí)間監(jiān)控比如在復(fù)位腳、電源軌、PHY的中斷腳上掛探頭等故障復(fù)現(xiàn)。第三步如果有條件用ESD發(fā)生器做系統(tǒng)級(jí)復(fù)現(xiàn)測(cè)試分別對(duì)連接器殼體、屏蔽層、縫隙打放電看哪個(gè)點(diǎn)、哪個(gè)極性最容易觸發(fā)異常。多打幾次規(guī)律基本就摸出來了。4.2 從“事后抓兇”到“設(shè)計(jì)階段避坑”測(cè)試方法與儀器經(jīng)驗(yàn)ESD測(cè)試領(lǐng)域有兩個(gè)層面的標(biāo)準(zhǔn)很多人容易混。器件級(jí)的HBM、CDM模型針對(duì)的是芯片本身在制造、搬運(yùn)、貼片過程中的靜電抗性而系統(tǒng)級(jí)的IEC 61000-4-2才是模擬現(xiàn)實(shí)使用中人體放電對(duì)整機(jī)的影響。我們判斷一個(gè)產(chǎn)品耐不耐ESD一定要以系統(tǒng)級(jí)標(biāo)準(zhǔn)為準(zhǔn)。測(cè)試時(shí)除了看芯片有沒有損壞更要在放電后對(duì)所有功能做一遍完整檢查鏈路是否重新訓(xùn)練、復(fù)位是否有額外發(fā)生、內(nèi)存是否有軟錯(cuò)誤、外設(shè)是否還能正常枚舉。這就牽扯到工具使用。抓ESD波形不能拿普通10x探頭直接懟在信號(hào)線上因?yàn)镋SD的瞬間能量可能通過探頭燒壞示波器前端。正確做法是用衰減探頭、或者通過同軸電纜加外置衰減器來觀察。如果只是想判斷某個(gè)管腳的電壓是否超過芯片的絕對(duì)最大額定值可以用專門的ESD殘壓測(cè)量套件但成本比較高。一般經(jīng)驗(yàn)是先測(cè)電源軌的殘余毛刺再測(cè)受保護(hù)信號(hào)線的殘余波形對(duì)比保護(hù)器件前后的差異確認(rèn)防護(hù)方向正確。實(shí)測(cè)ESD時(shí)還有一個(gè)細(xì)節(jié)一定要讓設(shè)備處于真正“工作中”的狀態(tài)來打靜電而不是放在測(cè)試臺(tái)上空閑著。很多設(shè)備待機(jī)時(shí)邏輯狀態(tài)簡單靜電打上去沒什么反應(yīng)但業(yè)務(wù)滿負(fù)荷跑時(shí)一個(gè)微小的時(shí)鐘抖動(dòng)就能導(dǎo)致采樣錯(cuò)位。我們后來把ESD測(cè)試流程改成了“滿負(fù)載業(yè)務(wù)加自動(dòng)巡檢腳本”的方式打一次靜電自動(dòng)檢查一次鏈路狀態(tài)這才把很多隱性問題暴露出來。在排查完所有問題之后還可以在軟件層面做一道兜底防線。比如在PHY驅(qū)動(dòng)里增加鏈路異常檢測(cè)和自動(dòng)恢復(fù)機(jī)制把ESD引起的短暫掉鏈當(dāng)作一種“可恢復(fù)事件”處理而不是直接讓系統(tǒng)崩潰在系統(tǒng)管理層面增加異常復(fù)位原因記錄便于現(xiàn)場(chǎng)快速判斷是不是電源或復(fù)位被干擾了。硬件防護(hù)和軟件容錯(cuò)雙管齊下系統(tǒng)的“抗ESD毀壞能力”才能真正提上來。最后再分享一點(diǎn)個(gè)人體會(huì)。高速有線設(shè)計(jì)里ESD和信號(hào)完整性就像蹺蹺板的兩端拼命堆防護(hù)會(huì)壓垮眼圖只顧信號(hào)質(zhì)量又會(huì)把芯片暴露在風(fēng)險(xiǎn)里。真正好的設(shè)計(jì)是清楚地知道每一條高速線的寄生預(yù)算有多少每一個(gè)連接器的泄放路徑在哪每一顆保護(hù)器件的位置為什么在那里。如果你也在調(diào)試“芯片沒壞、系統(tǒng)卻老出怪毛病”的問題不妨先把ESD這條隱蔽的路徑排查一遍很多看似玄學(xué)的故障其實(shí)都有非常物理的原因。