Skip to content

Releases: ni/semi-test-library-dotnet

v25.5.0

30 Sep 11:10
Compare
Choose a tag to compare
  • Added

    • Instrument Abstraction
      • New MergePinGroup and UnmergePinGroup DCPower methods added for merging and unmerging channels within a pin group to output higher current. Only supported with multichannel SMUs that support the NI-DCPower Merged Channels driver feature, such as the PXIe-4147, PXIe-4162, and PXIe-4163 devices. Refer to the updated documentation for details.
        • MergePinGroup(string mergedChannelsPinGroupName)
        • MergePinGroup(string[] mergedChannelsPinGroupNames)
        • UnmergePinGroup(string mergedChannelsPinGroupName)
        • UnmergePinGroup(string[] mergedChannelsPinGroupNames)
      • New interfaces and classes added to support Custom Instruments defined the Pin Map, including extension methods in TSMSessionManager to create a new CustomInstrumentSessionsBundle object for Custom Instruments. Refer to the updated documentation for details.
        • ICustomInstrument
        • ICustomInstrumentFactory
        • InitializeAndClose
        • CustomInstrumentSessionInformation
        • CustomInstrumentSessionsBundle
      • New support added for Shared Pins defined in the pin map.
        • Any pins mapping the same instrument channel to multiple sites are now handled by the instrument abstractions.
    • Common
      • Exception message improvements: site-pin context now provided when a NISemiconductorTestException is thrown.
        • New class ExceptionCollector added that collects multiple exceptions during driver operations and throws them as a single NISemiconductorTestException, preserving site-pin context.
        • Updated the ParallelExecution class, instrument abstractions classes, and data abstractions classes to make use of the new ExceptionCollector class.
      • New CloneSitePinInfo method added to the SitePinInfo class.
        • Creates a shallow copy of the current SitePinInfo instance and returns it as a new object.
      • New SkipOperations property added to the SitePinInfo class.
        • Returns true if operations should be skipped for the current site-pin pair, based on shared or cascading channel context.
    • Documentation & Examples
      • Various additions to examples and documentation in accordance with latest changes.
        • Reorganized examples into the following categories: Code Snippets, Sequence, Test Programs.
          • Examples from previous versions are categorized as code snippets beginning with this release.
          • Added documentation to explain the different example styles.
        • Added a Test Program style example demonstrating using STL to test a hypothetical Accelerometer DUT.
        • Added a Sequence style example and documentation for merging and unmerging of channels in pin groups.
        • Added a Sequence style example and documentation for Custom and third-party instrument support.
        • Added documentation for exception handling NISemiconductorTestException.
        • Added documentation for shared pin support.
        • Added documentation for best practices to write extension methods.
  • Changed

    • Instrument Abstraction
      • Creating a DAQmxTaskBundle for a running AO task no longer results in an exception being thrown.
      • The DCPower ClearTriggers extension method no longer results in an exception being thrown with PXIe-4147 devices.
    • TestStandSteps
      • LeakageTest now publishes the correct value when the serialOperationEnabled parameter is set to true.
    • Documentation
      • Updated NuGet package documentation with information on how to verify the integrity of a NuGet package.

v25.0.0

