間歇性內存故障處理起來可能會非常復雜。這些故障的根源可能是一種原因或多種不同原因的組合,包括BIOS錯誤、協議錯誤、信號完整性問題、硬件問題、內存或其它子系統問題。盡管有些團隊能夠迅速解決內存調試問題,但更多團隊在遇到間歇性故障時會束手無策。本文概括介紹了間歇性內存故障的調試方法,文中通過多個實例,說明了如何才能找出引起內存問題的不同原因。對于經常遇到系統未能引導或內存測試失敗的工程師來說,也可從本文介紹的調試方法中受益。
圖1:DDRII激活時的高分辨率定時軌跡。
各種子系統、不同工作模式和多種循環導致的串擾和資源沖突一直是引起許多間歇性內存故障的根本原因。對于間歇性內存故障,查找其根本原因的方法分成三步:1) 確定故障是否可以重復。試著復制產生故障的條件。重復故障通常可以有效地查看故障的特點。2) 使用普通探頭或插槽式分析探頭把內存總線連接到邏輯分析儀上,以迅速查看:整個DDRII總線的定時關系、百萬分之幾概率的誤碼、協議錯誤和時鐘質量。3) 用高速示波器及高帶寬探頭,在信號的接收端進行參數測量,包括:對于寫入內存的數據在SDRAM上進行探測和對于從內存讀出的數據在內存控制器上進行探測。
評估內存故障要考慮的因素
在試圖重建故障條件時,記住故障的根本原因可能來自未直接連接到內存上的子系統或子應用。局域網接入、子系統上電順序、進入或退出睡眠模式以及電源周期都是在評估內存故障時需要考慮的重要因素。
在某個特殊的測試或設置條件下隔離問題,可以使問題變的比較容易。例如,在某項測試過程中發生的故障可能會指向軟件程序或信號完整性問題,如串擾或碼間干擾。對可重復故障,用戶可以在故障條件下進行多次測量。
重復故障條件說起來容易,但做起來要難得多。需要考慮的細節包括:
圖2:CK0和S0的眼掃描(Eye Scan)。
軟件:是否有錯誤記錄?BIOS、操作系統和應用程序是否在測試時運行?
環境:在系統出現故障時室內溫度是多少?在故障期間,被測系統的空氣流動情況如何?系統供電是否在技術規范之內?
硬件:采用同一設計的其他系統是否已經通過驗證測試?其它系統也有故障?還是只有這個系統發生這種故障?故障系統的電路板、DIMM、處理器等是什么版本?故障系統與工作系統有什么區別?制造中最新的元器件有什么變化?
如果條件可以重復,那么在這些條件下進行測試;如果條件不能重復,那么選擇最好的內存進行測試,并按順序改變測試條件(如溫度極限和電源極限)。
用邏輯分析工具縮小問題區域
在調試 DDR系統時,邏輯分析有效地補充了高速示波器的限制。使用DDR探頭或插槽分析探頭進行邏輯分析,可以迅速查看系統中的問題區域。通過使用邏輯分析工具迅速縮小問題區域,然后使用高性能示波器檢查可疑的信號,工程師可以節約大量的時間。
邏輯分析儀系統提供了下列優勢:
通過簡單的連接,對全部 DDR總線進行64K深的高分辨率定時分析。64k深度信號可以從觸發前的100%調節到觸發后的100%。
獨特的高分辨率眼圖,可以識別百萬分之幾概率的故障信號。
可以從搜索功能中自動設置全局標尺(最多1024個)。
著色濾波功能可以識別軌跡的碼型,協助觀察內存訪問情況。
協議解碼轉換命令,用于進行功能性驗證。
全局標尺可以跟蹤波形和列表窗口。
對于使用同一時鐘的所有信號,使用眼圖測量可以一目了然地查看所有信號。
圖1中感興趣的測量包括:
時鐘周期測量。圖1中的系統是DDRII_400,時鐘周期是5ns。
使用標尺測量數據有效窗口,或使用鼠標在軌跡上移動,確定轉換寬度的分布情況。
從有效命令(指令時鐘 (CK0)的上升沿,其中CS低,位于WRITE/ READ命令期間)到數據脈沖期間第一個數據選通的上升沿,測得的RAS/CAS等待時間。
從有效激活(指令時鐘的上升沿,S0 = 0,其中命令 = Activate)到有效WRITE/CAS測得的RAS/CAS時延。
刷新速率。
預充電間隔。
圖3:著色濾波器使工程師能夠迅速識別表明內存訪問問題的碼型。
在圖1中,用標尺標出的明顯問題區域中,S0 (片選)偶爾會在CK0 (指令時鐘)上升沿的250ps范圍內啟動。
這可能要超出DDRII 400 建立/保持時間(Ts/Th)》600ps的指標。為正確檢驗建立時間和保持時間,我們必需使用高速示波器和探頭探測SDRAM上的CK0/CK0#和片選。如果Ts/Th對任何信號處于邊際狀態,那么它可能會導致間歇性的或持續的內存故障。
在我們連接示波器探頭,檢定S0的Tsetup /Thold之前,我們可以使用邏輯分析儀上的眼圖測量功能,進一步評估邊際定時關系。請看圖2中所示的眼圖:1. CK0是方形波。2. S0是三角形波,構成了與CK0的上升沿有關的眼圖。3. S0上升時間慢可能是這個系統中間歇性系統故障的根本原因。邊沿慢使得眼圖變差,減少了建立時間(Tsetup)。4. 從百萬分之幾概率的故障信號中識別潛在問題。百萬分之幾的故障信號會在眼圖內部顯示為綠色的斑點。在本例中,沒有證據表明存在故障信號。邊沿慢是主要問題。
圖4:邏輯分析儀上的眼測量功能可以一目了然地了解內存總線信號關系。
圖2中的系統要求使用示波器,最終確定片選信號的建立時間(Tsetup)。下面使用邏輯分析儀快速查看內存系統的實例將介紹,增加著色濾波的獨特方法如何通過碼型識別了解內存訪問的概貌,從而迅速發現協議錯誤。
在實例中邏輯分析儀上設置了著色濾波器,以幫助定位關閉頁面超限,在這種情況下,針對一個存儲區(Bank)的READ或WRITE命令沒有與激活啟動存儲區的命令同步。著色濾波器設置成為存儲區bank0(B0)提供紅色陰影,為存儲區bank1(B1)提供藍色陰影。粉紅色=B0激活,紅色=B讀,青綠色=B激活,淺藍色=B1讀。著色濾波使得工程師能夠使用碼型標識,同時查看波形,識別要求進一步檢測的區域。
在圖3中,B0激活(粉紅色)在一系列B0 READ(紅色)命令之間前 。但是,屏幕左邊B1讀(淺藍色)之前,沒有B1激活(青綠色)。如果B1最后激活沒有落在允許的規定時間范圍內,則表明發生了問題。
使用邏輯分析儀的最后一個實例,介紹如何使用邏輯分析儀上的眼測量功能。眼圖測量工具提供了相對于時鐘邊沿參考點為0s,從+5ns到-5ns的信號的單一電壓門限眼圖。
眼圖測量一目了然地提供了:時鐘占空比、噪聲和信號完整性問題、數據有效窗口和眼圖閉合和通道間時滯。
眼圖測量是校準邏輯分析儀取樣位置的最快速的方法。在圖4中,上面的屏幕顯示了采用干凈的差分時鐘的DDRII系統上的眼定位(Eye Finder)結果。從眼定位(Eye Finder)結果中,我們注意到:1. 從T=0任一側同等尺寸的白色區域(眼)中可以看出,指令時鐘的占空比是50%。
2. T=0時,指令時鐘細長的轉換區域 (黃色)表明了干凈的時鐘邊沿。
下面的屏幕是采用非純凈(有噪聲)時鐘的DDRI系統。我們通過查看Eye Finder結果,發現時鐘是不純凈的:1. 指令時鐘的轉換區域很寬。2. CK0和CK0#取樣的單端眼不對稱。不對稱的眼也可能表明邏輯分析儀門限不正確。
用高速示波器和探頭進行測量
圖5:READ和WRITE選通圖取決于探測位置。
為確定故障的根本原因,通常要求使用高速示波器和探頭進行參數測量。對DDRII測量,使用配有7GHz探頭的20Gs/s采樣、6GHz帶寬的示波器可以為系統特性驗證提供精確的測量功能。需要在示波器上測量的參數包括:建立保持時間Ts/Th、上升時間、時鐘過沖、頻率和抖動分析軟件。
探頭位置對在信號特性驗證中進行精確的參數測量至關重要。最重要的是:1. 在內存控制器上探測READ數據和選通;2. 在 SDRAM上探測WRITE數據和選通。圖5是T=0時相對于DQS5上升沿和下降沿的邏輯分析儀眼掃描(Eye Scan)測量結果。測量結果是在DIMM插槽中使用插槽分析探頭獲得的。
在圖5中,WRITE選通的眼圖很大,形狀很好。插槽分析探頭上的探頭位置與SDRAM足夠近,因此信號中沒有反射。插槽分析探頭上的反射使READ選通劣化。眼圖足以對選通偏移和脈寬進行相對測量。但是,總線上的位置不足以實際檢定READ業務的特征。
圖5還說明了探頭位置的重要性,因為在插槽分析探頭上查看時,READ信號的幅度失真,與內存控制器上的實際眼圖幾乎沒有類似之處。為精確地查看內存控制器看到的READ數據,示波器探頭必需放在內存控制器上。微型探頭前端使這一任務成為可能。許多技術領導者使用本文中介紹的工具和技術,來驗證和調試高速內存系統。許多工程師已經采用節約時間的工具,他們可以更快地調試及更好地查看系統性能。
評論
查看更多