Table of Contents

Class Parallel

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

Overview

TestClass for Parallel Leakage related TestMethods.

Platform Specifics

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

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

Methods

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

Measures leakage currents by applying a voltage to all pins in parallel at the same time.

[TestMethod]
[Steppable]
[CustomValidation]
public void Baseline(PinList pinList, double voltage, double currentRange, double waitTime, string setup = "")

Parameters

pinList PinList

List of pin or pin group names.

voltage double

The force voltage value.

currentRange double

The current range for measurement.

waitTime double

The time for the force condition to settle before the measurement is made.

setup string

Optional. The name of the setup to be applied via SetupService.

Details

Test Technique

This test method can be used to measure currents flowing into device inputs. One common example is the digital input leakage test to detect issues in isolation structures, possibly damaged by a manufacturing flaw or elevated test voltage levels. Even though such a device may still work according to the specification, statistical outliers can indicate early failures in the devices' target application.

Schematic

The diagram shows a typical (simplified) schematic for a leakage test with the Device-Under-Test and four tester channels (three different types) connected to individual device pins. The instruments are ground referenced and in Force-Voltage mode to allow measuring the currents flowing into the device.

The test applies a voltage (often near the VDD level) to digital input pins, after the device has been brought into a static state that should not allow any current to flow. Ideally, the measured currents are very close to 0A. High sensitivity to noise, and the need to settle dynamic (charging) effects often result in significant test times, mitigated only by the fact that the measurement can usually be made on all pins in parallel.

The parallel testing method stands out for its high level of efficiency, as it allows the simultaneous evaluation of multiple pins, thereby significantly reducing testing time and optimizing the use of available resources. However, a major limitation of this approach lies in its inability to detect leakage currents between input pins, since all pins are tested concurrently. In such cases, it is recommended to resort to the serial testing method, which enables a more precise and individual analysis of each pin (see Leakage.Serial.Baseline).

Alternatively, the group testing method offers a balance between precision and efficiency by performing sequential testing of pins or groups of pins, according to the structure defined in the pinList (see Leakage.Groups.Baseline).

Special attention is required to avoid these common issues:

  • An accidental omission of the signal path connection (e.g., an open DIB relay) may be difficult to detect, as measurements into an open line yield statistically inconspicuous results.
  • The reliable measurement of very small currents may be limited by the instrument's performance, so that the results rather reflect the instrument's behavior instead of the component's characteristic.
Implementation

The Validation section verifies the input parameters for correctness and creates the Pins object.

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 and connects the dc path.

The Body section applies a force voltage, turns on the gate, and performs a current measurement on all pins in parallel after the specified waitTime.

The PostBody section re-establishes the pin electronics connection for digital pins after gating off and disconnecting the DC path. Finally, the parametric measurement results are datalogged.

Platform Specifics

Supports stepping capability for PreBody/Body/PostBody.

Pre Conditions
  • none
Post Conditions
  • digital pins in pinList have pin electronics connected
  • any dc paths from pins in pinList are disconnected
Limitations
  • none
Code Reference
[TestMethod, Steppable, CustomValidation]
public void Baseline(PinList pinList, double voltage, double currentRange, double waitTime, string setup = "") {

    if (TheExec.Flow.IsValidating) {
        TheLib.Validate.Pins(pinList, nameof(pinList), out _pins);
        TheLib.Validate.InRange(waitTime, 0, 600, nameof(waitTime));
        _containsDigitalPins = _pins.ContainsFeature(InstrumentFeature.Digital);
    }

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

    if (ShouldRunBody) {
        TheLib.Setup.Dc.SetForceAndMeter(_pins, DcOutputMode.ForceVoltage, voltage, voltage, currentRange, DcMeterMode.Current, currentRange);
        TheLib.Execute.Wait(waitTime);
        _meas = TheLib.Acquire.Dc.Measure(_pins);
    }

    if (ShouldRunPostBody) {
        TheLib.Setup.Dc.Disconnect(_pins);
        if (_containsDigitalPins) TheLib.Setup.Digital.Connect(_pins);
        TheLib.Datalog.TestParametric(_meas, voltage);
    }
}

Preconditioning(Pattern, PinList, double, double, double, string)

Runs a pattern and then measures leakage currents by applying a voltage to all pins in parallel at the same time.

[TestMethod]
[Steppable]
[CustomValidation]
public void Preconditioning(Pattern pattern, PinList pinList, double voltage, double currentRange, double waitTime, string setup = "")

Parameters

pattern Pattern

Pattern to be executed.

pinList PinList

List of pin or pin group names.

voltage double

The force voltage value.

currentRange double

The current range for measurement.

waitTime double

The time for the force condition to settle before the measurement is made.

setup string

Optional. The name of the setup to be applied via SetupService.

Details

Test Technique

This test method can be used to execute a preconditioning pattern before measuring currents flowing into the inputs of a device. It follows the implementation of Leakage.Parallel.Baseline.

Alternatives for when full parallel measurements are not suitable can be found here:

Implementation

The Validation section verifies the input parameters for correctness and creates the Pins and PatternInfo objects.

The PreBody section applies levels and timing from the test instance context. Optionally, applies the specified setup. Executes the pattern, then disconnects the pin electronic of any digital pin specified in the 'pinList' and finally connects the dc path for all pins specified in the pinList.

The Body section applies a force voltage, turns on the gate to all pins, and performs a current measurement on all pins in parallel after the specified waitTime.

The PostBody section re-establishes the pin electronics connection for digital pins after gating off and disconnecting the DC path. Finally, the parametric measurement results are datalogged.

Platform Specifics

Supports stepping capability for PreBody/Body/PostBody.

Pre Conditions
  • none
Post Conditions
  • digital pins in pinList have pin electronics connected
  • any dc paths from pins in pinList are disconnected
Limitations
  • none
Code Reference
[TestMethod, Steppable, CustomValidation]
public void Preconditioning(Pattern pattern, PinList pinList, double voltage, double currentRange, double waitTime, string setup = "") {

    if (TheExec.Flow.IsValidating) {
        TheLib.Validate.Pins(pinList, nameof(pinList), out _pins);
        TheLib.Validate.Pattern(pattern, nameof(pattern), out _pattern);
        TheLib.Validate.InRange(waitTime, 0, 600, nameof(waitTime));
        _containsDigitalPins = _pins.ContainsFeature(InstrumentFeature.Digital);
    }

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

    if (ShouldRunBody) {
        TheLib.Setup.Dc.SetForceAndMeter(_pins, DcOutputMode.ForceVoltage, voltage, voltage, currentRange, DcMeterMode.Current, currentRange);
        TheLib.Execute.Wait(waitTime);
        _meas = TheLib.Acquire.Dc.Measure(_pins);
    }

    if (ShouldRunPostBody) {
        TheLib.Setup.Dc.Disconnect(_pins);
        if (_containsDigitalPins) TheLib.Setup.Digital.Connect(_pins);
        TheLib.Datalog.TestParametric(_meas, voltage);
    }
}