作者 | 黃剛(一博科技高速先生團隊隊員)
做DDR的調(diào)試無非以下三種結(jié)果:調(diào)試fail、調(diào)試pass和調(diào)試很久才pass。你可能永遠也想象不到PCB工程師花幾天設(shè)計出來的DDR模塊在加工出來后調(diào)試就多久才pass,一天?一周?一個月?甚至……
高速先生近幾年來在DDR設(shè)計仿真取得了長足的進步,這要得益于AI(人工智能)的熱潮,作為該領(lǐng)域的核心產(chǎn)品,AI算力卡成為近年來各大通訊公司和芯片公司爭相研發(fā)的產(chǎn)品。而其中DDR模塊則是AI算力卡里最核心的模塊,支撐著算力卡大容量、快速的運算能力。
高速先生在和各大公司合作的情況下,也有機會接觸到了形形色色的AI算力卡,它里面的DDR模塊雖然實現(xiàn)的功能類似,但是具體的結(jié)構(gòu)卻有著很多的變化。例如容量的不一樣導(dǎo)致顆粒數(shù)量的不同;板子的大小不一樣導(dǎo)致采用的拓撲不同;PCB層數(shù)的不一樣導(dǎo)致DDR模塊的布局和密度也不相同;有的由于功耗電流大小不一樣導(dǎo)致DDR走線參考層也不相同,有的需要參考電源層,有的需要相鄰層走線;當然還有的就是需要跑到的目標速率不同,我們在設(shè)計上的設(shè)計裕量也會有所差異等等。因此對于我們高速先生來說,每一塊算力卡的DDR設(shè)計都是不同的,當然設(shè)計加工出來之后,我們和客戶配合著去調(diào)試的難度也是不一樣的。這一塊高速先生在近幾年的研討會上也和大家分享過一些經(jīng)典的案例,讓大家對DDR的設(shè)計和調(diào)試難度都有了新的認識,AI產(chǎn)品的一些特點關(guān)于它的設(shè)計使得比以往任何產(chǎn)品的DDR難度都要大一點,當然我們也就會有很多測試和仿真的案例了。這里關(guān)于DDR調(diào)試的案例,我們再給大家分享一個從fail到pass的經(jīng)歷哈。
在一個安靜祥和的午后,高速先生剛剛還略帶點午睡的困意開始下午的工作,就突然收到了客戶一份很“提神”的郵件,讓大家立馬精神了起來。
原來是客戶在我們公司設(shè)計加工的一款主力的AI算力卡出現(xiàn)了調(diào)試fail的問題,客戶本身是一家很有研發(fā)能力而且很嚴謹?shù)墓,它們對硬件原理和調(diào)試都是具有豐富的經(jīng)驗,然而這款產(chǎn)品的DDR模塊他們調(diào)試了幾周都依然沒辦法成功。由于是我司PCB工程師設(shè)計的板子,因此高速先生肯定是臨危受命,去負責介入到他們的調(diào)試中去。
高速先生打開PCB文件,看到了FPGA和C1這個DDR通道的連接,這個通道是由9個DDR顆粒組成,也就是我們所說的1拖9的DDR拓撲。由于板子的密度很大,因此只能采取正反貼的形式進行布局布線,如下圖所示。
由于FPGA芯片是有關(guān)于DDR的設(shè)計指導(dǎo)文檔,我司的PCB工程師和客戶在投板前也反復(fù)確認了該DDR模塊的設(shè)計是完全按照文檔上面每一條細致的指導(dǎo)去布線的。例如下圖的L0,L1,L2等每段長度文檔上都是有要求。
客戶就是因為覺得都按照了上面的設(shè)計指導(dǎo)進行布局布線,認為設(shè)計其實是達到了要求,因此才堅持著花費了近一個月的時間進行調(diào)試,希望能從調(diào)試中去解決問題。高速先生介入后,發(fā)現(xiàn)客戶的調(diào)試其實已經(jīng)做了很多內(nèi)容,包括驅(qū)動內(nèi)阻的變化,ODT電阻的變化,電源電壓的微調(diào),VTT電阻的改變,飛線等等,但是仍然無法達到額定的2400Mbps的速率。由于這個項目當時是沒有進行過我們高速先生仿真的,因此我們首先建議做一個debug形式的仿真,也就是在基于調(diào)試結(jié)果的仿真,看看仿真的測試的擬合度到底高不高,從中找出問題。
由于我們對xilinx的FPGA仿真模型和DDR顆粒的仿真模型都比較有信心,之前也做過很多仿真測試的對比,發(fā)現(xiàn)仿真和測試波形的擬合度是比較高的,再加上高速先生看到這個拓撲還是非常的復(fù)雜,因此有信心在客戶調(diào)試的配置參數(shù)下得出一個“差”的仿真結(jié)果!你沒聽錯,我們這種debug的仿真就是希望得到一個差的仿真結(jié)果,這樣才能和實際上調(diào)試fail的情況吻合上。
果然,高速先生希望的事情發(fā)生了,我們對地址控制信號進行仿真的時候,發(fā)現(xiàn)了距離FPGA最近的DDR顆粒的信號質(zhì)量是不滿足要求的,為什么要看距離主芯片最近的顆粒,這個高速先生已經(jīng)說過很多次了哈,這里就不再重復(fù)了。
同樣,根據(jù)客戶調(diào)試的情況,我們在仿真中選擇不同的驅(qū)動內(nèi)阻和VTT電阻的阻值,的確也和調(diào)試的情況類似,都不能得到一個很好的信號質(zhì)量。到這里,我們開了一個好頭,至少能在仿真中得到了和測試結(jié)果相對應(yīng)的結(jié)論。
但是高速先生在仿真中還能做些什么呢?我們雖然通過仿真找到了差的波形,但是這對于調(diào)試卻起不了太多指導(dǎo)的作用。因此我們繼續(xù)去通過仿真模型來看看,到底會不會還有什么驅(qū)動的配置我們可以嘗試過。我們打開FPGA的ibs模型,看到可選擇的以下驅(qū)動配置中,其實我們和客戶只用到了左邊的這種配置,上面有40到60歐姆內(nèi)阻的選擇,我們仿真和客戶調(diào)試都試過了,沒有明顯的改善。
但是我們驚訝的發(fā)現(xiàn),原來模型上還有綠色的兩列基本和之前紅色列的配置幾乎一樣的驅(qū)動內(nèi)阻可以選擇,但是唯一不同的是F,M和S的區(qū)別,因此高速先生再花點時間去掃描一下同樣是40歐姆驅(qū)動內(nèi)阻的情況下,F(xiàn),M和S下面這三種buffer到底會不會有差異呢?
結(jié)果讓高速先生感到驚訝的同時又感到興奮,原來在FAST,MEDIUM和SLOW模式下,對于同一個驅(qū)動內(nèi)阻的波形是有著明顯的差異。我們看到MEDIUM和SLOW模式下,信號的上升沿slew會變緩,這樣反而避免了部分的反射,使得信號的ringback減小,眼高的裕量變高。
關(guān)于上升沿與信號質(zhì)量的介紹,高速先生隊長還親自上場錄制了通俗易懂的視頻,可以關(guān)注下。
根據(jù)上面的掃描結(jié)果,我們選用MEDIUM的模式進行全通道的仿真,看看和之前fast模式的結(jié)果相比到底有沒有改善。
結(jié)果給高速先生帶來了喜悅,我們用MEDIUM模式去仿真的結(jié)果能夠得到明顯的改善,同樣的顆粒信號質(zhì)量變得可以接受了。
高速先生從FPGA模型的選擇上解決了問題,選取上升沿slew比較緩的驅(qū)動反而能夠獲得比較好的信號質(zhì)量。
到這里,我們就只剩下最后一個問題了,那就是到底我們能不能讓客戶在調(diào)試的參數(shù)配置中選擇MEDIUM的模式呢?客戶把他們調(diào)試的軟件界面發(fā)過來給我們,我們從下拉菜單中看到了的確有這種模式可以選擇,然后就讓客戶從默認的FAST模式自動換成MEDIUM的模式,看看效果有什么改善。
在大概等待了一天之后,客戶的一封報喜的郵件讓我們大家都輕松了下來,客戶調(diào)試了一個月之后,終于通過這個手動調(diào)試的buffer切換快速解決了問題。
|