Table of Contents

Class Contact

Namespace
CsraTestMethods.Resistance
Assembly
CsraTestMethods.dll
[TestClass(Creation.TestInstance)]
[Serializable]
public class Contact : TestCodeBase
Inheritance
TestCodeBase
Contact
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, double, double, double, double, string)

Performs a resistance measurement by forcing two values of voltage or current and measuring two currents or voltages.

[TestMethod]
[Steppable]
[CustomValidation]
public void Baseline(PinList forcePin, string forceMode, double forceFirstValue, double forceSecondValue, double clampValueOfForcePin, double measureFirstRange, double measureSecondRange, double waitTime = 0, string setup = "")

Parameters

forcePin PinList

Pin to force and measure.

forceMode string

The mode for forcing (e.g., Voltage or Current).

forceFirstValue double

First value to force.

forceSecondValue double

Second value to force.

clampValueOfForcePin double

Clamp Value of the force pin. May also set its range.

measureFirstRange double

The range for first measurement.

measureSecondRange double

The range for second measurement.

waitTime double

Optional. The wait time after forcing.

setup string

Optional. 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. 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 forcePin are 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 forceFirstValue, double forceSecondValue, double clampValueOfForcePin,
    double measureFirstRange, double measureSecondRange, double waitTime = 0.0, string setup = "") {

    if (TheExec.Flow.IsValidating) {
        TheLib.Validate.Pins(forcePin, nameof(forcePin), out _pinsFirst);
        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);
        _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, forceFirstValue, forceFirstValue, clampValueOfForcePin, _measureMode,
            measureFirstRange);
        TheLib.Execute.Wait(waitTime);
        _measFirst = TheLib.Acquire.Dc.Measure(_pinsFirst);
        TheLib.Setup.Dc.SetForceAndMeter(_pinsFirst, _outputMode, forceSecondValue, forceSecondValue, clampValueOfForcePin, _measureMode,
            measureSecondRange, false);
        TheLib.Execute.Wait(waitTime);
        _measSecond = TheLib.Acquire.Dc.Measure(_pinsFirst);
        _resistanceValue = (_outputMode == DcOutputMode.ForceVoltage) ? (_forceFirst - _forceSecond) / (_measFirst - _measSecond) :
            (_measFirst - _measSecond) / (_forceFirst - _forceSecond);
    }

    if (ShouldRunPostBody) {
        TheLib.Setup.Dc.Disconnect(_pinsFirst);
        if (_containsDigitalPins) TheLib.Setup.Digital.Connect(_pinsFirst);
        TheLib.Datalog.TestParametric(_resistanceValue);
    }
}