11 Apr 09:00
Compare
Choose a tag to compare
  • Added

    • Data Abstraction
      • New ISemiconductorModuleContext extension methods added for sharing data between NI TestStand code modules
        • SetGlobalSiteData<T>(string dataId, SiteData<T> siteData, bool overrideIfExisting = true)
        • SiteData<T> GetGlobalSiteData<T>(string dataId, bool filterForActiveSites = true)
        • SetGlobalPinSiteData<T>(string dataId, PinSiteData<T> pinSiteData, bool overrideIfExisting = true)
        • PinSiteData<T> GetGlobalPinSiteData<T>(string dataId, bool filterForActiveSites = true)
      • New TryGetValue method added to SiteData<T>
        • TryGetValue(int siteNumber, out T value)
          • Return Type: bool
          • Description: Returns true if the data for the given site number exists in the SiteData<T> object.
    • Instrument Abstraction
      • A new overload added for querying Digital Sessions Bundle without specifying any pin. Note that the returned Sessions Bundle associates with all the available DUT pins.
        • TSMSessionManager.Digital()
      • New overloads added for querying DAQmx Sessions Bundle with expected task type
        • TSMSessionManager.DAQmx(string pin, DAQmxTaskType expectedTaskType)
        • TSMSessionManager.DAQmx(string[] pins, DAQmxTaskType expectedTaskType)
        • TSMSessionManager.DAQmx(string[] pins, bool filterPins, DAQmxTaskType expectedTaskType)
      • New Digital.LevelsAndTiming extension methods added to configure and retrieve some time set related information
        • ConfigureTimeSetEdge(string timeSet, TimeSetEdge edge, double time)
        • ConfigureTimeSetEdge(string timeSet, TimeSetEdge edge, SiteData<double> time)
        • ConfigureTimeSetEdge(string timeSet, TimeSetEdge edge, PinSiteData<double> time)
        • PinSiteData<Ivi.Driver.PrecisionTimeSpan> GetTimeSetPeriod(string timeSet)
        • PinSiteData<Ivi.Driver.PrecisionTimeSpan> GetTimeSetEdge(string timeSet, TimeSetEdge driveEdge)
        • PinSiteData<int> GetTimeSetEdgeMultiplier(string timeSet)
        • PinSiteData<DriveFormat> GetTimeSetDriveFormat(string timeSet)
    • NuGet Package
      • NationalInstruments.SemiconductorTestLibrary.25.0.0.nupkg now includes PDB files for NationalInstruments.SemiconductorTestLibrary.Abstractions.dll and NationalInstruments.SemiconductorTestLibrary.Extensions.dll
      • Source Link is now enabled on NationalInstruments.SemiconductorTestLibrary.25.0.0.nupkg which allows developers to view and debug Semiconductor Test Library source code for troubleshooting and understanding how it works. To use this feature it must be enabled within Visual Studio and requires access to the internet. You can learn more about the Source Link feature here.
  • Changed

    • Data Abstraction
      • Math Operations methods now check and report the following error
        • When the underlying type, T, of the SiteData or PinSiteData object being operated on is an array, the TResult must also be an array of equal dimensions as the underlying type, T.
    • Instrument Abstraction
      • For DAQmx, now provides PinSiteData<double> GetSampleClockRate() extension method, and obsoletes double[] GetSampleClockRates() and double GetSampleClockRateDistinct().
      • For DAQmx, the VerifyTaskType utility method is now public to clients.
      • Fix an improper error when CreateDAQmxAOVoltageTasks, CreateDAQmxAOFunctionGenerationTasks, or CreateDAQmxDOTasks is called under the condition that in Pinmap task definition, the channels defined in the Channel List are not listed in ascending order by site number for a specific DUT pin.
      • Fix a DAQmx input tasks read issue that measurements of channels for all sites are returned even though some sites are actually filtered out.
      • Fix DCPower.Measure.FetchMeasurement to include current measurement instead of returning voltage measurement twice.
    • TestStandSteps
      • SetupNIDigitalPatternInstrumentation now provides a new boolean input applySourceWaveformData to control whether to apply the data in waveform files to source waveforms.
    • Documentation & Examples
      • Various changes to examples and documentation to either fix, improve, or update them in accordance with user feedback and latest changes.
        • Fix examples for Constructing PinSiteData/SiteData with Site-agnostic Data
        • Fix inline documentation for ConfigureOutputConnected extension method
        • Minor fix to example code shown in WritingTestCode user guide topic
        • Add missing constructors to provide additional documentation for certain classes
        • Update the Sharing SiteData and PinSiteData Between Code Modules user guide topic to reflect latest changes

v24.5.1

31 Oct 10:11
e945645
Compare
Choose a tag to compare

