Viewing Multisite Data in Code Modules (TSM)
- Updated2025-01-22
- 2 minute(s) read
Viewing Multisite Data in Code Modules (TSM)
Often you cannot directly examine multisite data by probing a LabVIEW wire or viewing the value of a .NET variable because typical TSM test code modules produce data organized in an array indexed by instrument session instead of by site.
To view multisite data in code modules while debugging, use the following TSM VIs or .NET methods in your code module to convert per-instrument data to per-site data:
- Extract Pin Data VI and ExtractPinData .NET method—Extract measurement data for a single pin in the pin query from per-instrument measurement data and return per-site data.
- Per-Instrument to Per-Site Data VI and PerInstrumentToPerSiteData .NET method—Convert per-instrument measurement data to per-site data for all pins in the pin query.
Extracting Per-Site Data for A Single
Pin
LabVIEW |
![]() The code inside the diagram disable structure obtains per-site data for pin A. |
.NET (C#) |
public static void ExampleCodeModule(ISemiconductorModuleContext semiconductorModuleContext, string[] pins) { var pinQueryContext = semiconductorModuleContext.GetNIDigitalPatternSessionsForPpmu(pins, out var digitalSessions, out var pinSetStrings); double[][] measurements = PerformMeasurement(digitalSessions, pinSetStrings); #if DEBUG var siteNumbers = semiconductorModuleContext.SiteNumbers; // Extract per-site data for a single pin for viewing in the debugger. The perSiteMeasurementsForAllPins variable is // an array of measurements. Each element is the measurement for pin A on a specific site. For example, // perSiteMeasurementsForPinA[1] contains the measurement for pin A on the site specified by siteNumbers[1]. var perSiteMeasurementsForPinA = pinQueryContext.ExtractPinData(measurements, "A"); #endif pinQueryContext.Publish(measurements); } |
Extracting Per-Site
Data for All Pins
LabVIEW |
![]() The code inside the diagram disable structure obtains per-site data for or all pins. |
.NET (C#) |
public static void ExampleCodeModule(ISemiconductorModuleContext semiconductorModuleContext, string[] pins) { var pinQueryContext = semiconductorModuleContext.GetNIDigitalPatternSessionsForPpmu(pins, out var digitalSessions, out var pinSetStrings); double[][] measurements = PerformMeasurement(digitalSessions, pinSetStrings); #if DEBUG var siteNumbers = semiconductorModuleContext.SiteNumbers; // Convert per-instrument data to per-site data for viewing in the debugger. The perSiteMeasurementsForAllPins variable is // an array of arrays. Each element is an array of measurements for all pins on a specific site. For example, // perSiteMeasurements[1][0] contains the measurement for the pin specified by pins[0] on the site specified by siteNumbers[1]. var perSiteMeasurementsForAllPins = pinQueryContext.PerInstrumentToPerSiteData(measurements); #endif pinQueryContext.Publish(measurements); } |