Class Groups
- Namespace
- CsraTestMethods.Leakage
- Assembly
- CsraTestMethods.dll
[TestClass(Creation.TestInstance)]
[Serializable]
public class Groups : TestCodeBase
Overview
TestClass for Groups Leakage related TestMethods.
Platform Specifics
Uses per test-instance test class object persistence ([TestClass(Creation.TestInstance)] attribute).
- Inheritance
-
TestCodeBaseGroups
- Inherited Members
-
TestCodeBase.AbortTest()TestCodeBase.DebugBreak()TestCodeBase.TheExecTestCodeBase.TheHdwTestCodeBase.TheProgramTestCodeBase.FlowDomainsTestCodeBase.ShouldRunPreBodyTestCodeBase.ShouldRunBodyTestCodeBase.ShouldRunPostBody
Methods
Baseline(PinList, double, double, double, double, string)
Measures leakage currents by applying a voltage in a sequential process carried out on each pin or group of pins, according to the structure defined
in the pinList parameter.
[TestMethod]
[Steppable]
[CustomValidation]
public void Baseline(PinList pinList, double voltage, double currentRange, double baseVoltage, double waitTime, string setup = "")
Parameters
pinListPinListList of pin or pin group names.
voltagedoubleThe force voltage value.
currentRangedoubleThe current range for measurement.
baseVoltagedoubleThe voltage value applied to all pins other than the one currently measured in the sequence. Intended to prevent any cross-pin interference.
waitTimedoubleThe time for the force condition to settle before the measurement is made.
setupstringOptional. 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.
A typical circuitry for a leakage test showing the device and four instruments (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 typically applies a voltage 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 group testing method combines the precision of individual evaluation with the flexibility of collective assessment, allowing for the sequential analysis of each pin or group of pins, based on the structure defined in the pinList parameter. This approach facilitates efficient identification of leakage currents and provides a detailed overview of the behavior of the tested elements, without compromising control over each component. It is particularly useful in scenarios where pins are logically or functionally organized into groups and resources must be carefully managed. However, the testing duration may be affected by the size and complexity of the groups, as the process is carried out sequentially. In situations that require pinpoint analysis and maximum accuracy, the serial testing method is recommended.
Details can be found in: Leakage.Serial.Baseline
Conversely, for optimizing time and resource usage in less sensitive contexts, the parallel testing method remains an efficient alternative. Details can be found in: Leakage.Parallel.Baseline
Special attention is required to avoid these common issues:
- An accidental disconnect in the signal path (e.g., due to an open DIB relay) may be difficult to detect, as measurements into an open line yield statistically inconspicuous results.
- The 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 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.
The Body section initially applies the baseVoltage and turns on the gate to all pins. Subsequently, regardless of whether individual pins or groups of pins are specified in the pinList, the process proceeds sequentially, element by element. For each pin or group, the voltage is applied, the specified waitTime is allowed to elapse, and a current measurement is performed. After the measurement is completed, the baseVoltage is reapplied to the respective pin or group.
The PostBody section establishes 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
- digital pins in
pinListhave pin electronics connected - any dc paths from pins in
pinListare disconnected
Limitations
- none
Code Reference
[TestMethod, Steppable, CustomValidation]
public void Baseline(PinList pinList, double voltage, double currentRange, double baseVoltage, double waitTime, string setup = "") {
if (TheExec.Flow.IsValidating) {
TheLib.Validate.Pins(pinList, nameof(pinList), out _pins);
TheLib.Validate.InRange(waitTime, 0, 600, nameof(waitTime));
TheLib.Validate.MultiCondition(pinList, p => new Pins(p), nameof(_pinSteps), out _pinSteps);
_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) {
_meas = new();
TheLib.Setup.Dc.SetForceAndMeter(_pins, DcOutputMode.ForceVoltage, baseVoltage, baseVoltage, currentRange, DcMeterMode.Current, currentRange);
foreach (var pin in _pinSteps) {
TheLib.Setup.Dc.ForceV(pin, voltage, currentRange, voltage, gateOn: false);
TheLib.Execute.Wait(waitTime);
_meas.AddRange(TheLib.Acquire.Dc.Measure(pin));
TheLib.Setup.Dc.ForceV(pin, baseVoltage, currentRange, baseVoltage, gateOn: false);
}
}
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, double, string)
Runs a pattern and then measures leakage currents by applying a voltage in a sequential process carried out on each pin or group of pins, according
to the structure defined in the pinList parameter.
[TestMethod]
[Steppable]
[CustomValidation]
public void Preconditioning(Pattern pattern, PinList pinList, double voltage, double currentRange, double baseVoltage, double waitTime, string setup = "")
Parameters
patternPatternPattern to be executed.
pinListPinListList of pin or pin group names.
voltagedoubleThe force voltage value.
currentRangedoubleThe current range for measurement.
baseVoltagedoubleThe voltage value applied to all pins other than the one currently measured in the sequence. Intended to prevent any cross-pin interference.
waitTimedoubleThe time for the force condition to settle before the measurement is made.
setupstringOptional. The name of the setup to be applied via SetupService.
Details
Test Technique
This test method can be used to measure currents flowing into the inputs of a device, additionally running a pattern before the measurements to precondition the device under test (DUT) and ensure that the pins or internal circuits are in the correct state for testing. 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.
A typical circuitry for a leakage test showing the device and four instruments (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 typically applies a voltage 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 group testing method combines the precision of individual evaluation with the flexibility of collective assessment, allowing for the sequential analysis of each pin or group of pins, based on the structure defined in the pinList parameter. This approach facilitates efficient identification of leakage currents and provides a detailed overview of the behavior of the tested elements, without compromising control over each component. It is particularly useful in scenarios where pins are logically or functionally organized into groups and resources must be carefully managed. However, the testing duration may be affected by the size and complexity of the groups, as the process is carried out sequentially. In situations that require pinpoint analysis and maximum accuracy, the serial testing method is recommended.
Details can be found in: Leakage.Serial.Preconditioning
Conversely, for optimizing time and resource usage in less sensitive contexts, the parallel testing method remains an efficient alternative. Details can be found in: Leakage.Parallel.Preconditioning
Special attention is required to avoid these common issues:
- An accidental disconnect in the signal path (e.g., due to an open DIB relay) may be difficult to detect, as measurements into an open line yield statistically inconspicuous results.
- The 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 instantiates the pins object and will also instantiate the pattern object if a pattern is given in the test method parameters.
The PreBody section applies levels and timing from the test instance context. Optionally, applies the specified setup. Executes the pattern if passed in the test method parameters and for all pins specified in the pinList it disconnects any pin electronics, connects the dc path.
The Body section initially applies the baseVoltage and turns on the gate to all pins. Subsequently, regardless of whether individual pins or groups of pins are specified in the pinList, the process proceeds sequentially, element by element. For each pin or group, the voltage is applied, the specified waitTime is allowed to elapse, and a current measurement is performed. After the measurement is completed, the baseVoltage is reapplied to the respective pin or group.
The PostBody section establishes 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
- digital pins in
pinListhave pin electronics connected - any dc paths from pins in
pinListare disconnected
Limitations
- none
Code Reference
[TestMethod, Steppable, CustomValidation]
public void Preconditioning(Pattern pattern, PinList pinList, double voltage, double currentRange, double baseVoltage, 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));
TheLib.Validate.MultiCondition(pinList, p => new Pins(p), nameof(_pinSteps), out _pinSteps);
_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) {
_meas = new();
TheLib.Setup.Dc.SetForceAndMeter(_pins, DcOutputMode.ForceVoltage, baseVoltage, baseVoltage, currentRange, DcMeterMode.Current, currentRange);
foreach (var pin in _pinSteps) {
TheLib.Setup.Dc.ForceV(pin, voltage, currentRange, voltage, gateOn: false);
TheLib.Execute.Wait(waitTime);
_meas.AddRange(TheLib.Acquire.Dc.Measure(pin));
TheLib.Setup.Dc.ForceV(pin, baseVoltage, currentRange, baseVoltage, gateOn: false);
}
}
if (ShouldRunPostBody) {
TheLib.Setup.Dc.Disconnect(_pins);
if (_containsDigitalPins) TheLib.Setup.Digital.Connect(_pins);
TheLib.Datalog.TestParametric(_meas, voltage);
}
}