Skip to content

Conversation

@gmrsekar
Copy link
Collaborator

@gmrsekar gmrsekar commented Dec 10, 2025

What does this Pull Request accomplish?

This PR contains part one of the code changes for ForceCurrent overloads to support ganging.

Why should this Pull Request be merged?

This PR is part of the implementation of Ganging feature. It contains code changes related to ForceCurrent method overloads. Right now this PR is limited to the following overloads.

1) public static void ForceCurrent(this DCPowerSessionsBundle sessionsBundle, double currentLevel, double? voltageLimit = null, double? currentLevelRange = null, double? voltageLimitRange = null, bool waitForSourceCompletion = false)

2) public static void ForceCurrent(this DCPowerSessionsBundle sessionsBundle, IDictionary<string, double> currentLevels, double? voltageLimit = null, double? currentLevelRange = null, double? voltageLimitRange = null, bool waitForSourceCompletion = false)

3) public static void ForceCurrent(this DCPowerSessionsBundle sessionsBundle, SiteData<double> currentLevels, double? voltageLimit = null, double? currentLevelRange = null, double? voltageLimitRange = null, bool waitForSourceCompletion = false)

4) public static void ForceCurrent(this DCPowerSessionsBundle sessionsBundle, PinSiteData<double> currentLevels, double? voltageLimit = null, double? currentLevelRange = null, double? voltageLimitRange = null, bool waitForSourceCompletion = false)

5)public static void ForceCurrent(this DCPowerSessionsBundle sessionsBundle, DCPowerSourceSettings settings, bool waitForSourceCompletion = false)

For overloads 2 to 5, instead of Force method, ConfigureAllChannelsAndInitiateGangedFollowerChannels and InitiateChannels are called directly inside Do to implement the following workflow.

  • Leader as well as Follower channels are configured at the same time.
  • Follower channels are initiated after configuring is done. They are made to wait for trigger signal from Leader channels.
  • Leader channels are initiated in the end, which will send the trigger to Follower channels so that all the Ganged channels start sourcing at the same time.

For 5th overload, the above workflow is executed when the bundle has at least one ganged pin group present. If not, usual workflow including Force method call is executed.

The 1st overload calls the 5th overload directly.

What testing has been done?

One auto test per modified overload has been added.

  • DifferentSMUDevicesGanged_ForceCurrentWithSymmetricLimit_DividedCurrentForced()
  • DifferentSMUDevicesGanged_ForcePerPinCurrentsWithSymmetricLimit_CorrectCurrentsForced()
  • DifferentSMUDevicesGanged_ForcePerSiteCurrentsWithSymmetricLimit_CorrectCurrentsForced()
  • DifferentSMUDevicesGanged_ForcePerPinPerSiteCurrentsWithSymmetricLimit_CorrectCurrentsForced()
  • DifferentSMUDevicesGanged_ForceCurrentWithSingleSettingsObject_CorrectCurrentForced()

Copy link
Collaborator

@Ashutosh-NI Ashutosh-NI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please implement the changes from first pass review

@gmrsekar gmrsekar marked this pull request as ready for review December 16, 2025 11:43
@gmrsekar
Copy link
Collaborator Author

Please ignore the changes in the following methods as they are part of Update Configure Methods PR and will be reverted once that PR is merged.

  1. ConfigureSourceSettings
  2. ConfigureVoltageSettings
  3. ConfigureCurrentSettings
  4. ConfigureTriggerForGanging

Copy link
Collaborator

@Mattjet27 Mattjet27 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gmrsekar, I've done an initial review. Here is my feedback.

Copy link
Collaborator

@Mattjet27 Mattjet27 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I approve of just the updates to the ForceCurrent methods. This PR should not be merged until #352 has been merged into main and those changes from main get pull into this one.

@gmrsekar gmrsekar requested a review from lornazh January 16, 2026 05:58
@gmrsekar gmrsekar enabled auto-merge (squash) January 22, 2026 06:17
@gmrsekar gmrsekar merged commit 76fc542 into main Jan 22, 2026
2 checks passed
@gmrsekar gmrsekar deleted the users/sekar/UpdateForceCurrentMethodsP1 branch January 22, 2026 06:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants