王 慶
(武漢數(shù)字工程研究所 武漢 430205)
鼠標是一種很常用的電腦輸入設備,是計算機顯示系統(tǒng)縱橫坐標定位的指示器。它可以對當前屏幕上的游標進行定位,并通過按鍵和滾輪裝置對游標所經(jīng)過位置的屏幕元素進行操作。鼠標應用廣泛,使用對象不僅有傳統(tǒng)的計算機、測試設備,還有現(xiàn)在的智能電視、機頂盒,就連汽車、機器人等,也采用到了鼠標的功能技術[1~2]。
本文介紹了在J750Ex集成電路自動測試系統(tǒng)上測試鼠標控制器EM84510的方法。美國EMC公司的EM84510鼠標控制器可以工作在光電模式、鍵模式、機械模式等,應用廣泛[3~4]。美國 Teradyne公司的J750Ex數(shù)字集成電路測試系統(tǒng)的每個數(shù)字通道都擁有靈活的時間和電平配置[5],針對該芯片測試需求,能夠為EM84510提供足夠的測試資源。本文通過研究EM84510基于自動測試設備(Automatic Testing Equipment,ATE)的測試方法,運用該測試方法在J750Ex數(shù)字集成電路測試系統(tǒng)上開發(fā)測試程序、設計測試適配器、編制測試程序,最終完成EM84510的測試。
EM84510滾動鼠標控制器是專門用來控制PS/2鼠標的芯片[6]。EM84510的結構如圖1所示。EM84510有三個按鍵輸入L、M、R,三對方位輸入X1、X2、Y1、Y2和 Z1、Z2,對 Z1、Z2的設置可以使EM84510工作在多個模式:光電模式、鍵模式、電壓模式和機械模式。EM84510通過時鐘管腳CLK和數(shù)據(jù)管腳DATA與應用系統(tǒng)進行通訊。EM84510的時鐘由RC振蕩器產(chǎn)生,其中R需要外接,阻值為51*(1±5%)kΩ。外接51kΩ電阻時,振蕩器產(chǎn)生的頻率為37.5*(1±10%)kHz。振蕩器產(chǎn)生的時鐘經(jīng)內(nèi)部系統(tǒng)分頻后提供系統(tǒng)基準時鐘,對CLK和DATA進行時序控制。
圖1 EM84510的結構
對EM84510的測試分為三個方面:功能測試、直流參數(shù)測試和交流參數(shù)測試[7~8]。直流參數(shù)包括連通性測試、輸入高/低電平測試、輸出高/低電平測試、漏電流測試、電源電流測試等,其中,連通性測試主要測試每個管腳的開路、短路故障。交流參數(shù)主要是對頻率和輸入輸出傳輸延遲時間tphl、tplh等的測試。進行參數(shù)測試時,一般要使芯片工作在指定的狀態(tài),如輸出高電平測試時,指定管腳要輸出高電平。也就是說,只有在正確的功能狀態(tài)下才能進行參數(shù)測試[9]。
功能測試用于檢測芯片的功能。根據(jù)器件資料描述的功能進行測試,主要依據(jù)有波形圖、真值表等,由測試系統(tǒng)對器件施加激勵信號,然后檢測輸出端的數(shù)據(jù)是否正確。對器件測試最難的就是功能測試,功能測試中最難的往往是測試向量的編寫,實現(xiàn)測試系統(tǒng)與被測器件(DUT)之間的溝通。
鼠標的功能主要是定位和按鍵,對鼠標控制器來說,就是將輸入的定位信號和按鍵信號發(fā)送給系統(tǒng),以及接收系統(tǒng)的設置信號和反饋的控制信號。鼠標控制器與應用系統(tǒng)之間的數(shù)據(jù)傳輸比較簡單,每個數(shù)據(jù)幀都是由8位數(shù)據(jù)加上起始位0、奇校驗位和終止位1構成的,數(shù)據(jù)幀在鼠標控制器和應用系統(tǒng)之間進行串行傳輸。
由于信號比較簡單,因此我們可以采用“金器件[10]”的方法編制測試向量。如鼠標自動復位后輸出完成碼AA和00,在向量編寫時,只需要保持基本的輸入不變,書寫長度足夠的向量,將器件測試自動產(chǎn)生的輸出復制下來,對結果進行人工確認即可。并據(jù)此獲得鼠標向系統(tǒng)輸出的數(shù)據(jù)的格式。
當系統(tǒng)向鼠標輸入時,只需要將CLK拉低足夠長的時間(≥100μs),鼠標就會自動產(chǎn)生CLK時鐘信號,我們按照鼠標向系統(tǒng)輸出的數(shù)據(jù)的格式,在指定的CLK時鐘范圍內(nèi)加入數(shù)據(jù),等待鼠標的自動響應,并將結果復制下來,進行人工確認即可。
在對EM84510測試時,測試向量是容易獲得的,我們可以采用學習的方式。將被測器件上電后產(chǎn)生的信息復制下來,辨識是否正確。由于此時信號簡單,手動書寫即可完成。困難的是被測器件與測試系統(tǒng)之間的同步問題。對EM84510測試時,相同的測試向量,在不同次運行時,測試結果總會有些延遲或提前,不管CLK的信號屬于什么模式(RL(返回到0)、RH(返回到1)、還是NR(不返回))[11],都無法解決這一問題。究其原因,在于測試系統(tǒng)與被測器件之間的不同步。
EM84510的時鐘由RC振蕩器產(chǎn)生,外接51kΩ電阻時,振蕩器產(chǎn)生的頻率為37.5kHz左右。振蕩器產(chǎn)生的時鐘經(jīng)內(nèi)部系統(tǒng)分頻后提供系統(tǒng)基準時鐘,對CLK和DATA進行時序控制。我們用示波器觀測振蕩器頻率為35.1kHz~35.2kHz。而CLK有信號時,頻率為振蕩器頻率的3倍,如圖2所示,CLK(CH1)與振蕩器的輸出 OSC.OUT(CH2)十分同步。由于振蕩器是由外接電阻產(chǎn)生的,上電后振蕩器開始震蕩,鼠標自動運行。不受測試系統(tǒng)控制,被測器件難以與J750Ex同步。
圖2 EM84510工作時的CLK信號和OSC.OUT信號
經(jīng)實際測試,使用R=51k時,上電時間約為380ms左右,這段時間的不確定度至少有300μs。以CLK的時鐘約86μs計算,不確定度至少有三個CLK周期。對測試系統(tǒng)來說,測試結果很難定位在具體的某一條向量中。很顯然,這也不是更改時鐘周期能解決的問題。
因為時鐘不能夠被控制,失去了捕捉高低電平變化的同步點,所以只能以match(匹配)的方式來測試功能。與其他集成電路測試系統(tǒng)(如V93000)不同的是[12],J750Ex未能提供match指令。我們僅能利用測試圖形生成器(pattern generator)中的各種標志位和跳轉指令來實現(xiàn)match功能。
向量匹配要用到幾個向量操作碼,這些操作碼及描述如下所示[13~14]。
subr label:子程序定義,匹配時,調用匹配子程序。
set_loopX count:定義循環(huán)、設置循環(huán)次數(shù),X可以是A、B、C,count的范圍是1-65536。
Ign:對當前向量,無視‘Halt on Fail’。
pipe_minus X:對當前向量重復執(zhí)行,次數(shù)為(流水線深度-X)。
clr_flag(flag list):無條件的清除指定的標志位。
end_loopX label:循環(huán)的最后一句。執(zhí)行完后跳轉到label處,這里label標記的向量不能包含set_loop操作碼。(X 可以是A、B或C)。
if(flag)jump label:如果指定的標志位flag為真,執(zhí)行跳轉。
clr_cond:控制位,在條件語句中使用,如果條件為ture,則清除條件語句所使用的標志位。只能在條件語句中使用,且只能清除在當前向量測試中的條件。
clr_fail:清除fail計數(shù),清除fail累加寄存器(AFR)。
需要注意的是,clr_fail只能清除fail計數(shù),而不能清除fail標志位,而clr_cond和clr_flag具有清除標志位的功能。
在J750Ex中實現(xiàn)match功能的關鍵就是理解fail標志位的建立不是在當條向量運行失效時產(chǎn)生的,而是在N條向量之后設置的。這里的N,指的是J750Ex的流水線深度pipeline depth。在J750Ex的幫助文件中,會得到pipeline depth的參考值,但實際上,每個測試系統(tǒng)的N都是不一樣的。通過“pipe_minus 0”的執(zhí)行來獲得pipeline depth的具體數(shù)值,本文中N=43。
另外,fail標志位的清除也有滯后。clr_flag(fail)清除的fail是N條向量以前的fail,而無法清除前N條向量以內(nèi)的fail。
考慮到fail標志位置1和清0的滯后問題,我們設計了基于J750Ex的match設置方案,如圖3所示。
圖3 J750Ex的match方案
具體的代碼如下:
subr submatch: pipe_minus 0 //1運行N次正確向量
if(fail)jump setfail //2 如 果 有錯,設置失敗
set_loopA 50000 //3設置循環(huán),查找匹配點
loop1: if(fail)exit_loop extloop1//4 如果找到,退出循環(huán)
end_loopA loop1 //5
jump setfail //6如果沒找到,設置失敗
extloop1: pipe_minus 0 //7匹配后運行N次正確向量
clr_flag(fail)//8 清 除match過程產(chǎn)生的fail=1
return //9
在此過程中,要注意到實際的匹配點與exit_loop之間有N條向量的間隔,而pipe_minus 0又執(zhí)行了N條向量,因此,匹配點與return之間有2N+2條向量。在J750Ex的extended模式下,周期最小為20ns,所以從實際匹配點到return至少有20ns*(2N+2),N=43時,這段時間為1.76μs。對EM84510來說,其影響可以忽略不計。為了節(jié)省測試成本,match期間的周期可以調節(jié)到適合的大小,而不是最小的20ns。EM84510的CLK周期為86μs,可以設置match器件的周期為1μs,這樣match完后,向量正好運行至下個周期。
EM84510的測試主要是基于R=51kΩ,振蕩頻率為35kHz。在這種配置下,EM84510每次啟動需要約380ms(從上電到發(fā)送啟動碼AA和00)。每個測試項都執(zhí)行400ms,測完所有項,測試時間就需要幾秒鐘。如何能在不影響測試質量的情況下縮短測試成本呢?
從圖1中EM84510的結構圖可以看出,RC振蕩輸出將連接內(nèi)部系統(tǒng)時鐘。而器件管腳OSC.OUT在實際應用中沒有用處,至少在數(shù)據(jù)手冊中沒有看到實際用處。我們可以假設EM84510的內(nèi)部結構是這樣的,RC振蕩器的輸出同時連接到了OSC.OUT上和系統(tǒng)內(nèi)部時鐘上,如圖4所示。
我們直接由測試系統(tǒng)向OSC.OUT管腳輸入時鐘。事實上這是可行的。對器件沒有影響,而且可以將時鐘頻率增加數(shù)倍。振蕩器的工作頻率為35kHz左右,我們灌進的時鐘頻率可以提升數(shù)倍,使得最終測試的時間縮短,大大降低了測試成本[15]。
圖4 EM84510的時鐘結構
EM84510的工作需要R=51k電阻,但實驗證明,對OSC.OUT灌入時鐘也不會影響鼠標控制器的使用和測試,還能節(jié)省測試時間。為了兼顧EM84510自身的特性,在不減少故障覆蓋率的情況下,節(jié)省測試成本,我們設計了下面的測試電路。
EM84510在J750EX測試系統(tǒng)上的硬件連接方式如圖5所示,其中EM84510通過適配器與集成電路測試系統(tǒng)的數(shù)字通道相連。51kΩ電阻一端連接OSCR,另一端連接測試系統(tǒng)通道CHn。在程序中,將電阻連接到CHn通道的這一端命名為Rend,類型為I/O,當測試EM84510上電啟動功能時,輸入低電平,電壓值設為0V,等同于將R接地。此時振蕩器工作,用match方法測試EM84510的完成碼0xAA和0x00。
在其他測試項中,設置Rend輸出X(don't care),相當于懸空,振蕩器不會工作,這時,對OSC.OUT灌入高頻時鐘,測試鼠標控制器的其他功能。
需要注意的是,Rend從輸出X到輸入0,可以使振蕩器從不工作到工作。但反過來,Rend從0到X,卻不能讓已經(jīng)工作的振蕩器停止工作。因此,自啟動測試和其他功能測試必須在不同的測試項中。
圖5 EM84510測試硬件連接
對于像EM84510這樣的自有時鐘的芯片,芯片時鐘難以與集成電路測試系統(tǒng)完美契合時,我們需要用到測試向量同步匹配的方法。文中的J750Ex測試系統(tǒng)的測試向量同步匹配的方法,還可應用于觸發(fā)測試和那些讀寫時間不確定、等待時間長的芯片測試中。另外,通過合理地利用芯片管腳和測試系統(tǒng)通道資源對EM84510進行測試,不僅使測試程序的可靠性更高、重復性更好,還能節(jié)省測試成本,對其他集成電路的測試開發(fā)也具有借鑒意義。