Added

  • Data Abstraction
    • New Bitwise Math Operations Added PinSiteData<T>
      • ShiftLeft(int count)
        • Return Type: PinSiteData<T>
        • Description: Shifts the value to the left (<<) by the specified bit count, for each element, per site. The count must be positive. This method is supported only when the underlying data type of the PinSiteData<T> object, T, is an integer type.
      • ShiftRight(int count)
        • Return Type: PinSiteData<T>
        • Description: Shifts the value to the right (>>) by the specified bit count, for each element, per site. The count must be positive. This method is supported only when the underlying data type of the PinSiteData<T> object, T, is an integer type.
      • BitwiseAnd(TOther other | SiteData<TOther> other | PinSiteData<TOther> other)
        • Return Type: PinSiteData<T>
        • Description: Performs a bitwise AND (&) operation with either a scalar value, a SiteData object, another PinSiteData object, for each element across each site. This method is supported only when the underlying data type of the PinSiteData<T> object, T, is an integer type. Additionally, the type of the input value, TOther, can be either a scalar or an array, but the underlying type of the array must match that of the PinSiteData<T> object, T, and it cannot be of a greater number of dimension (i.e. TOther cannot be 2D when T is 1D).
      • BitwiseOr(TOther other | SiteData<TOther> other | PinSiteData<TOther> other)
        • Return Type: PinSiteData<T>
        • Description: Performs a bitwise OR (|) operation with either a scalar value, a SiteData object, another PinSiteData object, for each element across each site. This method is supported only when the underlying data type of the PinSiteData<T> object, T, is an integer type. Additionally, the type of the input value, TOther, can be either a scalar or an array, but the underlying type of the array must match that of the PinSiteData<T> object, T, and it cannot be of a greater number of dimension (i.e. TOther cannot be 2D when T is 1D).
      • BitwiseXor(TOther other | SiteData<TOther> other | PinSiteData<TOther> other)
        • Return Type: PinSiteData<T>
        • Description: Performs a bitwise XOR (^) operation with either a scalar value, a SiteData object, another PinSiteData object, for each element across each site. This method is supported only when the underlying data type of the PinSiteData<T> object, T, is an integer type. Additionally, the type of the input value, TOther, can be either a scalar or an array, but the underlying type of the array must match that of the PinSiteData<T> object, T, and it cannot be of a greater number of dimension (i.e. TOther cannot be 2D when T is 1D).
      • BitwiseComplement()
        • Return Type: PinSiteData<T>
        • Description: Gets the bitwise complement (~) of the original PinSiteData<T> object. This method is supported only when the underlying data type of the PinSiteData<T> object, T, is an integer type.
    • New Bitwise Math Operations Added SiteData<T>
      • ShiftLeft(int count)
        • Return Type: SiteData<T>
        • Description: Shifts the value to the left (<<) by the specified bit count, for each element, per site. The count must be positive. This method is supported only when the underlying data type of the SiteData<T> object, T, is an integer type.
      • ShiftRight(int count)
        • Return Type: SiteData<T>
        • Description: Shifts the value to the right (>>) by the specified bit count, for each element, per site. The count must be positive. This method is supported only when the underlying data type of the SiteData<T> object, T, is an integer type.
      • BitwiseAnd(TOther other | SiteData<TOther> other)
        • Return Type: SiteData<T>
        • Description: Performs a bitwise AND (&) operation with either a scalar value or another SiteData object, for each element across each site. This method is supported only when the underlying data type of the SiteData<T> object, T, is an integer type. Additionally, the type of the input value, TOther, can be either a scalar or an array, but the underlying type of the array must match that of the SiteData<T> object, T, and it cannot be of a greater number of dimension (i.e. TOther cannot be 2D when T is 1D).
      • BitwiseOr(TOther other | SiteData<TOther> other)
        • Return Type: SiteData<T>
        • Description: Performs a bitwise OR (|) operation with either a scalar value or another SiteData object, for each element across each site. This method is supported only when the underlying data type of the SiteData<T> object, T, is an integer type. Additionally, the type of the input value, TOther, can be either a scalar or an array, but the underlying type of the array must match that of the SiteData<T> object, T, and it cannot be of a greater number of dimension (i.e. TOther cannot be 2D when T is 1D).
      • BitwiseXor(TOther other | SiteData<TOther> other)
        • Return Type: SiteData<T>
        • Description: Performs a bitwise XOR (^) operation with either a scalar value or another SiteData object, for each element across each site. This method is supported only when the underlying data type of the SiteData<T> object, T, is an integer type. Additionally, the type of the input value, TOther, can be either a scalar or an array, but the underlying type of the array must match that of the SiteData<T> object, T, and it cannot be of a greater number of dimension (i.e. TOther cannot be 2D when T is 1D).
      • BitwiseComplement()
        • Return Type: SiteData<T>
        • Description: Gets the bitwise complement (~) of the original SiteData<T> object. This method is supported only when the underlying data type of the SiteData<T> object, T, is an integer type.
    • New Unary Math Operations added to PinSiteData<T>:
      • Max()
        • Return Type: SiteData<double>
        • Description: Gets the maximum value across pins for each site. Note that the maximum value may be repeated across multiple pins, use the MaxByPin method if this level of detail is required. Alternatively, you can use the MaxBySite method to calculate the maximum value across sites for each pin.
      • MaxByPin()
        • Return Type: Dictionary<int, (double, string[])>
          • Keys represent each site (int)
          • Values represent a tuple of max value (double) across pins, and an array of which pins have that max value (which could be one or more, string[]).
        • Description: Gets the maximum value across pins for each site, and returns both the maximum value and which pin(s) the maximum value was found on for each site. Note that the maximum value may be repeated across multiple pins.
      • MaxBySite()
        • Return Type: Dictionary<string, (double, int[])>
          • Keys represent each pin (string)
          • Values represent a tuple of max value (double) across sites, and an array of which sites have that max value (which could be one or more, int[]).
        • Description: Gets the maximum value across sites for each pin, and returns both the maximum value and which site(s) the maximum value was found on for each pin. Note that the maximum value may be repeated across multiple sites.
      • Min()
        • Return Type: SiteData<double>
        • Description: Gets the minimum value across pins for each site. Note that the minimum value may be repeated across multiple pins, use the MinByPin method if this level of detail is required. Alternatively, you can use the MinBySite method to calculate the minimum value across sites for each pin.
      • MinByPin()
        • Return Type: Dictionary<int, (double, string[])>
          • Keys represent each site (int)
          • Values represent a tuple of max value (double) across pins, and an array of which pins have that max value (which could be one or more, string[]).
        • Description: Gets the minimum value across pins for each site, and returns both the minimum value and which pin(s) the minimum value was found on for each site. Note that the minimum value may be repeated across multiple pins.
      • MinBySite()
        • Return Type: Dictionary<string, (double, int[])>
          • Keys represent each pin (string)
          • Values represent a tuple of max value (double) across sites, and an array of which sites have that max value (which could be one or more, int[]).
        • Description: Gets the minimum value across sites for each pin, and returns both the minimum value and which site(s) the minimum value was found on for each pin. Note that the minimum value may be repeated across multiple sites.
      • Mean()
        • Return Type: SiteData<double>
        • Description: Calculates the mean value across pins for each site, and returns the mean value for each site. Alternatively, you can use the MeanBySite method to calculate the mean value across sites for each pin.
      • MeanBySite()
        • Return Type: Dictionary<string, double>
          • Keys represent each pin (string)
          • Values represent the max value (double) across sites.
        • Description: Calculates the mean value across sites for each pin, and returns the site-to-site mean value for each pin.
    • New Unary Math Operations added to SiteData<T>:
      • Max()
        • Return Type: double
        • Description: Calculates the maximum value across sites.
      • Max(out int[] siteNumbers)
        • Return Type: double
        • Description: Gets the maximum value across sites and additionally passes out an array of which site(s) the maximum value was found. Note that the maximum val...
