We make IC test Easy——ICEasy
ICEasy是一款Marvin Test Solutions針對(duì)半導(dǎo)體測(cè)試應(yīng)用的動(dòng)態(tài)數(shù)字IO(DIO)板編程的ATEasy工具。 本文概述如何使用ICEasy來創(chuàng)建和執(zhí)行測(cè)試程序。
本文引用地址:http://butianyuan.cn/article/201708/363143.htmICEasy的主要功能包括:
§ DIO通道和UUT引腳名稱之間的引腳映射
§ 創(chuàng)建引腳組和嵌套組,并提供在組上執(zhí)行各種測(cè)試功能的能力
§ 簡化的編程
§ 更快地創(chuàng)建預(yù)定義的測(cè)試(Continuity, IDD, IDDQ, Voltage Threshold, Leakage, etc.)
§ 掃描功能和圖(Shmoo,I / V曲線等)
§ 數(shù)字子系統(tǒng)的虛擬化,允許與未來的MTS板重新使用基于ICEasy的代碼
§ 模擬測(cè)試程序,允許您無需硬件使用模擬模式測(cè)試和運(yùn)行程序。
Configuring ICEasy
要使用ICEasy,您必須安裝ATEasy v9(或更新版本,您可以聯(lián)系我們或者到這個(gè)網(wǎng)站下載http://www.marvintest.com/Product.aspx?Model=ATEasy,您有一個(gè)為期30天的試用期)。 您的ATEasy項(xiàng)目系統(tǒng)文件應(yīng)首先具有DIO驅(qū)動(dòng)程序(本示例中為GX5295.drv),其后為ICEasy(ICEasy.drv)和ICEasy_GX5295板驅(qū)動(dòng)程序(ICEASy_GX5295.drv)。 SIM驅(qū)動(dòng)程序是應(yīng)用程序自定義驅(qū)動(dòng)程序,如果需要仿真,則用于仿真。
驅(qū)動(dòng)程序插入后,您需要配置DIO驅(qū)動(dòng)程序快捷方式。 這需要根據(jù)需要 設(shè)置驅(qū)動(dòng)程序參數(shù),通常將MasterNumber設(shè)置為1.如果使用INI文件配置DIO或?qū)⑵湓O(shè)置為DIO域中的主/從插槽號(hào),則還需要將INIFileInitialization參數(shù)設(shè)置為1。 我們建議使用INI文件初始化與設(shè)置主/從板,因?yàn)樗梢源_保面板中顯示的信息與ICEasy板和通道號(hào)匹配。 由于在ICEasy驅(qū)動(dòng)程序之前插入了DIO驅(qū)動(dòng)程序,所以在初始化ICEasy之前,先初始化DIO驅(qū)動(dòng)程序,以確保ICEasy驅(qū)動(dòng)程序的初始化成功。
Pin Mapping
在使用ICEasy之前,需要將DIO通道號(hào)映射到DUT / UUT(被測(cè)器件/被測(cè)單元)引腳名。 DIO通道號(hào)從0開始編號(hào),所以如果第一塊是GX5295,通道號(hào)將為0-31,第二張卡的通道為32-63等。DIO卡的順序可以從GTDIO面板( 安裝GX5295)的配置頁面被設(shè)置,此設(shè)置將保存到INI文件中。
以下命令用于將DIO通道映射到UUT引腳:
ICEasy Map Add (sPinName, vPinNumberOrPinList, enPinType, vInstrumentName, iInstrumentChannel)
解析:以下圖所示這個(gè)UUT和 DIO GX5295為例。
sPinName,UUT引腳的名稱,比如CLK
vPinNumberOrPinList, UUT引腳的編號(hào),比如CLK對(duì)應(yīng)的是引腳11
enPinType,UUT引腳的類型,比如CLK對(duì)應(yīng)的是input
vInstrumentName, DIO 卡的名稱,此處就是 "ICEasy_GX5295"
iInstrumentChannel,與UUT引腳連接對(duì)應(yīng)DIO 卡的通道號(hào),比如與CLK對(duì)應(yīng)的是DIO通道號(hào)為17
要?jiǎng)?chuàng)建引腳組,請(qǐng)使用以下命令:
ICEasy Map Add Group (sGroup, asGroupOrPinList)
其他可用的映射命令駐留在ICEasy Map組命令下。
要映射通道,通常將代碼放在Program.OnInit()事件中,如下所示:
ICEasy Map Add("CLR", 1, enPinTypeDigitalInput, "ICEasy_GX5295", 0)
在本例中,我們將UUT CLR引腳(具有唯一的索引或ID為1)映射到DIO通道0(最后一個(gè)參數(shù))。
您還可以將引腳類型指定為數(shù)字輸入/輸出,并分配用于控制引腳(ICEasy_GX5295)的板驅(qū)動(dòng)程序快捷方式名稱。 映射其他UUT引腳通道的其他示例如下所示:
ICEasy Map Add("CLK", 11, enPinTypeDigitalInput, "ICEasy_GX5295", 17)
ICEasy Map Add("D1", 3, enPinTypeDigitalInput, "ICEasy_GX5295", 2)
ICEasy Map Add("D2", 4, enPinTypeDigitalInput, "ICEasy_GX5295", 7)
ICEasy Map Add("D3", 7, enPinTypeDigitalInput, "ICEasy_GX5295", 6)
ICEasy Map Add("D4", 8, enPinTypeDigitalInput, "ICEasy_GX5295", 3)
ICEasy Map Add("D5", 13, enPinTypeDigitalInput, "ICEasy_GX5295", 10)
ICEasy Map Add("D6", 14, enPinTypeDigitalInput, "ICEasy_GX5295", 13)
ICEasy Map Add("D7", 17, enPinTypeDigitalInput, "ICEasy_GX5295", 14)
ICEasy Map Add("D8", 18, enPinTypeDigitalInput, "ICEasy_GX5295", 9)
ICEasy Map Add("Q1", 2, enPinTypeDigitalOutput, "ICEasy_GX5295", 1)
ICEasy Map Add("Q2", 5, enPinTypeDigitalOutput, "ICEasy_GX5295", 4)
ICEasy Map Add("Q3", 6, enPinTypeDigitalOutput, "ICEasy_GX5295", 5)
ICEasy Map Add("Q4", 9, enPinTypeDigitalOutput, "ICEasy_GX5295", 8)
ICEasy Map Add("Q5", 12, enPinTypeDigitalOutput, "ICEasy_GX5295", 15)
ICEasy Map Add("Q6", 15, enPinTypeDigitalOutput, "ICEasy_GX5295", 12)
ICEasy Map Add("Q7", 16, enPinTypeDigitalOutput, "ICEasy_GX5295", 11)
ICEasy Map Add("Q8", 19, enPinTypeDigitalOutput, "ICEasy_GX5295", 16)
ICEasy Map Add("VCC", 20, enPinTypeVcc, "ICEasy_GX5295", 31)
ICEasy Map Add("GND", 10, enPinTypeGnd)
注意,一些引腳被標(biāo)記為VCC,一些引腳被標(biāo)記為GND。 當(dāng)您輸入此參數(shù)的參數(shù)時(shí),會(huì)顯示可用的引腳類型。
Pin Group Mapping
單獨(dú)尋址UUT引腳可能很麻煩。 當(dāng)需要重復(fù)功能來控制/訪問或測(cè)量涉及多個(gè)引腳時(shí),您可以創(chuàng)建一個(gè)引腳組。 以下示例演示了引腳組定義:
ICEasy Map Add Group("Reset Pins", {"CLR"})
ICEasy Map Add Group("Clock Pins", {"CLK"})
ICEasy Map Add Group("Input Pins", {"D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8"})
ICEasy Map Add Group("Output Pins", {"Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8"})
在此示例中,輸入引腳組包含8個(gè)引腳D1-D8。
您還可以定義嵌套組。 嵌套組可以將組和引腳與分配給新組的名稱進(jìn)行組合。 以下示例顯示了嵌套組的使用:
ICEasy Map Add Group("IO Pins", {"Reset Pins", "Clock Pins", "Input Pins", "Output Pins"})
ICEasy Map Add Group("Power Pins", {"GND", "VCC"})
ICEasy Map Add Group("All Pins", {"IO Pins", "VCC"})
在此示例中,IO引腳由4組組成,共有18個(gè)引腳。
Using the Digital Instrument’s PMU Capabilities
ICEasy有幾個(gè)命令,可以使用數(shù)字儀表的PMU(參數(shù)測(cè)量單元)進(jìn)行參數(shù)測(cè)試。 這些命令在單個(gè)引腳或組上工作。 對(duì)于單個(gè)引腳,返回的變量將包含單個(gè)雙精度值。 當(dāng)傳入組時(shí),測(cè)量命令將返回包含測(cè)量數(shù)組的變量。 以下命令可用:
Measurement Commands 測(cè)量命令
ICEasy Measure Voltage (vGroupOrPinNameOrIndex, iMeasureRate): Variant
ICEasy Measure Current (vGroupOrPinNameOrIndex, iMeasureRate, iMaxDigits): Variant
Stimuli Commands 激勵(lì)命令
ICEasy Set Voltage (vGroupOrPinNameOrIndex, dVoltage, dMaxCurrent)
ICEasy Set Current (vGroupOrPinNameOrIndex, dCurrent, dVCommHigh, dVCommLow)
Stimuli and Measurement Commands 激勵(lì)和測(cè)量命令
ICEasy Set Voltage MeasureCurrent(vGroupOrPinNameOrIndex, dVoltage,
dCurrentLimit,vMeasurePinNameOrIndex, iMeasureRate, iMaxDigit, iDelayMeasure) : Variant
ICEasy Set Voltage MeasureVoltage (vGroupOrPinNameOrIndex, dVoltage,
dCurrentLimit, vMeasurePinNameOrIndex, iMeasureRate, iDelayMeasure): Variant
ICEasy Set Current MeasureCurrent(vGroupOrPinNameOrIndex, dCurrent, dVoltageHighLimit,
dVoltageLowLimit vMeasurePinNameOrIndex, iMeasureRate, iMaxDigit, iDelayMeasure): Variant
ICEasy Set Current MeasureVoltage(vGroupOrPinNameOrIndex, dCurrent,dVoltageHighLimit,
dVoltageLowLimit vMeasurePinNameOrIndex,iMeasureRate, iDelayMeasure): Variant
激勵(lì)和測(cè)量命令可用于執(zhí)行參數(shù)測(cè)試,例如:
§ 連續(xù)性(Continuity),短路,開路測(cè)試
§ 功耗(IDD,IDDQ)
§ 輸入電壓閾值(VIH,VIL)
§ 輸入泄漏(IIH,IIL)
§ 輸出電壓電平(VOH,VOL)
這些命令也可用于執(zhí)行其他器件表征過程,如功能測(cè)試,IV曲線和Shmoo圖。
Example – Performing a Shorts Test
以下代碼顯示了如何通過檢查短路保護(hù)二極管或檢查其他引腳短路來執(zhí)行短路測(cè)試。
! set all pins to 0V
ICEasy Set Voltage("All Pins", 0)
! force sink a small current of -500 uAmp and then measure voltage
TestResult=Abs(ICEasy Set Current MeasureVoltage(“D1”, -0.5))
! restore pin setting
ICEasy Set Voltage(“D1”, 0)
Example – IDD Test
以下代碼顯示如何測(cè)試IDD,待機(jī)電流。
! turn on Vcc and then measure IDD
TestResult=ICEasy Set Voltage MeasureCurrent("Vcc", 4.50)
! turn off Vcc
ICEasy Set Voltage("Vcc", 0)
Vector Commands
ICEasy提供向數(shù)字子系統(tǒng)寫入(和讀取)向量,執(zhí)行它們并返回錯(cuò)誤計(jì)數(shù)的能力。 以下是一些Vector命令:
ICEasy Set Vectors (vGroupOrPinNameOrIndex, vVectors, iVectorStart, iVectorsCount, iRepeatCount)
ICEasy Run Vectors (vGroupOrPinNameOrIndex, iVectorStart, iVectorsCount, iFrequency, iStrobeDelay): Long
第一個(gè)命令Set Vector將向量寫入組或引腳,從DIO向量存儲(chǔ)器iVectorStart開始,并重復(fù)使用vVectors iRepeatCount值傳遞的字符串?dāng)?shù)組。 向量的數(shù)量由iVectorsCount定義。 vVectors是書面向量。 向量是字符串?dāng)?shù)組,其中第一個(gè)元素對(duì)應(yīng)于第一個(gè)向量。每個(gè)字符串字符操作碼對(duì)應(yīng)于數(shù)字子系統(tǒng)通道。
以下是可用的操作碼:
第二個(gè)命令Run Vectors將運(yùn)行用Set Vectors命令加載的向量。
第一個(gè)參數(shù)用于識(shí)別DIO卡,任何與映射到DIO卡的組或引腳相關(guān)聯(lián)的向量將被傳遞。iVectorStart和iVectorsCount定義向量的起始位置以及執(zhí)行多少向量。 iFrequency(Hz)參數(shù)定義矢量頻率。iStrobeDelay是nSec中的延遲值,用于指定輸出數(shù)據(jù)和選通輸入數(shù)據(jù)之間的延遲。必須正確設(shè)置此值可靠的實(shí)時(shí)比較結(jié)果。 Run Vectors命令返回失敗向量的數(shù)量,如果沒有失敗,則返回0。 該命令與DIO的實(shí)時(shí)比較功能結(jié)合使用。
Example – Vector Commands
以下示例從地址0開始向DIO寫入126個(gè)向量。提供的2個(gè)向量重復(fù)63次。 每個(gè)向量包含與IO Pins組相關(guān)聯(lián)的18個(gè)數(shù)據(jù)通道。
as : String[2]
as[0]="1011111111ZZZZZZZZ" ! vector 1, 18 channels
as[1]="1111111111HHHHHHHH" ! vector 2, 18 channels
iVectorsCount=ICEasy Set Vector("IO Pins", as, 0, 2, 63)
if ICEasy Run Vectors("IO Pins", 0, iVectorsCount) <> 0
TestStatus=FAIL
endif
Charting Tools
ICEasy提供了一個(gè)Curve Tracer 和一個(gè)Shmoo制圖工具。 可以通過顯示工具表單和輸入?yún)?shù)或非交互模式來交互使用這兩種工具,從而允許生成圖表并將其保存到日志文件中。
以下是可用的制圖工具功能:
ICEasy Chart CurveTracer Panel (stXAxis, stYAxis, procHandler, bModal)
ICEasy Chart Shmoo Panel (stXAxis, stYAxis, procHandler, bModal)
兩個(gè)功能都接收stXAxis和stYAxis軸結(jié)構(gòu)作為參數(shù),定義了掃描范圍,分辨率和要測(cè)量的DUT引腳。 對(duì)于Curve Tracer功能,如果將一組引腳傳遞給vPin參數(shù),則將創(chuàng)建乘法圖(組中每個(gè)引腳一個(gè))。
在所有掃描(用于初始設(shè)置)之前,每個(gè)掃描的x和y值之前和之后以及所有掃描完成之后,對(duì)于每次掃描,procHandler過程被重復(fù)調(diào)用。
對(duì)于modal 加載,bModal參數(shù)為True,顯示窗體并等待,直到用戶關(guān)閉窗體。 如果要顯示表單并繼續(xù)執(zhí)行程序,請(qǐng)傳入False。
Example – Using the Shmoo Chart Tool
以下是如何創(chuàng)建 Frequency/Voltage Shmoo圖的示例:
! init X Axis params
stXAxis.sName="Clock"
stXAxis.sType="Frequency"
stXAxis.vPin="CLK"
stXAxis.sUnit="MHz"
stXAxis.dStart=1.0
stXAxis.dStop=35.0
stXAxis.dResolution=1.0
stXAxis.dCurrentOrVHighLimit=0.0
stXAxis.dVLowLimit=0.0
stXAxis.nDelay=0
! init Y Axis params
stYAxis.sName="Vcc"
stYAxis.sType="Voltage"
stYAxis.vPin="VCC"
stYAxis.sUnit="V"
stYAxis.dStart=2.0
stYAxis.dStop=6.0
stYAxis.dResolution=0.2
stYAxis.dCurrentOrVHighLimit=0.0
stYAxis.dVLowLimit=0.0
stYAxis.nDelay=0
! open the Shmoo Tool panel
ICEasy Chart Shmoo Panel(stXAxis, stYAxis, ShmooEventHandler)
以下是procHandler原型的描述:
Procedure ShmooEventHandler(enEventType, pstSweep, pbCancel): Variant
handler機(jī)制由Shmoo或Curve Tracer調(diào)用,具有以下參數(shù):
enEventType - 事件類型:aEventStart,aEventSweepPre,aEventSweepPost,aEventStop。 在 curve tracing/ Shmoo圖執(zhí)行期間,僅在Start和Post事件在每次掃描之前和之后調(diào)用Pre和Post事件時(shí)才啟動(dòng)和停止事件。
pstSweep - 包含掃描和軸參數(shù)的結(jié)構(gòu)。 例如,X軸值將定義X軸的掃描范圍。
pBCancel - 如果由handler設(shè)置為True,則會(huì)通知Shmoo或Curve Tracer停止掃描。
此過程的返回值僅用于前/后事件,并且應(yīng)包含掃描的結(jié)果。 對(duì)于曲線跟蹤器,這是一個(gè)浮點(diǎn)數(shù),為當(dāng)前X值提供測(cè)量結(jié)果。 對(duì)于Shmoo圖,結(jié)果為True的話,用Pass / Green(對(duì)于當(dāng)前的x / y掃描)標(biāo)記,結(jié)果為False的話,用Fail / Red標(biāo)記,空的變量(VarEmpty)為未測(cè)試/gray灰色。
如果handler機(jī)制不與Curve Tracer一起使用,則通過curve tracer tool 基于 force voltage / measure current or force current measure voltage 的測(cè)量值來計(jì)算測(cè)量結(jié)果。 測(cè)量類型(電流/電壓)和Pin從stXAxis unit和pin字段的參數(shù)收集。
以下是使用handler機(jī)制的示例。 start事件用于設(shè)置每次掃描執(zhí)行的向量。 Pre事件用于運(yùn)行向量并返回結(jié)果:
Procedure ShmooEventHandler(enEventType, pstSweep, pbCancel): Variant
! Shmoo Event Handler, called repeatedly for each iteration(sweep)
! returns True/False/Empty for PASS/FAIL/None
--------------------------------------------------------------------------------
enEventType: Val enumEventType !Event type for this sweep
pstSweep: Var structChartSweep !Axis and sweep information
pbCancel: Var Bool !Return True to cancel further operations
iFrequency: Long
dVccVoltage: Double
iErrCount: Long
iStrobeDelay: Double
{
Select enEventType
Case aEventStart
! setup test pattern, called once before first sweep
iVectorsCount=SetupOutputsRandomTestPattern()
Case aEventSweepPre
! extract frequency and Vcc voltage values, called before each sweep
iFrequency=pstSweep.dXValue*1.0E6
dVccVoltage=pstSweep.dYValue
iStrobeDelay=10
! run
ICEasy Set Voltage("Vcc", dVccVoltage)
iErrCount=ICEasy Run Vectors("IO Pins", 0, iVectorsCount, iFrequency)
ICEasy Set Voltage("Vcc", 0)
return iErrCount=0 ! return TRUE=PASS, FALSE=FAIL
Case aEventSweepPost
! do nothing, value of pstSweep.bShmooResult was set in
! aEventStepPre from the return
Case aEventStop
! turn off Vcc, called once after last sweep
ICEasy Set Voltage("Vcc", 0)
EndSelect
return pstSweep.vShmooResult ! keep the stepPre value
}
Shmoo Tool
下圖顯示了Shmoo工具顯示。 圖表中的每個(gè)單元格表示一次掃描/迭代或測(cè)試,每個(gè)單元格都以紅色(失敗),綠色(通過)或灰色(未測(cè)試)繪制。 您可以將鼠標(biāo)光標(biāo)移動(dòng)到特定的單元格,以查看與特定測(cè)試相關(guān)聯(lián)的X / Y參數(shù)(顯示在狀態(tài)欄中)。 圖表上方的網(wǎng)格用于設(shè)置X / Y軸的迭代/掃描范圍,并指定每個(gè)X / Y測(cè)試之間的分辨率。 附加日志按鈕可讓您將對(duì)話框圖像附加到測(cè)試日志。
Curve Tracer Tool
與Shmoo類似,您可以執(zhí)行IV曲線圖。 在“ Curve Tracer”對(duì)話框中,您可以設(shè)置測(cè)試參數(shù),例如X/Y Units,Test Type (voltage/current), PIN or a PIN Group(允許測(cè)試組中每個(gè)引腳有多個(gè)引腳的測(cè)試參數(shù))。 您還可以指定 Start/Stop和分辨率測(cè)試參數(shù)。 下圖顯示了在一組引腳(D1-D8)上執(zhí)行的IV曲線顯示。 測(cè)試從-1V到+ 1V,步長為0.1V。 該工具還可以使用“Append Log”按鈕將結(jié)果圖表附加到測(cè)試日志中。
評(píng)論