Class RdsOn
- Namespace
- CsraTestMethods.Resistance
- Assembly
- CsraTestMethods.dll
[TestClass(Creation.TestInstance)]
[Serializable]
public class RdsOn : TestCodeBase
- Inheritance
-
TestCodeBaseRdsOn
- Inherited Members
-
TestCodeBase.AbortTest()TestCodeBase.DebugBreak()TestCodeBase.TheExecTestCodeBase.TheHdwTestCodeBase.TheProgramTestCodeBase.FlowDomainsTestCodeBase.ShouldRunPreBodyTestCodeBase.ShouldRunBodyTestCodeBase.ShouldRunPostBody
Methods
Baseline(PinList, string, double, double, double, string, string)
Performs a resistance measurement by forcing voltage or current and measuring current or voltage on the same pin.
[TestMethod]
[Steppable]
[CustomValidation]
public void Baseline(PinList forcePin, string forceMode, double forceValue, double measureRange, double waitTime = 0, string labelOfStoredVoltage = "", string setup = "")
Parameters
forcePinPinListPin to force and measure.
forceModestringThe mode for forcing (e.g., Voltage or Current).
forceValuedoubleThe value to force.
measureRangedoubleThe range for the measurement.
waitTimedoubleOptional. The wait time after forcing.
labelOfStoredVoltagestringOptional. Label of a reference voltage from a previously stored measurement.
setupstringOptional. The name of the setup set to be applied through the setup service.
Details
Test Technique
- to be added
Implementation
The PreBody section applies levels and timing from the test instance context. Optionally, applies the specified config. For all pins specified in the forcePin it disconnects any pin electronics, connects the dc path and turns on the gate.
The Body section applies a force current or voltage depending on the forceMode, sets the meter block and performs a voltage or current measurement on all pins specified in the forcePin in parallel after the specified waitTime. Finally, the resistance is calculated according to the forced and measured value. Optionally, resistance value can be calculated using the label of a reference voltage from a previously stored measurement labelOfStoredVoltage.
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
- any dc paths from pins in
forcePinare disconnected
Limitations
- support for non-uniform (mixed) instrument types in pinList not yet available
Code Reference
[TestMethod, Steppable, CustomValidation]
public void Baseline(PinList forcePin, string forceMode, double forceValue, double measureRange, double waitTime = 0,
string labelOfStoredVoltage = "", string setup = "") {
if (TheExec.Flow.IsValidating) {
TheLib.Validate.Pins(forcePin, nameof(forcePin), out _pinsFirst);
if (labelOfStoredVoltage != "") _labelVoltage = new PinSite<double>(forcePin, double.Parse(labelOfStoredVoltage));
else _labelVoltage = new PinSite<double>(forcePin, 0.0);
TheLib.Validate.Enum(forceMode.ToLower(), nameof(forceMode), out _outputMode);
_measureMode = _outputMode == DcOutputMode.ForceVoltage ? DcMeterMode.Current : DcMeterMode.Voltage;
TheLib.Validate.InRange(waitTime, 0, 600, nameof(waitTime));
_forceFirst = new PinSite<double>(forcePin, forceValue);
_containsDigitalPins = _pinsFirst.ContainsFeature(InstrumentFeature.Digital);
}
if (ShouldRunPreBody) {
TheLib.Setup.LevelsAndTiming.Apply(true);
Services.Setup.Apply(setup);
if (_containsDigitalPins) TheLib.Setup.Digital.Disconnect(_pinsFirst);
TheLib.Setup.Dc.Connect(_pinsFirst);
}
if (ShouldRunBody) {
TheLib.Setup.Dc.SetForceAndMeter(_pinsFirst, _outputMode, forceValue, forceValue, measureRange, _measureMode, measureRange);
TheLib.Execute.Wait(waitTime);
_measFirst = TheLib.Acquire.Dc.Measure(_pinsFirst);
_resistanceValue = (_outputMode == DcOutputMode.ForceVoltage) ? (_forceFirst - _labelVoltage) / _measFirst :
(_measFirst - _labelVoltage) / _forceFirst;
}
if (ShouldRunPostBody) {
TheLib.Setup.Dc.Disconnect(_pinsFirst);
if (_containsDigitalPins) TheLib.Setup.Digital.Connect(_pinsFirst);
TheLib.Datalog.TestParametric(_resistanceValue);
}
}
FourPinsTwoForceTwoMeasure(PinList, double, double, PinList, double, double, PinList, PinList, double, double, double, string)
Performs a resistance delta measurement by forcing a current on first pin, voltage on second pin and measuring a delta voltage on two other pins.
[TestMethod]
[Steppable]
[CustomValidation]
public void FourPinsTwoForceTwoMeasure(PinList forceFirstPin, double forceValueFirstPin, double clampValueOfForceFirstPin, PinList forceSecondPin, double forceValueSecondPin, double clampValueOfForceSecondPin, PinList measureFirstPin, PinList measureSecondPin, double measureRangeFirstPin, double measureRangeSecondPin, double waitTime = 0, string setup = "")
Parameters
forceFirstPinPinListFirst pin to force Current.
forceValueFirstPindoubleValue to force on first pin.
clampValueOfForceFirstPindoubleClamp Value of the first force pin. May also set its range.
forceSecondPinPinListSecond pin to force Voltage.
forceValueSecondPindoubleValue to force on second pin.
clampValueOfForceSecondPindoubleClamp Value of the second force pin. May also set its range.
measureFirstPinPinListFirst pin to measure voltage.
measureSecondPinPinListSecond pin to measure voltage.
measureRangeFirstPindoubleMeasurement range of first measured pins.
measureRangeSecondPindoubleMeasurement range of second measured pins.
waitTimedoubleOptional. Wait time after forcing.
setupstringOptional. Name of the setup set to be applied through the setup service.
Details
Test Technique
- to be added
Implementation
The PreBody section applies levels and timing from the test instance context. Optionally, applies the specified config. For all pins specified in forceFirstPin, forceSecondPin, measureFirstPin and measureSecondPin it disconnects any pin electronics, connects the dc path and turns on the gate.
The Body section applies a force current on all pins specified in the forceFirstPin and force voltage on all pins specified in the forceSecondPin. Configures High Impedance mode, initializes the meter block, and performs a voltage measurement across all pins in parallel specified in measureFirstPin and in measureSecondPin after the specified waitTime. Finally, the resistance is calculated according to the forced current value and the measured values.
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
- any dc paths from pins in
forceFirstPin,forceSecondPin,measureFirstPinandmeasureSecondPinare disconnected
Limitations
- support for non-uniform (mixed) instrument types in pinList not yet available
Code Reference
[TestMethod, Steppable, CustomValidation]
public void FourPinsTwoForceTwoMeasure(PinList forceFirstPin, double forceValueFirstPin, double clampValueOfForceFirstPin, PinList forceSecondPin,
double forceValueSecondPin, double clampValueOfForceSecondPin, PinList measureFirstPin, PinList measureSecondPin, double measureRangeFirstPin,
double measureRangeSecondPin, double waitTime = 0, string setup = "") {
if (TheExec.Flow.IsValidating) {
TheLib.Validate.Pins(forceFirstPin, nameof(forceFirstPin), out _pinsFirst);
TheLib.Validate.Pins(forceSecondPin, nameof(forceSecondPin), out _pinsSecond);
TheLib.Validate.Pins(measureFirstPin, nameof(measureFirstPin), out _pinsFirstMeas);
TheLib.Validate.Pins(measureSecondPin, nameof(measureSecondPin), out _pinsSecondMeas);
_allPins = new Pins(string.Join(", ", forceFirstPin, forceSecondPin, measureFirstPin, measureSecondPin));
_allMeasPins = new Pins(string.Join(", ", measureFirstPin, measureSecondPin));
_forceFirst = new PinSite<double>(forceFirstPin, forceValueFirstPin);
_containsDigitalPins = _allPins.ContainsFeature(InstrumentFeature.Digital);
}
if (ShouldRunPreBody) {
TheLib.Setup.LevelsAndTiming.Apply(true);
Services.Setup.Apply(setup);
if (_containsDigitalPins) TheLib.Setup.Digital.Disconnect(_allPins);
TheLib.Setup.Dc.Connect(_allPins);
}
if (ShouldRunBody) {
TheLib.Setup.Dc.ForceHiZ(_allMeasPins);
TheLib.Setup.Dc.Force(_pinsFirst, DcOutputMode.ForceCurrent, forceValueFirstPin, forceValueFirstPin, clampValueOfForceFirstPin);
TheLib.Setup.Dc.Force(_pinsSecond, DcOutputMode.ForceVoltage, forceValueSecondPin, forceValueSecondPin, clampValueOfForceSecondPin);
TheLib.Setup.Dc.SetMeter(_pinsFirstMeas, DcMeterMode.Voltage, measureRangeFirstPin);
TheLib.Setup.Dc.SetMeter(_pinsSecondMeas, DcMeterMode.Voltage, measureRangeSecondPin);
TheLib.Execute.Wait(waitTime);
_measFirst = TheLib.Acquire.Dc.Measure(_pinsFirstMeas);
_measSecond = TheLib.Acquire.Dc.Measure(_pinsSecondMeas);
_resistanceValue = (_measFirst - _measSecond) / _forceFirst;
}
if (ShouldRunPostBody) {
TheLib.Setup.Dc.Disconnect(_allPins);
if (_containsDigitalPins) TheLib.Setup.Digital.Connect(_allPins);
TheLib.Datalog.TestParametric(_resistanceValue);
}
}
ThreePinsOneForceTwoMeasure(PinList, double, double, PinList, double, PinList, double, double, string)
Performs a resistance measurement by forcing a current on one pin and measuring on two other pins.
[TestMethod]
[Steppable]
[CustomValidation]
public void ThreePinsOneForceTwoMeasure(PinList forcePin, double forceCurrentPin, double clampValueOfForcePin, PinList measureFirstPin, double measureRangeFirstPin, PinList measureSecondPin, double measureRangeSecondPin, double waitTime = 0, string setup = "")
Parameters
forcePinPinListPin to force.
forceCurrentPindoubleCurrent to force.
clampValueOfForcePindoubleClamp Value of the force pin. May also set its range.
measureFirstPinPinListFirst pin to measure voltage.
measureRangeFirstPindoubleMeasurement range of first measured pin.
measureSecondPinPinListSecond pin to measure voltage.
measureRangeSecondPindoubleMeasurement range of second measured pin.
waitTimedoubleOptional. Wait time after forcing.
setupstringOptional. Name of the setup set to be applied through the setup service.
Details
Test Technique
- to be added
Implementation
The PreBody section applies levels and timing from the test instance context. Optionally, applies the specified config. For all pins specified in the forcePin,measureFirstPin and measureSecondPin it disconnects any pin electronics, connects the dc path and turns on the gate.
The Body section applies a force current on all pins specified in the forcePin. Configures High Impedance mode, initializes the meter block, and performs a voltage measurement on all pins in parallel specified in measureFirstPin and in measureSecondPin after the specified waitTime. Finally, the resistance is calculated according to the forced value and the measured values.
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
- any dc paths from pins in
forcePin,measureFirstPinandmeasureSecondPinare disconnected
Limitations
- support for non-uniform (mixed) instrument types in pinList not yet available
Code Reference
[TestMethod, Steppable, CustomValidation]
public void ThreePinsOneForceTwoMeasure(PinList forcePin, double forceCurrentPin, double clampValueOfForcePin, PinList measureFirstPin,
double measureRangeFirstPin, PinList measureSecondPin, double measureRangeSecondPin, double waitTime = 0, string setup = "") {
if (TheExec.Flow.IsValidating) {
TheLib.Validate.Pins(forcePin, nameof(forcePin), out _pinsFirst);
TheLib.Validate.Pins(measureFirstPin, nameof(measureFirstPin), out _pinsFirstMeas);
TheLib.Validate.Pins(measureSecondPin, nameof(measureSecondPin), out _pinsSecondMeas);
_forceFirst = new PinSite<double>(forcePin, forceCurrentPin);
_allPins = new Pins(string.Join(", ", forcePin, measureFirstPin, measureSecondPin));
_allMeasPins = new Pins(string.Join(", ", measureFirstPin, measureSecondPin));
_containsDigitalPins = _allPins.ContainsFeature(InstrumentFeature.Digital);
}
if (ShouldRunPreBody) {
TheLib.Setup.LevelsAndTiming.Apply(true);
Services.Setup.Apply(setup);
if (_containsDigitalPins) TheLib.Setup.Digital.Disconnect(_allPins);
TheLib.Setup.Dc.Connect(_allPins);
}
if (ShouldRunBody) {
TheLib.Setup.Dc.ForceHiZ(_allMeasPins);
TheLib.Setup.Dc.Force(_pinsFirst, DcOutputMode.ForceCurrent, forceCurrentPin, forceCurrentPin, clampValueOfForcePin);
TheLib.Setup.Dc.SetMeter(_pinsFirstMeas, DcMeterMode.Voltage, measureRangeFirstPin);
TheLib.Setup.Dc.SetMeter(_pinsSecondMeas, DcMeterMode.Voltage, measureRangeSecondPin);
TheLib.Execute.Wait(waitTime);
_measFirst = TheLib.Acquire.Dc.Measure(_pinsFirstMeas);
_measSecond = TheLib.Acquire.Dc.Measure(_pinsSecondMeas);
_resistanceValue = (_measFirst - _measSecond) / _forceFirst;
}
if (ShouldRunPostBody) {
TheLib.Setup.Dc.Disconnect(_allPins);
if (_containsDigitalPins) TheLib.Setup.Digital.Connect(_allPins);
TheLib.Datalog.TestParametric(_resistanceValue);
}
}
TwoPinsDeltaForceDeltaMeasure(PinList, string, double, double, double, PinList, double, double, double, string)
Performs a resistance delta measurement by forcing two force values on one pin and measuring with a second pin.
[TestMethod]
[Steppable]
[CustomValidation]
public void TwoPinsDeltaForceDeltaMeasure(PinList forcePin, string forceMode, double forceFirstValue, double forceSecondValue, double clampValueOfForcePin, PinList measurePin, double measureFirstRange, double measureSecondRange, double waitTime = 0, string setup = "")
Parameters
forcePinPinListPin to force.
forceModestringForce Mode of force pin (e.g., Voltage or Current).
forceFirstValuedoubleFirst value to force.
forceSecondValuedoubleSecond value to force to calculate a delta.
clampValueOfForcePindoubleClamp Value of the force pin. May also set its range.
measurePinPinListPin to measure.
measureFirstRangedoubleFirst range for the measurement.
measureSecondRangedoubleSecond range for the measurement.
waitTimedoubleOptional. Wait time after forcing.
setupstringOptional. The name of the setup set to be applied through the setup service.
Details
Test Technique
- to be added
Implementation
The PreBody section applies levels and timing from the test instance context. Optionally, applies the specified config. For all pins specified in the forcePin and measurePin it disconnects any pin electronics, connects the dc path and turns on the gate.
The Body section applies a force current or voltage depending on the forceMode. Configures High Impedance mode, initializes the meter block, and performs a voltage or current measurement on all pins in parallel specified in the measurePin after the specified waitTime. Settings are applied twice serially to achieve the delta between measurements. Finally, the resistance is calculated according to the forced values and the measured values.
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
- any dc paths from pins in
forcePinandmeasurePinare disconnected
Limitations
- support for non-uniform (mixed) instrument types in pinList not yet available
Code Reference
[TestMethod, Steppable, CustomValidation]
public void TwoPinsDeltaForceDeltaMeasure(PinList forcePin, string forceMode, double forceFirstValue, double forceSecondValue,
double clampValueOfForcePin, PinList measurePin, double measureFirstRange, double measureSecondRange, double waitTime = 0, string setup = "") {
if (TheExec.Flow.IsValidating) {
TheLib.Validate.Pins(forcePin, nameof(forcePin), out _pinsFirst);
TheLib.Validate.Pins(measurePin, nameof(measurePin), out _pinsFirstMeas);
TheLib.Validate.Enum(forceMode.ToLower(), nameof(forceMode), out _outputMode);
_measureMode = _outputMode == DcOutputMode.ForceVoltage ? DcMeterMode.Current : DcMeterMode.Voltage;
_forceFirst = new PinSite<double>(forcePin, forceFirstValue);
_forceSecond = new PinSite<double>(forcePin, forceSecondValue);
_allPins = new Pins(forcePin);
_allPins.Add(measurePin);
_containsDigitalPins = _allPins.ContainsFeature(InstrumentFeature.Digital);
}
if (ShouldRunPreBody) {
TheLib.Setup.LevelsAndTiming.Apply(true);
Services.Setup.Apply(setup);
if (_containsDigitalPins) TheLib.Setup.Digital.Disconnect(_allPins);
TheLib.Setup.Dc.Connect(_allPins);
}
if (ShouldRunBody) {
TheLib.Setup.Dc.ForceHiZ(_pinsFirstMeas);
TheLib.Setup.Dc.Force(_pinsFirst, _outputMode, forceFirstValue, forceFirstValue, clampValueOfForcePin);
TheLib.Setup.Dc.SetMeter(_pinsFirstMeas, _measureMode, measureFirstRange);
TheLib.Execute.Wait(waitTime);
_measFirst = TheLib.Acquire.Dc.Measure(_pinsFirstMeas);
TheLib.Setup.Dc.Force(_pinsFirst, _outputMode, forceSecondValue, forceSecondValue, clampValueOfForcePin);
TheLib.Setup.Dc.SetMeter(_pinsFirstMeas, _measureMode, measureSecondRange);
TheLib.Execute.Wait(waitTime);
_measSecond = TheLib.Acquire.Dc.Measure(_pinsFirstMeas);
_resistanceValue = (_outputMode == DcOutputMode.ForceVoltage) ? (_forceFirst - _forceSecond) / (_measFirst - _measSecond) :
(_measFirst - _measSecond) / (_forceFirst - _forceSecond);
}
if (ShouldRunPostBody) {
TheLib.Setup.Dc.Disconnect(_allPins);
if (_containsDigitalPins) TheLib.Setup.Digital.Connect(_allPins);
TheLib.Datalog.TestParametric(_resistanceValue);
}
}
TwoPinsOneForceOneMeasure(PinList, string, double, double, PinList, double, double, string, string)
Performs a resistance measurement by forcing voltage or current on one pin and measuring current or voltage on second pin.
[TestMethod]
[Steppable]
[CustomValidation]
public void TwoPinsOneForceOneMeasure(PinList forcePin, string forceMode, double forceValue, double clampValueOfForcePin, PinList measurePin, double measureRange, double waitTime = 0, string labelOfStoredVoltage = "", string setup = "")
Parameters
forcePinPinListPin to force.
forceModestringThe mode for forcing (e.g., Voltage or Current).
forceValuedoubleThe value to force.
clampValueOfForcePindoubleClamp Value of the force pin. May also set its range.
measurePinPinListPin to measure.
measureRangedoubleThe range for measurement.
waitTimedoubleOptional. The wait time after forcing.
labelOfStoredVoltagestringOptional. Label of a reference voltage from a previously stored measurement.
setupstringOptional. The name of the setup set to be applied through the setup service.
Details
Test Technique
- to be added
Implementation
The PreBody section applies levels and timing from the test instance context. Optionally, applies the specified config. For all pins specified in the forcePin and measurePin it disconnects any pin electronics, connects the dc path and turns on the gate..
The Body section applies a force current or voltage depending on the forceMode on all pins specified in the forcePin. Configures High Impedance mode, initializes the meter block, and performs a voltage or current measurement on all pins in parallel specified in the measurePin after the specified waitTime. Finally, resistance is calculated according to the forced and measured value. Optionally, resistance value can be calculated using the label of a reference voltage from a previously stored measurement labelOfStoredVoltage.
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
- any dc paths from pins in
forcePinandmeasurePinare disconnected
Limitations
- support for non-uniform (mixed) instrument types in pinList not yet available
Code Reference
[TestMethod, Steppable, CustomValidation]
public void TwoPinsOneForceOneMeasure(PinList forcePin, string forceMode, double forceValue, double clampValueOfForcePin, PinList measurePin,
double measureRange, double waitTime = 0, string labelOfStoredVoltage = "", string setup = "") {
if (TheExec.Flow.IsValidating) {
TheLib.Validate.Pins(forcePin, nameof(forcePin), out _pinsFirst);
TheLib.Validate.Pins(measurePin, nameof(measurePin), out _pinsFirstMeas);
_forceFirst = new PinSite<double>(forcePin, forceValue);
if (labelOfStoredVoltage != "") _labelVoltage = new PinSite<double>(forcePin, double.Parse(labelOfStoredVoltage));
else _labelVoltage = new PinSite<double>(forcePin, 0.0);
TheLib.Validate.Enum(forceMode.ToLower(), nameof(forceMode), out _outputMode);
_measureMode = _outputMode == DcOutputMode.ForceVoltage ? DcMeterMode.Current : DcMeterMode.Voltage;
TheLib.Validate.InRange(waitTime, 0, 600, nameof(waitTime));
_allPins = new Pins(forcePin);
_allPins.Add(measurePin);
_containsDigitalPins = _allPins.ContainsFeature(InstrumentFeature.Digital);
}
if (ShouldRunPreBody) {
TheLib.Setup.LevelsAndTiming.Apply(true);
Services.Setup.Apply(setup);
if (_containsDigitalPins) TheLib.Setup.Digital.Disconnect(_allPins);
TheLib.Setup.Dc.Connect(_allPins);
}
if (ShouldRunBody) {
TheLib.Setup.Dc.ForceHiZ(_pinsFirstMeas);
TheLib.Setup.Dc.Force(_pinsFirst, _outputMode, forceValue, forceValue, clampValueOfForcePin);
TheLib.Setup.Dc.SetMeter(_pinsFirstMeas, _measureMode, measureRange);
TheLib.Execute.Wait(waitTime);
_measFirst = TheLib.Acquire.Dc.Measure(_pinsFirstMeas);
_resistanceValue = (_outputMode == DcOutputMode.ForceVoltage) ? (_forceFirst - _labelVoltage) / _measFirst :
(_measFirst - _labelVoltage) / _forceFirst;
}
if (ShouldRunPostBody) {
TheLib.Setup.Dc.Disconnect(_allPins);
if (_containsDigitalPins) TheLib.Setup.Digital.Connect(_allPins);
TheLib.Datalog.TestParametric(_resistanceValue);
}
}