Releases: ni/semi-test-library-dotnet
Releases · ni/semi-test-library-dotnet
v25.5.0
-
Added
- Instrument Abstraction
- New
MergePinGroup
andUnmergePinGroup
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 newCustomInstrumentSessionsBundle
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.
- New
- 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 singleNISemiconductorTestException
, preserving site-pin context. - Updated the
ParallelExecution
class, instrument abstractions classes, and data abstractions classes to make use of the newExceptionCollector
class.
- New class
- New
CloneSitePinInfo
method added to theSitePinInfo
class.- Creates a shallow copy of the current
SitePinInfo
instance and returns it as a new object.
- Creates a shallow copy of the current
- New
SkipOperations
property added to theSitePinInfo
class.- Returns
true
if operations should be skipped for the current site-pin pair, based on shared or cascading channel context.
- Returns
- Exception message improvements: site-pin context now provided when a
- 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.
- Reorganized examples into the following categories: Code Snippets, Sequence, Test Programs.
- Various additions to examples and documentation in accordance with latest changes.
- Instrument Abstraction
-
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.
- Creating a
- TestStandSteps
- LeakageTest now publishes the correct value when the
serialOperationEnabled
parameter is set totrue
.
- LeakageTest now publishes the correct value when the
- Documentation
- Updated NuGet package documentation with information on how to verify the integrity of a NuGet package.
- Instrument Abstraction
v25.0.0
-
Added
- Data Abstraction
- New
ISemiconductorModuleContext
extension methods added for sharing data between NI TestStand code modulesSetGlobalSiteData<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 toSiteData<T>
TryGetValue(int siteNumber, out T value)
- Return Type:
bool
- Description: Returns
true
if the data for the given site number exists in theSiteData<T>
object.
- Return Type:
- New
- 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 informationConfigureTimeSetEdge(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)
- 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.
- NuGet Package
NationalInstruments.SemiconductorTestLibrary.25.0.0.nupkg
now includes PDB files forNationalInstruments.SemiconductorTestLibrary.Abstractions.dll
andNationalInstruments.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.
- Data Abstraction
-
Changed
- Data Abstraction
- Math Operations methods now check and report the following error
- When the underlying type,
T
, of theSiteData
orPinSiteData
object being operated on is an array, theTResult
must also be an array of equal dimensions as the underlying type,T
.
- When the underlying type,
- Math Operations methods now check and report the following error
- Instrument Abstraction
- For DAQmx, now provides
PinSiteData<double> GetSampleClockRate()
extension method, and obsoletesdouble[] GetSampleClockRates()
anddouble GetSampleClockRateDistinct()
. - For DAQmx, the
VerifyTaskType
utility method is now public to clients. - Fix an improper error when
CreateDAQmxAOVoltageTasks
,CreateDAQmxAOFunctionGenerationTasks
, orCreateDAQmxDOTasks
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.
- For DAQmx, now provides
- TestStandSteps
SetupNIDigitalPatternInstrumentation
now provides a new boolean inputapplySourceWaveformData
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
- Various changes to examples and documentation to either fix, improve, or update them in accordance with user feedback and latest changes.
- Data Abstraction
v24.5.1
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 thePinSiteData<T>
object,T
, is an integer type.
- Return 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 thePinSiteData<T>
object,T
, is an integer type.
- Return 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 thePinSiteData<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 thePinSiteData<T>
object,T
, and it cannot be of a greater number of dimension (i.e.TOther
cannot be 2D whenT
is 1D).
- Return Type:
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 thePinSiteData<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 thePinSiteData<T>
object,T
, and it cannot be of a greater number of dimension (i.e.TOther
cannot be 2D whenT
is 1D).
- Return Type:
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 thePinSiteData<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 thePinSiteData<T>
object,T
, and it cannot be of a greater number of dimension (i.e.TOther
cannot be 2D whenT
is 1D).
- Return Type:
BitwiseComplement()
- Return Type:
PinSiteData<T>
- Description: Gets the bitwise complement (
~
) of the originalPinSiteData<T>
object. This method is supported only when the underlying data type of thePinSiteData<T>
object,T
, is an integer type.
- Return 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 theSiteData<T>
object,T
, is an integer type.
- Return 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 theSiteData<T>
object,T
, is an integer type.
- Return 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 theSiteData<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 theSiteData<T>
object,T
, and it cannot be of a greater number of dimension (i.e.TOther
cannot be 2D whenT
is 1D).
- Return Type:
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 theSiteData<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 theSiteData<T>
object,T
, and it cannot be of a greater number of dimension (i.e.TOther
cannot be 2D whenT
is 1D).
- Return Type:
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 theSiteData<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 theSiteData<T>
object,T
, and it cannot be of a greater number of dimension (i.e.TOther
cannot be 2D whenT
is 1D).
- Return Type:
BitwiseComplement()
- Return Type:
SiteData<T>
- Description: Gets the bitwise complement (
~
) of the originalSiteData<T>
object. This method is supported only when the underlying data type of theSiteData<T>
object,T
, is an integer type.
- Return 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 theMaxBySite
method to calculate the maximum value across sites for each pin.
- Return Type:
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[]
).
- Keys represent each site (
- 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.
- Return Type:
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[]
).
- Keys represent each pin (
- 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.
- Return Type:
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 theMinBySite
method to calculate the minimum value across sites for each pin.
- Return Type:
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[]
).
- Keys represent each site (
- 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.
- Return Type:
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[]
).
- Keys represent each pin (
- 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.
- Return Type:
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.
- Return Type:
MeanBySite()
- Return Type:
Dictionary<string, double>
- Keys represent each pin (
string
) - Values represent the max value (
double
) across sites.
- Keys represent each pin (
- Description: Calculates the mean value across sites for each pin, and returns the site-to-site mean value for each pin.
- Return Type:
- New Unary Math Operations added to
SiteData<T>
:Max()
- Return Type:
double
- Description: Calculates the maximum value across sites.
- Return Type:
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...
- Return Type:
- New Bitwise Math Operations Added
v24.5.0
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.