從傳統意義上講,測試工程師將進(jìn)行測試編程,并將其輸入計算機或其他控制器。這類(lèi)程序可能包括測試執行程序以及函數程序與其他子程序。執行程序通過(guò)以適當的順序來(lái)調用不同的函數或子程序,從而控制測試流程。函數和子程序通過(guò)向測試系統中的儀器發(fā)送命令等對其進(jìn)行配置并啟動(dòng)測試。它們對數據進(jìn)行處理和評估,并對待測器件做出通過(guò)/失效決策,對數據進(jìn)行存檔。通常,對于每個(gè)測試的待測器件來(lái)說(shuō),控制器都將為各儀器發(fā)送命令序列,并不斷對得到的數據進(jìn)行評估?刂破鱗1]與儀器之間的所有這些通信都可能大大降低測試速度。2600系列測試腳本處理器[2]允許將大部分控制程序下載至數據源表的易失性或非易失性?xún)却。下載至TSP的程序稱(chēng)作腳本。 腳本可能是一個(gè)執行多項測試的較長(cháng)程序。 依照良好的編程規范,可以編寫(xiě)出創(chuàng )建和調用函數的腳本,就像計算機中的控制程序一樣。一旦函數建立,就可以通過(guò)腳本以及測試腳本處理器中的其他函數中進(jìn)行調用,或者通過(guò)主機控制器中的測試執行程序進(jìn)行調用。由于參數可以傳遞至函數,這就提供了一種非常簡(jiǎn)單的方法,可以輕松的將被測件測試相關(guān)參數,如輸入信號電平或限值等,從控制器傳遞至數字源表內部的測試程序中。 在吉時(shí)利公司網(wǎng)站(www.keithley.com)可以下載記錄詳盡的測試DAC腳本示例。這個(gè)腳本是全功能的,可以與圖3所示的兩個(gè)2602數字源表一起使用。為了使讀者領(lǐng)會(huì )新的腳本語(yǔ)言,我們從DAC測試腳本中選取以下代碼片段。注意,雙點(diǎn)劃線(xiàn)(--)表示注釋。 讓我們看兩個(gè)典型命令: node[1].smua.source.func = node[1].smua.OUTPUT _ DCVOLTS node[1].smua.source.levelv = 0 腳本語(yǔ)言運行使用別名,這可能使代碼更可讀,并改進(jìn)代碼執行速度。我們?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 在整個(gè)示例中都使用了別名。利用定義的別名,示例命令可以重寫(xiě)為: IOUT1.source.func = IOUT1.OUTPUT_DCVOLTS IOUT1.source.levelv = 0 通常,腳本語(yǔ)言[3]不需要明確聲明變量。根據對其的賦值,它們被聲明和定義為 “on the fly”。但表格(也就是數組)除外, 它們必須定義數據類(lèi)型。所有變量都是全局的,除非明確聲明為本地的。在代碼片段出現以下“常數”: 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 在開(kāi)始實(shí)際測試序列之前,一般要對儀器進(jìn)行某些初始設置。在我們的示例中,初始設置包括設置源函數及范圍、測量函數及范圍、電壓檢測模式等等。所有這4個(gè)源-測量單元[4]的配置都是類(lèi)似的。對于節點(diǎn)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. 在初始設置完成后,將進(jìn)行DAC測試。這里只給出在IOUT1端的INL與DNL測試。對于其他測試,請參見(jiàn)完整的測試腳本。注意:數字源表儀器始終“假定”其通過(guò)內部源測試電流。在這種情況下,正電流從端點(diǎn)流出,負電流從端點(diǎn)流入。根據這種規定,源表將以純電流表模式運行,如節點(diǎn)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 一旦測量完成,節點(diǎn)1測試腳本處理器將執行所有計算,并檢測通過(guò)/失效狀態(tài)數據。腳本語(yǔ)言擁有一個(gè)廣泛的公式庫,它允許TSP執行復雜的數據計算,而且不需要向主機控制器傳送數據進(jìn)行處理。這個(gè)完整的示例程序說(shuō)明2602型數字源表如何執行線(xiàn)性回歸計算。 --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參數,TSP將檢測數值并確定器件的通過(guò)/失效狀態(tài)。然后,它通過(guò)向節點(diǎn)1 DIO端口寫(xiě)入數字位模式,向器件機械手發(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 由于所有測試數據都要經(jīng)過(guò)TSP的處理和評估,因此不需要向主機控制器發(fā)送所有數據。不過(guò),當需要SPC或者滿(mǎn)足其他數據記錄或保持記錄要求時(shí),這很容易完成。print函數向2602型數字源表輸出隊列寫(xiě)入指定參數,主機控制器可以上載這些參數。如果需要,可以在儀器前部面板顯示器上可以顯示數據和/或測試結果。此外,還可以使用標準的“C”格式化字符串,對數據進(jìn)行格式化。 --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)) 想與吉時(shí)利測試測量專(zhuān)家互動(dòng)?想有更多學(xué)習資源?可關(guān)注吉時(shí)利官方網(wǎng)站http://www.keithley.com.cn/ [1] 2510-AT型自動(dòng)溫度控制(TEC)源表http://www.keithley.com.cn/produ ... mpcontr/?mn=2510-AT [2] 2600系列測試腳本處理器http://www.keithley.com.cn/produ ... currentvoltage/2602 [3] 腳本語(yǔ)言 http://www.keithley.com.cn/news/prod090827 [4] 半導體源測量單元 (SMUs) http://www.keithley.com.cn/produ ... /sourcemeasureunits [5] 數字源表 http://www.keithley.com.cn/produ ... ucts/currentvoltage |