春節(jié)假期后的第二天,現(xiàn)在已經(jīng)是凌晨三點,辦公室里面的日光燈管在工程師的頭頂嘶鳴著,鼠標的點擊聲和鍵盤的按壓聲,在不斷地相互輝映著。
(說好的,春節(jié)假期回來后,兩周內(nèi)進行產(chǎn)品小批量生產(chǎn),然后交付給客戶。)
我揉了揉疲憊的雙眼,盯著示波器上扭曲的信號波形,第28次按下了Debug Tools上面的固件燒錄按鍵,心里面期待奇跡發(fā)生。
某臺樣機的LCD顯示屏,顯示圖像時依然存在撕裂現(xiàn)象,但作為一名飽經(jīng)風(fēng)雨的嵌入式軟件工程師,有時候我卻信奉,“硬件問題都是玄學(xué)”,。。。
“老溫,用最初制作的工程樣機,你的代碼確實是通過了單元測試。”,硬件組的林工,他把出問題產(chǎn)品的硬件測試報告推到我面時說道。
“但是你看,換了試產(chǎn)供應(yīng)商后做的樣機,這顆芯片的CLK時鐘線,在穿過六層板的第三信號層時,就會串?dāng)_DDR的信號?!?/p>
我看著他用手指點在那些蝌蚪般的蛇形走線上,疲倦的大腦突然意識到:阻抗和信號完整性,我為啥一直沒有注意到這個排查方向?!
“軟件調(diào)試了數(shù)十遍,結(jié)果,問題居然出現(xiàn)在硬件制作工藝的差異上?”,望著窗外漆黑的天際,我苦笑一聲。
作為一名嵌入式軟件工程師,平時都習(xí)慣了在代碼里面編織各種邏輯,卻從未像此刻這般渴望,渴望窺探電路板下銅箔與樹脂的微觀世界。
三天后。。。
“老溫,來試試這個新樣板?!保止と觼硪豢钚碌臉訖C,焊盤在太陽的照耀下泛著金色的光芒。
我問:“林工,這次改版跟前兩天調(diào)試的,有啥不一樣嗎?”
林工說:“我重新改進了DDR和CPU相關(guān)的布線,用了嘉立創(chuàng)的盤中孔工藝,并且重新進行了阻抗匹配,你再試試”。
--- 編譯、燒錄、按下RESET按鍵,一整套常規(guī)動作下來,
這一次,“奇跡”發(fā)生了,新樣機運行無誤,圖像照片終于可以完美地顯示在LCD屏幕上面。
“為何會如此神奇,林工,可以詳細說說你的改動嗎?”,我問。
林工說:“我問外包商拿了PCB源文件,發(fā)現(xiàn)他們Layout是用常規(guī)的BGA扇出布線方式,導(dǎo)致PCB上面有較多的過孔侵占布線空間?!?/p>
“他們?yōu)榱耸〕杀?,還換了PCB打樣的供應(yīng)商,又沒有注意高速信號的阻抗匹配,所以就導(dǎo)致了這次問題!”
林工接著說道,
“我在他們的基礎(chǔ)上,把BGA封裝的芯片改成嘉立創(chuàng)盤中孔了,也換了打樣供應(yīng)商,在嘉立創(chuàng)做6層板打樣?!?/p>
我來興趣了,接著問:“為啥盤中孔會有如此大的作用?”。
林工繼續(xù)耐心解釋:“當(dāng)常規(guī)的過孔侵占了30%的布線空間,我們可以考慮用盤中孔工藝,0.2mm的樹脂塞孔既能保持焊盤完整,又讓阻抗連續(xù)性提升了18%”。
“噢噢,原來如此,又學(xué)到了?!?,我似懂非懂地點了點頭。
“那你這次又沉金又盤中孔的,豈不是成本很高?”,我接著說。
林工笑著說,“你這寫代碼的不懂,在嘉立創(chuàng),6~32層打板時可以免費使用盤中孔+沉金加厚工藝,6層板還可以直接用免費打樣券,成本又進一步降低”。
“我比較過價格,10cm*10cm的6層沉金亞黑PCB樣板,在其他廠家光是沉金+盤中孔的工藝費用,就接近400!”
“反正樣板便宜,我現(xiàn)在先多整幾塊給你,你多驗證幾遍,沒問題就可以發(fā)布固件進入小批量了?!?,林工最后說道。
我看著桌面上一堆金燦燦的PCB和樣機,腦袋突然間陷入了思考,思考起嵌入式軟件和硬件之間的哲學(xué)關(guān)聯(lián)。
在嘉立創(chuàng)的高多層PCB設(shè)計指南里,我發(fā)現(xiàn)了硬件電路板與軟件分層架構(gòu),有著驚人的相似性:
- 電源層采用銅塊挖空技術(shù),如同代碼中的內(nèi)存池管理。
- 差分信號層錯位堆疊設(shè)計,堪比多線程的鎖機制。
- 混合介電常數(shù)材料應(yīng)用,像極了軟件里的緩存分級策略。
-?盤中孔像極了代碼里的“指針跳轉(zhuǎn)”,繞過堆棧溢出風(fēng)險;
- 六層堆疊堪比分布式系統(tǒng)的分層架構(gòu),讓電源、信號、地各司其職;
-?沉金工藝則如同嚴密的異常處理機制,將氧化與虛焊的概率收斂至零。
如今,我依然保持著嵌入式軟件工程師的“傲慢”,但工位上的《高速PCB設(shè)計秘籍》已經(jīng)逐漸開始與往年的《C++高級編程》并駕齊驅(qū)。
我在想:“真正的嵌入式全棧工程師,應(yīng)該既能用代碼馴服晶體管,也能讓銅箔的紋路吟誦出最優(yōu)的算法。”
我轉(zhuǎn)動板卡,讓陽光在沉金焊盤上折射出一道金色光芒,在這個時代,最優(yōu)雅的編程語言,可能就隱藏在1oz銅厚的微帶線里。
感謝閱讀,愿各位工程師在未來的日子里,信號完整,代碼無Bug!