Table of Contents

Class SingleCondition

Namespace
CsraTestMethods.Parametric
Assembly
CsraTestMethods.dll
[TestClass(Creation.TestInstance)]
[Serializable]
public class SingleCondition : TestCodeBase

Overview

TestClass for all generic parametric TestMethods using uniform (single) conditions.

Platform Specifics

Uses per test-instance test class object persistence ([TestClass(Creation.TestInstance)] attribute).

Inheritance
TestCodeBase
SingleCondition
Inherited Members
TestCodeBase.AbortTest()
TestCodeBase.DebugBreak()
TestCodeBase.TheExec
TestCodeBase.TheHdw
TestCodeBase.TheProgram
TestCodeBase.FlowDomains
TestCodeBase.ShouldRunPreBody
TestCodeBase.ShouldRunBody
TestCodeBase.ShouldRunPostBody

Methods

Baseline(PinList, string, double, double, string, double, int, PinList, double, string)

Parametric measurement by setting up all force Pins, then measuring all force or optionally different measurement Pins.

[TestMethod]
[Steppable]
[CustomValidation]
public void Baseline(PinList forcePinList, string forceMode, double forceValue, double clampValue, string measureWhat, double measureRange, int sampleSize = 1, PinList measPinList = null, double waitTime = 0, string setup = "")

Parameters

forcePinList PinList

Comma separated list of pin or pin groups representing the DC setup and/or measurement.

forceMode string

Force mode for each pin or pin group.

forceValue double

Force voltage or current for all pins or pin groups.

clampValue double

Clamp voltage or current for all pina or pin groups.

measureWhat string

Measures either voltage or current for all measured pins or pin groups.

measureRange double

Expected voltage or current for all pins or pin groups to set the range.

sampleSize int

Optional. Number of samples to average for all pins or pin groups.

measPinList PinList

Optional. Comma separted list of measurement pins or pin groups, if different from forcePinList.

waitTime double

Optional. Settling time used after pin setup.

setup string

Optional. Setup settting to preconfigure the dib or device.

Details

Test Technique
  • to be added
Implementation

The Validation section creates the Pins objects, determines force & measure modes and confirms valid combinations.

The PreBody section applies levels and timing from the test instance context. Optionally, applies the specified setup. For all pins specified in the pinList it disconnects any pin electronics, connects the dc path and turns on the gate.

The Body section applies the force condition on all pins, sets the measurement mode and performs the measurement on all pins in parallel after the specified waitTime.

The PostBody section restores the pin electronics connection for digital pins after gating off and disconnecting the dc path. Finally, a parametric datalog is logged.

Platform Specifics

Supports stepping capability for PreBody/Body/PostBody.

Pre Conditions
  • none
Post Conditions
  • none
Limitations
  • support for non-uniform (mixed) instrument types in pinList not yet available
Code Reference
[TestMethod, Steppable, CustomValidation]
public void Baseline(PinList forcePinList, string forceMode, double forceValue, double clampValue, string measureWhat, double measureRange,
    int sampleSize = 1, PinList measPinList = null, double waitTime = 0.0, string setup = "") {

    if (TheExec.Flow.IsValidating) {
        TheLib.Validate.Pins(forcePinList, nameof(forcePinList), out _pinsForce);
        TheLib.Validate.Pins(forcePinList, nameof(forcePinList), out _pinsAll);
        _measPinListIsNullOrEmpty = string.IsNullOrEmpty(measPinList);
        if (_measPinListIsNullOrEmpty) {
            _pinsMeasure = new Pins(forcePinList);
        } else {
            TheLib.Validate.Pins(measPinList, nameof(measPinList), out _pinsMeasure);
            _pinsAll.Add(measPinList);
        }
        TheLib.Validate.Enum(forceMode, nameof(forceMode), out _outputMode);
        TheLib.Validate.Enum(measureWhat, nameof(measureWhat), out _measureMode);
        _outputRangeValue = (_outputMode == DcOutputMode.ForceVoltage) ? clampValue : forceValue;
        _containsDigitalPins = _pinsAll.ContainsFeature(InstrumentFeature.Digital);
    }

    if (ShouldRunPreBody) {
        TheLib.Setup.LevelsAndTiming.Apply(true);
        Services.Setup.Apply(setup);
        if (_containsDigitalPins) TheLib.Setup.Digital.Disconnect(_pinsAll);
        TheLib.Setup.Dc.Connect(_pinsAll);
    }

    if (ShouldRunBody) {
        TheLib.Setup.Dc.Force(_pinsForce, _outputMode, forceValue, forceValue, clampValue);
        TheLib.Setup.Dc.SetMeter(_pinsMeasure, _measureMode, measureRange, outputRangeValue: (!_measPinListIsNullOrEmpty) ? _outputRangeValue : null);
        TheLib.Execute.Wait(waitTime);
        _measPins = TheLib.Acquire.Dc.Measure(_pinsMeasure, sampleSize);
    }

    if (ShouldRunPostBody) {
        TheLib.Setup.Dc.Disconnect(_pinsAll);
        if (_containsDigitalPins) TheLib.Setup.Digital.Connect(_pinsAll);
        TheLib.Datalog.TestParametric(_measPins, forceValue);
    }
}

PreconditionPattern(PinList, string, double, double, Pattern, string, double, int, PinList, double, string)

Parametric measurement by running preconditioning pattern, setting up force Pins and then measuring all force or optionally different measurement Pins.

[TestMethod]
[Steppable]
[CustomValidation]
public void PreconditionPattern(PinList forcePinList, string forceMode, double forceValue, double clampValue, Pattern preconditionPat, string measureWhat, double measureRange, int sampleSize = 1, PinList measPinList = null, double waitTime = 0, string setup = "")

Parameters

forcePinList PinList

Comma separated list of pin or pin groups representing the DC setup and/or measurement.

forceMode string

Force mode for each pin or pin group.

forceValue double

Force voltage or current for all pins or pin groups.

clampValue double

Clamp voltage or current for all pina or pin groups.

preconditionPat Pattern

Pattern to run to precondition the device before the parametric test.

measureWhat string

Measures either voltage or current for all measured pins or pin groups.

measureRange double

Expected voltage or current for all pins or pin groups to set the range.

sampleSize int

Optional. Number of samples to average for all pins or pin groups.

measPinList PinList

Optional. Comma separted list of measurement pins or pin groups, if different from forcePinList.

waitTime double

Optional. Settling time used after pin setup.

setup string

Optional. Setup settting to preconfigure the dib or device.

Details

Test Technique
  • to be added
Implementation

The Validation section creates the Pins and PatternInfo objects, determines force & measure modes and confirms valid combinations.

The PreBody section applies levels and timing from the test instance context. Optionally, applies the specified setup. The preconditioning pattern is executed. For all pins specified in the pinList it disconnects any pin electronics, connects the dc path and turns on the gate.

The Body section applies the force condition on all pins, sets the measurement mode and performs the measurement on all pins in parallel after the specified waitTime.

The PostBody section restores the pin electronics connection for digital pins after gating off and disconnecting the dc path. Finally, a parametric datalog is logged.

Platform Specifics

Supports stepping capability for PreBody/Body/PostBody.

Pre Conditions
  • none
Post Conditions
  • none
Limitations
  • support for non-uniform (mixed) instrument types in pinList not yet available
Code Reference
[TestMethod, Steppable, CustomValidation]
public void PreconditionPattern(PinList forcePinList, string forceMode, double forceValue, double clampValue, Pattern preconditionPat,
    string measureWhat, double measureRange, int sampleSize = 1, PinList measPinList = null, double waitTime = 0.0, string setup = "") {

    if (TheExec.Flow.IsValidating) {
        TheLib.Validate.Pins(forcePinList, nameof(forcePinList), out _pinsForce);
        TheLib.Validate.Pins(forcePinList, nameof(forcePinList), out _pinsAll);
        _patternIsValid = !string.IsNullOrEmpty(preconditionPat);
        _measPinListIsNullOrEmpty = string.IsNullOrEmpty(measPinList);
        if (_patternIsValid) {
            TheLib.Validate.Pattern(preconditionPat, nameof(preconditionPat), out _pattern);
        }
        if (_measPinListIsNullOrEmpty) {
            _pinsMeasure = new Pins(forcePinList);
        } else {
            TheLib.Validate.Pins(measPinList, nameof(measPinList), out _pinsMeasure);
            _pinsAll.Add(measPinList);
        }
        TheLib.Validate.Enum(forceMode, nameof(forceMode), out _outputMode);
        TheLib.Validate.Enum(measureWhat, nameof(measureWhat), out _measureMode);
        _outputRangeValue = _outputMode == DcOutputMode.ForceVoltage ? clampValue : forceValue;
        _containsDigitalPins = _pinsAll.ContainsFeature(InstrumentFeature.Digital);
    }

    if (ShouldRunPreBody) {
        TheLib.Setup.LevelsAndTiming.Apply(true);
        Services.Setup.Apply(setup);
        if (_patternIsValid) TheLib.Execute.Digital.RunPattern(_pattern[0]);
        if (_containsDigitalPins) TheLib.Setup.Digital.Disconnect(_pinsAll);
        TheLib.Setup.Dc.Connect(_pinsAll);
    }

    if (ShouldRunBody) {
        TheLib.Setup.Dc.Force(_pinsForce, _outputMode, forceValue, forceValue, clampValue);
        TheLib.Setup.Dc.SetMeter(_pinsMeasure, _measureMode, measureRange, outputRangeValue: (!_measPinListIsNullOrEmpty) ? _outputRangeValue
            : null);
        TheLib.Execute.Wait(waitTime);
        _measPins = TheLib.Acquire.Dc.Measure(_pinsMeasure, sampleSize); 
    }

    if (ShouldRunPostBody) {
        TheLib.Setup.Dc.Disconnect(_pinsAll);
        if (_containsDigitalPins) TheLib.Setup.Digital.Connect(_pinsAll);
        TheLib.Datalog.TestParametric(_measPins, forceValue);
    }
}