Skip to content
Snippets Groups Projects
Commit cfbc3197 authored by Alexandros Asonitis's avatar Alexandros Asonitis
Browse files

Migration of stress and sampling in the new tool class

parent 48619fe6
No related branches found
No related tags found
No related merge requests found
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
#import sys #import sys
#sys.path.insert(0, '..') #append parent directory #sys.path.insert(0, '..') #append parent directory
import module import hp4155a
def setup(device): def setup(device):
device.reset() device.reset()
...@@ -15,55 +15,79 @@ def setup(device): ...@@ -15,55 +15,79 @@ def setup(device):
device.user_function('ABSIGm','mA/mm','ABS(IGmm)') device.user_function('ABSIGm','mA/mm','ABS(IGmm)')
device.user_function('ABSIDm','mA/mm','ABS(IDmm)') device.user_function('ABSIDm','mA/mm','ABS(IDmm)')
#disable vmus and vsus #disable vmus and vsus for sterss and sampling
device.disable_vsu(1) device.stress_disable_not_smu() #stress
device.disable_vsu(2) device.disable_not_smu() #sampling
device.disable_vmu(1)
device.disable_vmu(2)
def sampling(VDS,VGS,VDS_comp,VGS_comp,sampling_mode,number_of_points,integration_time,initial_interval,hold_time,filter_status,device): 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') 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 #set the constant value of smus and compilance
device.constant_smu_sampling(2,VDS) device.setup_smu_sampling(2,smu2)
device.constant_smu_sampling(3,VGS) device.setup_smu_sampling(3,smu3)
device.constant_smu_comp(2,VDS_comp)
device.constant_smu_comp(3,VGS_comp)
#set sampling parameters #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 #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: 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: 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: elif sampling_mode=="L50" and number_of_points>551:
device.number_of_points(551) parameters['points'] = 551
else: 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.integration_time(integration_time)
device.initial_interval(initial_interval)
device.delay_time(hold_time)
device.filter_status(filter_status)
#display variables #display variables
device.display_variable('X','t') device.display_variable('X','t')
...@@ -76,34 +100,50 @@ def sampling(VDS,VGS,VDS_comp,VGS_comp,sampling_mode,number_of_points,integratio ...@@ -76,34 +100,50 @@ def sampling(VDS,VGS,VDS_comp,VGS_comp,sampling_mode,number_of_points,integratio
pass pass
device.autoscaling() device.autoscaling()
time = device.return_data('t') time = device.return_values('t')
#ABSIGm = device.return_data('ABSIGm') IDmm = device.return_values('IDmm')
#ABSIDm = device.return_data('ABSIDm') IGmm = device.return_values('IGmm')
#we need this function for the dataframe at the txt.
IDmm = device.return_data('IDmm')
IGmm = device.return_data('IGmm')
return time,IDmm,IGmm return time,IDmm,IGmm
def stress(VDS,VGS,duration,comp,device): def stress(VDS,VGS,duration,comp,device):
device.stress_page() #go to stress page device.stress_page() #go to stress page
#define smus to numbers in mode and values for stress #define smus to numbers in mode and values for stress
#mode smu1 = {
device.smu_mode(1,'COMM') "mode":"COMM",
device.smu_mode(2,'V') "func":"NSYNC",
device.comp_stress(2,comp) "name": "VS1"
device.smu_mode(3,'V') }
device.comp_stress(3,comp)
device.smu_mode(4,'COMM') smu2 = {
device.sync(4,0) "mode":"COMM",
"func":"SYNC",
#names "name": "VD",
device.str_smu_name(2,'VD') "value": VDS,
device.str_smu_name(3,'VG') "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 #values
device.smu_value(2,VDS) device.setup_smu_stress(2,smu2)
device.smu_value(3,VGS) device.setup_smu_stress(3,smu3)
#time #time
device.stress_time(duration) device.stress_time(duration)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment