從傳統(tǒng)意義上講,測試工程師將進行測試編程,并將其輸入計算機或其他控制器。這類程序可能包括測試執(zhí)行程序以及函數(shù)程序與其他子程序。執(zhí)行程序通過以適當?shù)捻樞騺碚{用不同的函數(shù)或子程序,從而控制測試流程。函數(shù)和子程序通過向測試系統(tǒng)中的儀器發(fā)送命令等對其進行配置并啟動測試。它們對數(shù)據(jù)進行處理和評估,并對待測器件做出通過/失效決策,對數(shù)據(jù)進行存檔。通常,對于每個測試的待測器件來說,控制器都將為各儀器發(fā)送命令序列,并不斷對得到的數(shù)據(jù)進行評估?刂破鱗1]與儀器之間的所有這些通信都可能大大降低測試速度。2600系列測試腳本處理器[2]允許將大部分控制程序下載至數(shù)據(jù)源表的易失性或非易失性內存。下載至TSP的程序稱作腳本。 腳本可能是一個執(zhí)行多項測試的較長程序。 依照良好的編程規(guī)范,可以編寫出創(chuàng)建和調用函數(shù)的腳本,就像計算機中的控制程序一樣。一旦函數(shù)建立,就可以通過腳本以及測試腳本處理器中的其他函數(shù)中進行調用,或者通過主機控制器中的測試執(zhí)行程序進行調用。由于參數(shù)可以傳遞至函數(shù),這就提供了一種非常簡單的方法,可以輕松的將被測件測試相關參數(shù),如輸入信號電平或限值等,從控制器傳遞至數(shù)字源表內部的測試程序中。 在吉時利公司網(wǎng)站(www.keithley.com)可以下載記錄詳盡的測試DAC腳本示例。這個腳本是全功能的,可以與圖3所示的兩個2602數(shù)字源表一起使用。為了使讀者領會新的腳本語言,我們從DAC測試腳本中選取以下代碼片段。注意,雙點劃線(--)表示注釋。 讓我們看兩個典型命令: node[1].smua.source.func = node[1].smua.OUTPUT _ DCVOLTS node[1].smua.source.levelv = 0 腳本語言運行使用別名,這可能使代碼更可讀,并改進代碼執(zhí)行速度。我們?yōu)镈AC測試示例定義了以下別名: MASTER = node[1] --Alias indicating control is via Node 1 SLAVE = node[2] --Node 2 is controlled by MASTER via TSP-Link IOUT1 = MASTER.smua --Alias for SMU measuring current output #1 --IOUT1 is equivalent to node[1].smua IOUT2 = MASTER.smub --Alias for SMU measuring current output #2 --IOUT2 is equivalent to node[1].smub DIO = MASTER.digio --Alias for Digital I/O of 2602 #1 --DIO is equivalent to node[1].digio VPLUS = SLAVE.smua --Alias for SMU supplying V+ and measuring current draw --VPLUS is equivalent to node[2].smua VREF = SLAVE.smub --Alias for SMU supplying reference voltage (Vref) --VREF is equivalent to node[2].smub 在整個示例中都使用了別名。利用定義的別名,示例命令可以重寫為: IOUT1.source.func = IOUT1.OUTPUT_DCVOLTS IOUT1.source.levelv = 0 通常,腳本語言[3]不需要明確聲明變量。根據(jù)對其的賦值,它們被聲明和定義為 “on the fly”。但表格(也就是數(shù)組)除外, 它們必須定義數(shù)據(jù)類型。所有變量都是全局的,除非明確聲明為本地的。在代碼片段出現(xiàn)以下“常數(shù)”: Vref = 10 --Use +10VDC reference voltage IoutMax = 0.002 --Max expected current output Nplc = 0.001 --Integration time for SMU A-to-D converters (in terms of power line cycles) Nbits = 8 --Number of DAC control bits (digital inputs) Ncodes = 2^Nbits --Number of possible control codes MaxCode = Ncodes - 1 --Decimal equivalent of full-scale code (255 for 8-bit DAC) Lsb = Vref / MaxCode --Nominal value of least significant bit 在開始實際測試序列之前,一般要對儀器進行某些初始設置。在我們的示例中,初始設置包括設置源函數(shù)及范圍、測量函數(shù)及范圍、電壓檢測模式等等。所有這4個源-測量單元[4]的配置都是類似的。對于節(jié)點1的SMU A,某些設置命令如下: MASTER.reset() --Reset all Node 1 logical instruments to default settings IOUT1.sense = IOUT1.SENSE_REMOTE --Use REMOTE (4-wire) voltage sensing IOUT1.source.func = IOUT1.OUTPUT_DCVOLTS --Configure SMU to source DCV IOUT1.source.rangev = 0 --Set voltage source ranges; --2602 picks appropriate range based on programmed value IOUT1.source.levelv = 0 --To measure current, source zero volts on lowest range IOUT1.source.limiti = 1.2 * IoutMax --Set current compliance limit (20% over max) IOUT1.measure.nplc = Nplc --Set integration times for all measurements IOUT1.measure.autozero = IOUT1.AUTOZERO_AUTO --Autozero for max accuracy; IOUT1.measure.rangei = IoutMax --Set up current measurement range; Measurement --range for source function fixed at source range val IOUT1.measure.filter.type = IOUT1.FILTER_REPEAT_AVG --Use REPEAT filter IOUT1.measure.filter.count = 5 --Reading will be average of 5 consecutive measurements IOUT1.measure.filter.enable = IOUT1.FILTER_ON --Enable Node 1 SMU A digital filter --Set measurement parameters the 2602s will display (if display is enabled) --Displays can be disabled to improve test speed MASTER.display.screen = MASTER.display.SMUA_SMUB --Digital port isn’t affected by reset so user must set desired initial state DIO.writeport(0) --Set all digital control bits to zero DIO.writeprotect(16128) --Write protect bits 9 through 14, which are reserved for --component handler control in this example. 在初始設置完成后,將進行DAC測試。這里只給出在IOUT1端的INL與DNL測試。對于其他測試,請參見完整的測試腳本。注意:數(shù)字源表儀器始終“假定”其通過內部源測試電流。在這種情況下,正電流從端點流出,負電流從端點流入。根據(jù)這種規(guī)定,源表將以純電流表模式運行,如節(jié)點1的SMU A和SMU B,其測量到的極性與使用典型電流表時的極性是相反的。從電路流入數(shù)字源表[5]儀器的正向電流,將作為負電流測量,反之亦然。 IOUT1.source.output = IOUT1.OUTPUT_ON --Turn ON SMU outputs iout1 = {} --Declare table to hold measurements at output IOUT1; table index begins with 1 for j = 0, MaxCode do --j is the code applied to the digital inputs DIO.writeport(j) --Apply digital inputs delay(0.001) --Allow 1ms settling time iout1[j+1] = -IOUT1.measure.i() --Minus sign corrects for polarity of measurements end –for IOUT1.source.output = IOUT1.OUTPUT_OFF --Turn OFF outputs of all SMUs 一旦測量完成,節(jié)點1測試腳本處理器將執(zhí)行所有計算,并檢測通過/失效狀態(tài)數(shù)據(jù)。腳本語言擁有一個廣泛的公式庫,它允許TSP執(zhí)行復雜的數(shù)據(jù)計算,而且不需要向主機控制器傳送數(shù)據(jù)進行處理。這個完整的示例程序說明2602型數(shù)字源表如何執(zhí)行線性回歸計算。 --Compute maximum integral nonlinearity(INL) --Check for monotonicity; Compute maximum differential nonlinearity(DNL) --Slope_bf and intercept_bf are the slope and intercept of the best-fit straight line inlmax_iout1 = 0 dnlmax_iout1 = 0 mono_iout1 = “Monotonic” for j = 0, MaxCode do inl_iout1 = math.abs(iout1[j+1]-(slope_bf * j + intercept_bf)) --Calcs for IOUT1 if inl_iout1 > inlmax_iout1 then inlmax_iout1 = inl_iout1 end --if if j > 0 then --Test for monotonicity diff_iout1 = iout1[j] – iout1[j-1] if diff_iout1 < 0 then mono_iout1 = “NON-Monotonic” end --if --Compute dnl and test for max. dnl_iout1 = math.abs(diff_iout1 – Lsb) if dnl_iout1 > dnlmax_iout1 then dnlmax_iout1 = dnl_iout1 end –if end --if end --for inl_iout1_lsb = inlmax_iout1 / Lsb --Express INL and DNL in terms of nominal LSB dnl_iout1_lsb = dnlmax_iout1 / Lsb 一旦計算出各種DAC參數(shù),TSP將檢測數(shù)值并確定器件的通過/失效狀態(tài)。然后,它通過向節(jié)點1 DIO端口寫入數(shù)字位模式,向器件機械手發(fā)送正確的分揀命令。 if PartStatus =”GOOD” then DIO.writeport(GoodBitPattern) --Send “good part” bit pattern to component handler else DIO.writeport(BadBitPattern) --Send “bad part” bit pattern to component handler end –if 由于所有測試數(shù)據(jù)都要經(jīng)過TSP的處理和評估,因此不需要向主機控制器發(fā)送所有數(shù)據(jù)。不過,當需要SPC或者滿足其他數(shù)據(jù)記錄或保持記錄要求時,這很容易完成。print函數(shù)向2602型數(shù)字源表輸出隊列寫入指定參數(shù),主機控制器可以上載這些參數(shù)。如果需要,可以在儀器前部面板顯示器上可以顯示數(shù)據(jù)和/或測試結果。此外,還可以使用標準的“C”格式化字符串,對數(shù)據(jù)進行格式化。 --Send the monotonicity results and max INL and DNL values measured at IOUT1 print(string.format(“%s, %1.2f, %1.2f”, mono_iout1, dnl_iout1_lsb, inl_iout1_lsb)) --Display INL & DNL on front panel displays MASTER.display.clear() MASTER.display.setcursor(1,1,0) MASTER.display.settext(string.format(“INL= %1.2f LSBs”, inl_iout1_lsb)) MASTER.display.setcursor(2,1,0) MASTER.display.settext(string.format(“DNL= %1.2f LSBs, dnl_iout1_lsb)) 想與吉時利測試測量專家互動?想有更多學習資源?可關注吉時利官方網(wǎng)站http://www.keithley.com.cn/ [1] 2510-AT型自動溫度控制(TEC)源表http://www.keithley.com.cn/produ ... mpcontr/?mn=2510-AT [2] 2600系列測試腳本處理器http://www.keithley.com.cn/produ ... currentvoltage/2602 [3] 腳本語言 http://www.keithley.com.cn/news/prod090827 [4] 半導體源測量單元 (SMUs) http://www.keithley.com.cn/produ ... /sourcemeasureunits [5] 數(shù)字源表 http://www.keithley.com.cn/produ ... ucts/currentvoltage |