1 存儲器芯片測試
存儲器芯片是在特定條件下用來存儲數字信息的芯片。存儲的信息可以是操作代碼,數據文件或者是二者的結合。根據特性的不同,存儲器可以分為以下幾類,如表1所示。
2 存儲器術語的定義
在討論存儲器芯片測試之前,有必要先定義一些相關的術語。
寫入恢復時間(Write Recovery
Time):一個存儲單元在寫入操作之后到能正確讀取之前這中間必須等待的時間。
鎖存時間(Hold Time) :輸入數據電平在鎖存輸入時鐘之后必須保持的時間間隔。
數據保存時間(Pause
Test):存儲器單元能保持它們狀態的時間,也是存儲器內容能保持時間的測試。
刷新時間(Refresh Time) :存儲器刷新前的最大允許時間間隔。
建立時間(Setup Time):輸入數據電平在鎖存時鐘之前必須穩定保持的時間間隔。
速度(Speed):功能速度測試是通過重復地進行功能測試,同時改變芯片測試的周期或頻率來完成的。測試的周期通常使用二進制搜索的辦法來進行改變。這些測試能夠測出芯片的最快運行速度。
讀取時間(Access
time):通常是指在讀使能,芯片被選中或地址改變到輸出端輸出新數據的所需的時間。讀取時間取決于存取單元排列次序。
3 存儲器芯片所需的功能測試
存儲器芯片必須經過許多必要的測試以保證其功能正確。這些測試主要用來確保芯片不包含以下任何一種類型的錯誤:
存儲單元短路:存儲單元與電源或者地短路。
存儲單元開路:存儲單元在寫入時狀態不能改變。
相鄰單元短路:根據不同的生產工藝,相鄰的單元會被寫入相同或相反的數據。
地址開路或短路:這種錯誤引起一個存儲單元對應多個地址或者多個地址對應一個存儲單元。這種錯誤不容易被檢測,因為我們一次只能檢查輸入地址所對應的輸出響應,很難確定是哪一個物理地址被真正讀取。
存儲單元干擾:它是指在寫入或者讀取一個存儲單元的時候可能會引起它相鄰的存儲單元狀態的改變,也就是狀態被干擾了。
4 存儲器芯片測試時用于錯誤檢測的測試向量
測試向量是施加給存儲器芯片的一系列的功能,即不同的讀和寫等的功能組合。它主要用于測試芯片的功能錯誤。常用的存儲器測試向量如下所示,分別介紹一下他們的執行方式以及測試目的。
全“0”和全“1”測試圖形:共含 4n個圖形內容
執行方式:對所有單元寫“1”再讀取驗證所有單元。對所有單元寫“0”再讀取驗證所有單元。
目的: 檢查存儲單元短路或者開路錯誤。也能檢查相鄰單元短路的問題。
棋盤格(Checkerboard)測試圖形:共含 4n個圖形內容
執行方式:先運行0-1棋盤格向量,也就是第一個單元寫1,第二個單元寫0,第三個單元再寫1,依此類推,直到最后一個單元,接下來再讀取并驗證所有單元。再運行一個1-0棋盤格向量,就是對所有單元寫入跟0-1棋盤格完全相反的數據,再讀取并驗證所有單元。
目的:
這是功能測試,地址解碼和單元干擾的一個最基本最簡單的測試向量。它還能檢查連續地址錯誤或者干擾錯誤,也通常用它作為存取時間的測量。
行進(Marching)測試圖形:共含 5n個圖形內容
執行方式:先對所有單元寫0.讀取第一個單元,再對第一個單元寫1。再讀取第二個單元,再對第二個單元寫1,依此類推,直到最后一個單元。最后再重復上述操作,只是寫入數據相反。
目的:
這是功能測試,地址解碼和單元干擾的一個最基本最簡單的測試向量。它還能檢查連續地址錯誤或者干擾錯誤,也通常用它作為存取時間的測量。
行走(Walking)測試圖形:共含 2n^2個圖形內容
執行方式:先對所有單元寫0,再讀取所有單元。接下來對第一個單元寫1,讀取所有單元,讀完之后把第一個單元寫回0。再對第二個單元寫1,讀取所有單元,讀完之后把第二個單元寫回0。
繼續用“1”走遍整個存儲單元,然后全寫“1”,用“0”走遍整個存儲單元。
目的:
檢查所有的地址解碼錯誤。它的缺點是它的運行時間太長。假設讀寫周期為500ns,對一個4K的RAM進行行走(walking)圖形測試就需要16秒的測試時間。如果知道存儲器的結構,我們可以只進行行或者列的行走(walking)圖形測試以減少測試時間。
Galloping寫入恢復測試圖形:共含12n^2 個圖形內容
執行方式:對所有單元寫0。再對第一個單元寫1(基本單元),讀取第二個單元,然后返回來讀取第一個單元。再對第二個單元寫0,讀第二個單元。接下來再在其它所有單元和基本單元之間重復這個操作。等第一個單元作為基本單元的操作完成之后,再把第二個單元作為基本單元,再作同樣的操作。依此類推,直到所有單元都被當過基本單元。最后,再重復上述過程,但寫入數據相反。
目的: 這是功能測試,地址解碼測試和干擾測試一個極好的向量。如果選擇適當的時序,它還可以很好地用于寫入恢復測試。同時它也能很好地用于讀取時間測試。
其他的測試向量都類似于以上這些向量,都基于相同的核心理念。
5 動態隨機讀取存儲器(DRAM)
動態隨機讀取存儲器(DRAM)的測試有以下的一些特殊要求:
①行地址和列地址在相同的地址線上輸入(行列地址復用)。他們分別通過RAS和CAS信號來鎖存。
②需要在固定的時間間隔內對芯片進行刷新。
③DRAM能夠進行頁操作。因此需要保持行地址不變而改變列地址(或者相反)。
6 邏輯器件測試介紹
邏輯芯片功能測試用于保證被測器件能夠正確完成其預期的功能。為了達到這個目的,必須先創建測試向量或者真值表,用于檢測被測器件的內部故障。按故障覆蓋率設計的真值表只能檢測覆蓋的故障。測試向量與測試時序結合在一起組成了邏輯器件功能測試的核心。
7 測試向量
測試向量-也稱作測試圖形或者真值表-由輸入和輸出狀態組成,代表被測器件的邏輯功能。輸入和輸出狀態是由字符來表示的,通常1/0用來表示輸入狀態,L/H/Z用來表示輸出狀態,X用來表示沒有輸入也不比較輸出的狀態。事實上可以用任何一套字符來表示真值表,只要測試系統能夠正確解釋和執行每個字符相應的功能。
測試向量是存儲在向量存儲器里面的,每行單獨的向量代表一個單一測試周期的“原始”數據。從向量存儲器里輸入的數據與時序,波形格式以及電壓數據結合在一起,通過通道電性能驅動電路施加給待測器件。待測器件的輸出通過通道電性能電路上的比較電路在適當的采樣時間與存儲在向量存儲器里的數據進行比較。這種測試被稱作存儲響應。
測試向量序列,除了待測器件的輸入輸出數據,還可能包含測試系統的一些運作指令。比如,時序的實時變換意味著以一個又一個向量之間的時間值或信號的格式發生變化了。輸入驅動器可能需要被打開或者關閉,輸出比較器也可能需要選擇性地在周期之間開關。許多測試系統還支持像跳轉,循環,向量重復,子程序等微操作指令。不同的測試儀,其測試儀指令的表示方式可能會不一樣,這也是當把測試程序從一個測試平臺轉移到另一個測試平臺時需要做向量轉換的原因之一。
比較復雜的芯片,其測試向量一般是由芯片設計過程中的仿真數據提取而來。仿真數據需要重新整理以滿足目標測試系統的格式,同時還需要做一些處理以保證正確的運行。通常測試向量是由上百萬行的獨立向量構成的。測試向量或者仿真數據可以由設計工程師,測試工程師或者仿真工程師來完成,但是要保證成功的向量生成,都必須對芯片本身和測試系統有非常全面地了解。
8 測試資源的消耗值
當開發一個功能測試時,待測器件各方面的性能與功能都要考慮到。以下這些參數都要仔細地進行測試:
·VDD Min/Max (待測器件電源電壓)
·VIL/VIH (輸入電平)
·VOL/VOH (輸出電平)
·IOL/IOH (輸出負載電流)
·VREF (IOL/IOH轉換電平值)
·測試頻率(測試使用的周期)
·輸入信號時序(時鐘/建立時間/保持時間/ 控制)
·輸入信號格式(輸入信號的波形)
·輸出時序(在周期內何時對輸出進行采樣)
·向量序列(向量文件內的開始/停止點)
上述的這些列表說明了功能測試會占用測試系統的大部分資源。功能測試主要由兩大塊組成,一是測試向量文件,另外一塊是包含測試指令的主測試程序。測試向量代表了測試待測器件所需的輸入輸出邏輯狀態。主測試程序包含了保證測試儀硬件能產生必要的電壓,波形和時序等所必需的信息,如圖1所示。
當執行功能測試的時候,測試系統把輸入波形施加給待測器件,并一個周期一個周期,一個管腳一個管腳地監控輸出數據。如果有任何的輸出數據不符合預期的邏輯狀態,電壓或者時序,該功能測試結果為失效器件。
到現在我們討論了相對簡單的存儲器和數字芯片測試的基本測試技術。在此文接下來的兩章里,我們將討論測試更為復雜的混合信號和射頻/無線芯片的獨特要求。 |