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