We make IC test Easy——ICEasy

测试测量   作者:广州虹科电子 时间:2017-08-17来源:电子产品世界

  ICEasy是一款Marvin Test Solutions针对半导体测试应用的动态数字IO(DIO)板编程的ATEasy工具。 本文概述如何使用ICEasy来创建和执行测试程序。

  ICEasy的主要功能包括:

  § DIO通道和UUT引脚名称之间的引脚映射

  § 创建引脚组和嵌套组,并提供在组上执行各种测试功能的能力

  § 简化的编程

  § 更快地创建预定义的测试(Continuity, IDD, IDDQ, Voltage Threshold, Leakage, etc.)

  § 扫描功能和图(Shmoo,I / V曲线等)

  § 数字子系统的虚拟化,允许与未来的MTS板重新使用基于ICEasy的代码

  § 模拟测试程序,允许您无需硬件使用模拟模式测试和运行程序。

  Configuring ICEasy

  要使用ICEasy,您必须安装ATEasy v9(或更新版本,您可以联系我们或者到这个网站下载http://www.marvintest.com/Product.aspx?Model=ATEasy,您有一个为期30天的试用期)。 您的ATEasy项目系统文件应首先具有DIO驱动程序(本示例中为GX5295.drv),其后为ICEasy(ICEasy.drv)和ICEasy_GX5295板驱动程序(ICEASy_GX5295.drv)。 SIM驱动程序是应用程序自定义驱动程序,如果需要仿真,则用于仿真。

  驱动程序插入后,您需要配置DIO驱动程序快捷方式。 这需要根据需要 设置驱动程序参数,通常将MasterNumber设置为1.如果使用INI文件配置DIO或将其设置为DIO域中的主/从插槽号,则还需要将INIFileInitialization参数设置为1。 我们建议使用INI文件初始化与设置主/从板,因为它可以确保面板中显示的信息与ICEasy板和通道号匹配。 由于在ICEasy驱动程序之前插入了DIO驱动程序,所以在初始化ICEasy之前,先初始化DIO驱动程序,以确保ICEasy驱动程序的初始化成功。

  Pin Mapping

  在使用ICEasy之前,需要将DIO通道号映射到DUT / UUT(被测器件/被测单元)引脚名。 DIO通道号从0开始编号,所以如果第一块是GX5295,通道号将为0-31,第二张卡的通道为32-63等。DIO卡的顺序可以从GTDIO面板( 安装GX5295)的配置页面被设置,此设置将保存到INI文件中。

  以下命令用于将DIO通道映射到UUT引脚:

  ICEasy Map Add (sPinName, vPinNumberOrPinList, enPinType, vInstrumentName, iInstrumentChannel)

  解析:以下图所示这个UUT和 DIO GX5295为例。

  sPinName,UUT引脚的名称,比如CLK

  vPinNumberOrPinList, UUT引脚的编号,比如CLK对应的是引脚11

  enPinType,UUT引脚的类型,比如CLK对应的是input

  vInstrumentName, DIO 卡的名称,此处就是 "ICEasy_GX5295"

  iInstrumentChannel,与UUT引脚连接对应DIO 卡的通道号,比如与CLK对应的是DIO通道号为17

  要创建引脚组,请使用以下命令:

  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(最后一个参数)。

  您还可以将引脚类型指定为数字输入/输出,并分配用于控制引脚(ICEasy_GX5295)的板驱动程序快捷方式名称。 映射其他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)

  注意,一些引脚被标记为VCC,一些引脚被标记为GND。 当您输入此参数的参数时,会显示可用的引脚类型。

  Pin Group Mapping

  单独寻址UUT引脚可能很麻烦。 当需要重复功能来控制/访问或测量涉及多个引脚时,您可以创建一个引脚组。 以下示例演示了引脚组定义:

  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个引脚D1-D8。

  您还可以定义嵌套组。 嵌套组可以将组和引脚与分配给新组的名称进行组合。 以下示例显示了嵌套组的使用:

  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个引脚。

  Using the Digital Instrument’s PMU Capabilities

  ICEasy有几个命令,可以使用数字仪表的PMU(参数测量单元)进行参数测试。 这些命令在单个引脚或组上工作。 对于单个引脚,返回的变量将包含单个双精度值。 当传入组时,测量命令将返回包含测量数组的变量。 以下命令可用:

  Measurement Commands 测量命令

  ICEasy Measure Voltage (vGroupOrPinNameOrIndex, iMeasureRate): Variant

  ICEasy Measure Current (vGroupOrPinNameOrIndex, iMeasureRate, iMaxDigits): Variant

  Stimuli Commands 激励命令

  ICEasy Set Voltage (vGroupOrPinNameOrIndex, dVoltage, dMaxCurrent)

  ICEasy Set Current (vGroupOrPinNameOrIndex, dCurrent, dVCommHigh, dVCommLow)

  Stimuli and Measurement Commands 激励和测量命令

  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

  激励和测量命令可用于执行参数测试,例如:

  § 连续性(Continuity),短路,开路测试

  § 功耗(IDD,IDDQ)

  § 输入电压阈值(VIH,VIL)

  § 输入泄漏(IIH,IIL)

  § 输出电压电平(VOH,VOL)

  这些命令也可用于执行其他器件表征过程,如功能测试,IV曲线和Shmoo图。

  Example – Performing a Shorts Test

  以下代码显示了如何通过检查短路保护二极管或检查其他引脚短路来执行短路测试。

  ! 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

  以下代码显示如何测试IDD,待机电流。

  ! 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提供向数字子系统写入(和读取)向量,执行它们并返回错误计数的能力。 以下是一些Vector命令:

  ICEasy Set Vectors (vGroupOrPinNameOrIndex, vVectors, iVectorStart, iVectorsCount, iRepeatCount)

  ICEasy Run Vectors (vGroupOrPinNameOrIndex, iVectorStart, iVectorsCount, iFrequency, iStrobeDelay): Long

  第一个命令Set Vector将向量写入组或引脚,从DIO向量存储器iVectorStart开始,并重复使用vVectors iRepeatCount值传递的字符串数组。 向量的数量由iVectorsCount定义。 vVectors是书面向量。 向量是字符串数组,其中第一个元素对应于第一个向量。每个字符串字符操作码对应于数字子系统通道。

  以下是可用的操作码:

  第二个命令Run Vectors将运行用Set Vectors命令加载的向量。

  第一个参数用于识别DIO卡,任何与映射到DIO卡的组或引脚相关联的向量将被传递。iVectorStart和iVectorsCount定义向量的起始位置以及执行多少向量。 iFrequency(Hz)参数定义矢量频率。iStrobeDelay是nSec中的延迟值,用于指定输出数据和选通输入数据之间的延迟。必须正确设置此值可靠的实时比较结果。 Run Vectors命令返回失败向量的数量,如果没有失败,则返回0。 该命令与DIO的实时比较功能结合使用。

  Example – Vector Commands

  以下示例从地址0开始向DIO写入126个向量。提供的2个向量重复63次。 每个向量包含与IO Pins组相关联的18个数据通道。

  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提供了一个Curve Tracer 和一个Shmoo制图工具。 可以通过显示工具表单和输入参数或非交互模式来交互使用这两种工具,从而允许生成图表并将其保存到日志文件中。

  以下是可用的制图工具功能:

  ICEasy Chart CurveTracer Panel (stXAxis, stYAxis, procHandler, bModal)

  ICEasy Chart Shmoo Panel (stXAxis, stYAxis, procHandler, bModal)

  两个功能都接收stXAxis和stYAxis轴结构作为参数,定义了扫描范围,分辨率和要测量的DUT引脚。 对于Curve Tracer功能,如果将一组引脚传递给vPin参数,则将创建乘法图(组中每个引脚一个)。

  在所有扫描(用于初始设置)之前,每个扫描的x和y值之前和之后以及所有扫描完成之后,对于每次扫描,procHandler过程被重复调用。

  对于modal 加载,bModal参数为True,显示窗体并等待,直到用户关闭窗体。 如果要显示表单并继续执行程序,请传入False。

  Example – Using the Shmoo Chart Tool

  以下是如何创建 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机制由Shmoo或Curve Tracer调用,具有以下参数:

  enEventType - 事件类型:aEventStart,aEventSweepPre,aEventSweepPost,aEventStop。 在 curve tracing/ Shmoo图执行期间,仅在Start和Post事件在每次扫描之前和之后调用Pre和Post事件时才启动和停止事件。

  pstSweep - 包含扫描和轴参数的结构。 例如,X轴值将定义X轴的扫描范围。

  pBCancel - 如果由handler设置为True,则会通知Shmoo或Curve Tracer停止扫描。

  此过程的返回值仅用于前/后事件,并且应包含扫描的结果。 对于曲线跟踪器,这是一个浮点数,为当前X值提供测量结果。 对于Shmoo图,结果为True的话,用Pass / Green(对于当前的x / y扫描)标记,结果为False的话,用Fail / Red标记,空的变量(VarEmpty)为未测试/gray灰色。

  如果handler机制不与Curve Tracer一起使用,则通过curve tracer tool 基于 force voltage / measure current or force current measure voltage 的测量值来计算测量结果。 测量类型(电流/电压)和Pin从stXAxis unit和pin字段的参数收集。

  以下是使用handler机制的示例。 start事件用于设置每次扫描执行的向量。 Pre事件用于运行向量并返回结果:

  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工具显示。 图表中的每个单元格表示一次扫描/迭代或测试,每个单元格都以红色(失败),绿色(通过)或灰色(未测试)绘制。 您可以将鼠标光标移动到特定的单元格,以查看与特定测试相关联的X / Y参数(显示在状态栏中)。 图表上方的网格用于设置X / Y轴的迭代/扫描范围,并指定每个X / Y测试之间的分辨率。 附加日志按钮可让您将对话框图像附加到测试日志。

  Curve Tracer Tool

  与Shmoo类似,您可以执行IV曲线图。 在“ Curve Tracer”对话框中,您可以设置测试参数,例如X/Y Units,Test Type (voltage/current), PIN or a PIN Group(允许测试组中每个引脚有多个引脚的测试参数)。 您还可以指定 Start/Stop和分辨率测试参数。 下图显示了在一组引脚(D1-D8)上执行的IV曲线显示。 测试从-1V到+ 1V,步长为0.1V。 该工具还可以使用“Append Log”按钮将结果图表附加到测试日志中。

关键词: ICEasy ATEasy

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章


用户评论

请文明上网,做现代文明人
验证码:
查看电脑版