Read more

v24.5.0

08 Aug 15:07
9b0e746
Compare
Choose a tag to compare

About

This is the initial release of the Semiconductor Test Library. The attached release assets below include the Semiconductor Test Library NuGet package, the standalone output assembly files, and source code.

The Semiconductor Test Library simplifies programming on the NI Semiconductor Test System (STS) and enables users to develop test programs efficiently using C#/.NET.

Features

The Semiconductor Test Library includes the following high-level features:

  • Interfaces and classes—Abstract instrument sessions and encapsulate the necessary pin and site awareness.
  • Pin- and site-aware data types— Simplify instrument configuration and measurement results processing.
  • Extension methods—Abstract common, high-level instrument operations.
  • Parallelization methods—Abstract parallel for loops required to iterate over multiple instrument sessions regardless of how sessions map to pins or sites.
  • Publishing methods—Simplify results publishing and add support for the SiteData and PinSiteData types.
  • Utilities methods—Provide utility methods commonly required for writing test code.
  • TestStand steps—Perform common operations, such as setting up and closing instruments, powering up a DUT, or executing common tests.

Documentation

A complete set of documentation for the Semiconductor Test Library, including features and support instrument types, can be found here: https://ni.github.io/semi-test-library-dotnet

Software Requirements

The Semiconductor Test Library requires STS Software 24.5 or later and .NET Framework 4.8 or later.