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