From cfbc3197f722a42d321bace50feb403ffa296446 Mon Sep 17 00:00:00 2001
From: unknown <asoalexandros@gmail.com>
Date: Fri, 4 Apr 2025 16:00:42 +0200
Subject: [PATCH] Migration of stress and sampling in the new tool class

---
 hp4155/stress+sampling/lib/measurements.py | 156 +++++++++++++--------
 1 file changed, 98 insertions(+), 58 deletions(-)

diff --git a/hp4155/stress+sampling/lib/measurements.py b/hp4155/stress+sampling/lib/measurements.py
index 7623a5c..a0a8f72 100644
--- a/hp4155/stress+sampling/lib/measurements.py
+++ b/hp4155/stress+sampling/lib/measurements.py
@@ -3,7 +3,7 @@
 #import sys
 #sys.path.insert(0, '..') #append parent directory
 
-import module
+import hp4155a 
 
 def setup(device):
     device.reset()
@@ -15,55 +15,79 @@ def setup(device):
     device.user_function('ABSIGm','mA/mm','ABS(IGmm)')
     device.user_function('ABSIDm','mA/mm','ABS(IDmm)')
 
-    #disable vmus and vsus
-    device.disable_vsu(1)
-    device.disable_vsu(2)
-    device.disable_vmu(1)
-    device.disable_vmu(2)
+    #disable vmus and vsus for sterss and sampling
+    device.stress_disable_not_smu() #stress
+    device.disable_not_smu() #sampling
 
 
 def sampling(VDS,VGS,VDS_comp,VGS_comp,sampling_mode,number_of_points,integration_time,initial_interval,hold_time,filter_status,device):
     device.measurement_mode('SAMP')
-            
-    #set the mode of smus for sampling
-    device.smu_mode_meas(1,'COMM')
-    device.smu_mode_meas(2,'V')
-    device.smu_mode_meas(3,'V')
-    device.smu_mode_meas(4,'COMM')
-
-    #set the names of the smus
-    device.smu_vname(1,'VS1')
-    device.smu_iname(1,'IS1')
-    device.smu_vname(2,'VDS')
-    device.smu_iname(2,'ID')
-    device.smu_vname(3,'VGS')
-    device.smu_iname(3,'IG')
-    device.smu_vname(4,'VS2')
-    device.smu_iname(4,'IS2')
 
+    smu1 = {
+        "vname": "VS1",
+        "iname": "IS1",
+        "mode": "COMM",
+        "func": "CONS"
+    }
+
+    smu2 = {
+        "vname": "VDS",
+        "iname": "ID",
+        "mode": "V",
+        "func": "CONS",
+        "value": VDS,
+        "comp": VDS_comp
+        
+    }
+
+    smu3 = {
+        "vname" : "VGS",
+        "iname" : "IG",
+        "mode" : "V",
+        "func" : "CONS",
+        "value": VGS,
+        "comp": VGS_comp
+    }
+
+     smu4 = {
+        "vname": "VS2",
+        "iname": "IS2",
+        "mode": "COMM",
+        "func": "CONS"
+    }
+            
+    #setup of smus for sampling
+    device.setup_smu(1,smu1)
+    device.setup_smu(2,smu2)
+    device.setup_smu(3,smu3)
+    device.setup_smu(4,smu4)
     
+
     #set the constant value of smus and compilance
-    device.constant_smu_sampling(2,VDS)
-    device.constant_smu_sampling(3,VGS)
-    device.constant_smu_comp(2,VDS_comp)
-    device.constant_smu_comp(3,VGS_comp)
-            
+    device.setup_smu_sampling(2,smu2)
+    device.setup_smu_sampling(3,smu3)
+   
     #set sampling parameters
-    device.sampling_mode(sampling_mode)
+    parameters = device.sampling_parameters_dict()
+    parameters['mode'] = sampling_mode
 
     #the maximum number of samples for logarithmic mode is 11 decades +1 although it is allowed 10001 samples
     if sampling_mode == "L10" and number_of_points>111:
-        device.number_of_points(111)
+        parameters['points'] = 111
     elif sampling_mode == "L25" and number_of_points>276:
-        device.number_of_points(276)
+        parameters['points'] = 276
     elif sampling_mode=="L50" and number_of_points>551:
-        device.number_of_points(551)
+        parameters['points'] = 551
     else:   
-        device.number_of_points(number_of_points)
+        parameters["points"] = number_of_points
+    
+
+    parameters["interval"] = initial_interval
+    parameters["hold"] = hold_time
+    parameters["filter"] = filter_status
+
+    device.setup_sampling(parameters)
     device.integration_time(integration_time)
-    device.initial_interval(initial_interval)
-    device.delay_time(hold_time)
-    device.filter_status(filter_status)
 
     #display variables
     device.display_variable('X','t')
@@ -76,34 +100,50 @@ def sampling(VDS,VGS,VDS_comp,VGS_comp,sampling_mode,number_of_points,integratio
         pass
     device.autoscaling()
 
-    time = device.return_data('t')
-    #ABSIGm = device.return_data('ABSIGm')
-    #ABSIDm = device.return_data('ABSIDm')
-
-    #we need this function for the dataframe at the txt.
-    IDmm = device.return_data('IDmm')
-    IGmm = device.return_data('IGmm')
+    time = device.return_values('t')
+    IDmm = device.return_values('IDmm')
+    IGmm = device.return_values('IGmm')
     return time,IDmm,IGmm
 
 def stress(VDS,VGS,duration,comp,device):
     device.stress_page() #go to stress page
-    #define smus to numbers in mode and values for stress 
-
-    #mode
-    device.smu_mode(1,'COMM')
-    device.smu_mode(2,'V')
-    device.comp_stress(2,comp)
-    device.smu_mode(3,'V')
-    device.comp_stress(3,comp)
-    device.smu_mode(4,'COMM')
-    device.sync(4,0)
-
-    #names 
-    device.str_smu_name(2,'VD')
-    device.str_smu_name(3,'VG')
+    #define smus to numbers in mode and values for stress
+
+    smu1 = {
+        "mode":"COMM",
+        "func":"NSYNC",
+        "name": "VS1"
+    }
+
+    smu2 = {
+        "mode":"COMM",
+        "func":"SYNC",
+        "name": "VD",
+        "value": VDS,
+        "comp": comp
+    }
+
+    smu3 = {
+        "mode":"COMM",
+        "func":"SYNC",
+        "name": "VG",
+        "value": VGS,
+        "comp": comp
+    }
+
+    smu4 = {
+        "mode":"COMM",
+        "func":"NSYNC",
+        "name": "VS2"
+    }
+
+    device.smu_stress(1,smu1)
+    device.smu_stress(2,smu2)
+    device.smu_stress(3,smu3)
+    device.smu_stress(4,smu4)
     #values
-    device.smu_value(2,VDS)
-    device.smu_value(3,VGS)
+    device.setup_smu_stress(2,smu2)
+    device.setup_smu_stress(3,smu3)
     #time
     device.stress_time(duration)
 
-- 
GitLab