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
-
TestCodeBaseSingleCondition
- Inherited Members
-
TestCodeBase.AbortTest()TestCodeBase.DebugBreak()TestCodeBase.TheExecTestCodeBase.TheHdwTestCodeBase.TheProgramTestCodeBase.FlowDomainsTestCodeBase.ShouldRunPreBodyTestCodeBase.ShouldRunBodyTestCodeBase.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
forcePinListPinListComma separated list of pin or pin groups representing the DC setup and/or measurement.
forceModestringForce mode for each pin or pin group.
forceValuedoubleForce voltage or current for all pins or pin groups.
clampValuedoubleClamp voltage or current for all pina or pin groups.
measureWhatstringMeasures either voltage or current for all measured pins or pin groups.
measureRangedoubleExpected voltage or current for all pins or pin groups to set the range.
sampleSizeintOptional. Number of samples to average for all pins or pin groups.
measPinListPinListOptional. Comma separted list of measurement pins or pin groups, if different from forcePinList.
waitTimedoubleOptional. Settling time used after pin setup.
setupstringOptional. 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
forcePinListPinListComma separated list of pin or pin groups representing the DC setup and/or measurement.
forceModestringForce mode for each pin or pin group.
forceValuedoubleForce voltage or current for all pins or pin groups.
clampValuedoubleClamp voltage or current for all pina or pin groups.
preconditionPatPatternPattern to run to precondition the device before the parametric test.
measureWhatstringMeasures either voltage or current for all measured pins or pin groups.
measureRangedoubleExpected voltage or current for all pins or pin groups to set the range.
sampleSizeintOptional. Number of samples to average for all pins or pin groups.
measPinListPinListOptional. Comma separted list of measurement pins or pin groups, if different from forcePinList.
waitTimedoubleOptional. Settling time used after pin setup.
setupstringOptional. 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);
}
}