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

Device width an absolute values

parent 5cf3a569
No related branches found
No related tags found
No related merge requests found
%% Cell type:code id:6defdb49-06c2-469d-beb5-bc2e147e3f79 tags:
``` python
%run ADU_version_2.py
```
%% Output
%% Cell type:code id:0f5d7796-eb0f-4a2b-8b1c-f176386be460 tags:
%% Cell type:code id:10fec266-9d1a-451c-9bf3-6b75412eabaa tags:
``` python
```
......
......@@ -73,7 +73,7 @@ def on_start_clicked(b):
#disable all widgets
disable_widgets(all_widgets)
width = sample["width"].value
norm=normalization_factor(width)
Setup(device) #setup the device
#start measurements
......@@ -126,16 +126,16 @@ def on_start_clicked(b):
smu4.update(vname ='VS2',iname = 'IS2',mode = 'COMM',func='CONS')
#execute measurement
Vgs,Vds,Id,gm,Ig=Transfer(smu1,smu2,smu3,smu4,integration_transfer.value,device)
Idmm = np.array(Id)*normalization_factor(width)
Igmm = np.array(Ig)*normalization_factor(width)
gmmm = np.array(gm)*normalization_factor(width)
Vgs,Vds,Idmm,gm,Igmm=Transfer(smu1,smu2,smu3,smu4,integration_transfer.value,norm,device)
#Idmm = np.array(Id)*normalization_factor(width)
#Igmm = np.array(Ig)*normalization_factor(width)
#gmmm = np.array(gm)*normalization_factor(width)
#plot results
clear_output()
plot_transfer(Vgs,Idmm,gmmm,points)
plot_transfer(Vgs,Idmm,gm,points)
#save results
header=['VGS(V)','VDS(V)','IDmm(mA/mm)',"IGmm(mA/mm)",'gm(mS/mm)']
data = {header[0]:Vgs,header[1]:Vds,header[2]:Idmm,header[3]:Igmm,header[4]:gmmm}
header=['VGS(V)','VDS(V)','IDmm(mA/mm)',"IGmm(mA/mm)",'gm(mS/mm)',"ABS(IDmm)(mA/mm)","ABS(IGmm)(mA/mm)"]
data = {header[0]:Vgs,header[1]:Vds,header[2]:Idmm,header[3]:Igmm,header[4]:gm,header[5]:np.abs(Idmm),header[6]:np.abs(Igmm)}
df = pd.DataFrame(data)
#write to file
......@@ -188,16 +188,16 @@ def on_start_clicked(b):
smu3.update(VAR2=var2)
#execute measurement
Vgs,Vds,Id,Ig = Output(smu1,smu2,smu3,smu4,integration_output.value,device)
Idmm = np.array(Id)*normalization_factor(width)
Igmm = np.array(Ig)*normalization_factor(width)
Vgs,Vds,Idmm,Igmm = Output(smu1,smu2,smu3,smu4,integration_output.value,norm,device)
#Idmm = np.array(Id)*normalization_factor(width)
#Igmm = np.array(Ig)*normalization_factor(width)
#plot results
clear_output()
plot_output(Vds,Idmm,Igmm,points)
#save results
header=['VGS(V)','VDS(V)','IDmm(mA/mm)',"IGmm(mA/mm)"]
data = {header[0]:Vgs,header[1]:Vds,header[2]:Idmm,header[3]:Igmm}
header=['VGS(V)','VDS(V)','IDmm(mA/mm)',"IGmm(mA/mm)","ABS(IDmm)(mA/mm)","ABS(IGmm)(mA/mm)"]
data = {header[0]:Vgs,header[1]:Vds,header[2]:Idmm,header[3]:Igmm,header[4]:np.abs(Idmm),header[5]:np.abs(Igmm)}
df = pd.DataFrame(data)
#write to file
......@@ -232,9 +232,9 @@ def on_start_clicked(b):
smu3.update(VAR1=var1)
#execute measurement
Vgs,Ig,ABSIg=Gatediode(smu1,smu3,smu4,integration_gatediode.value,device)
Igmm = np.array(Ig)*normalization_factor(width)
ABSIgmm = np.array(ABSIg)*normalization_factor(width)
Vgs,Igmm,ABSIgmm=Gatediode(smu1,smu3,smu4,integration_gatediode.value,norm,device)
#Igmm = np.array(Ig)*normalization_factor(width)
#ABSIgmm = np.array(ABSIg)*normalization_factor(width)
clear_output()
plot_gatediode(Vgs,Igmm)
......
......@@ -100,11 +100,12 @@ def information_box_new():
for i in range(3):
for j in range(2):
if i ==2 and j == 1:
information_grid[i,j]=widgets.Dropdown(options=['mA/mm','µA/µm'],value='mA/mm',layout=Layout(height=height, width=width))#mind the gap
pass
#information_grid[i,j]=widgets.Dropdown(options=['mA/mm','µA/µm'],value='mA/mm',layout=Layout(height=height, width=width))#mind the gap
elif i == 2 and j == 0:
information_grid[i,j]=widgets.BoundedFloatText(
value=100,
min=sys.float_info.min,
min=1e-3,
max=sys.float_info.max,step=1,
layout=Layout(height=height, width=width)
)
......@@ -116,11 +117,14 @@ def information_box_new():
information_grid[2,0].description = "Device Width(µm):"
information_grid[0,1].description = "Field(XYY):"
information_grid[1,1].description = "Device:"
information_grid[2,1].description = "Normalization:"
#information_grid[2,1].description = "Normalization:"
for i in range(3):
for j in range(2):
try:
information_grid[i,j].style = style
except:
pass
display(sample_information)
display(information_grid)
......@@ -131,8 +135,8 @@ def information_box_new():
'sample' : information_grid[1,0],
'field': information_grid[0,1],
'device':information_grid[1,1],
'width': information_grid[2,0],
'normalization': information_grid[2,1]
'width': information_grid[2,0]
#'normalization': information_grid[2,1]
}
return information
......@@ -71,7 +71,7 @@ def Test(device):
device.autoscaling()
def Transfer(smu1,smu2,smu3,smu4,integration,device):
def Transfer(smu1,smu2,smu3,smu4,integration,norm,device):
device.del_user_functions()
#set all the smus
device.setup_smu(1,smu1)
......@@ -83,15 +83,15 @@ def Transfer(smu1,smu2,smu3,smu4,integration,device):
device.setup_var2(smu2['VAR2'])
device.integration_time(integration)
device.user_function('Gm','S','DIFF(ID,VGS)')
#device.user_function('Gm','S','DIFF(ID,VGS)')
#device.user_function('Gm','mS/mm','1E4*DIFF(ID,VGS)')
#device.user_function('IDmm','mA/mm','1E4*ID')
#device.user_function('IGmm','mA/mm','1E4*IG')
device.user_function('Gm','mS/mm',f'DIFF(ID,VGS)*{norm}')
device.user_function('IDmm','mA/mm',f'ID*{norm}')
device.user_function('IGmm','mA/mm',f'IG*{norm}')
#display
device.display_variable('X','VGS')
device.display_variable('Y1','ID')
device.display_variable('Y1','IDmm')
device.display_variable('Y2','Gm')
if smu3['VAR1']['start']<smu3['VAR1']['stop']:
......@@ -103,8 +103,8 @@ def Transfer(smu1,smu2,smu3,smu4,integration,device):
device.display_variable_min_max('X','MIN',smu3['VAR1']['stop'])
if smu2['VAR2']['comp']!=0:
device.display_variable_min_max('Y1','MIN',-abs(smu2['VAR2']['comp']))
device.display_variable_min_max('Y1','MAX',abs(smu2['VAR2']['comp']))
device.display_variable_min_max('Y1','MIN',-abs(smu2['VAR2']['comp'])*norm)
device.display_variable_min_max('Y1','MAX',abs(smu2['VAR2']['comp'])*norm)
device.single_measurement()
while device.operation_completed()==False:
......@@ -113,15 +113,15 @@ def Transfer(smu1,smu2,smu3,smu4,integration,device):
device.autoscaling()
Vgs=device.return_values('VGS')
Id=device.return_values('ID')
Idmm=device.return_values('IDmm')
gm=device.return_values('Gm')
Vds= device.return_values('VDS')
Ig = device.return_values('IG')
Igmm = device.return_values('IGmm')
return Vgs,Vds,Id,gm,Ig
return Vgs,Vds,Idmm,gm,Igmm
def Output(smu1,smu2,smu3,smu4,integration,device):
def Output(smu1,smu2,smu3,smu4,integration,norm,device):
device.del_user_functions()
#setup all smus
device.setup_smu(1,smu1)
......@@ -134,13 +134,13 @@ def Output(smu1,smu2,smu3,smu4,integration,device):
device.integration_time(integration)
#device.user_function('IDmm','mA/mm','1E4*ID')
#device.user_function('IGmm','mA/mm','1E4*IG')
device.user_function('IDmm','mA/mm',f'ID*{norm}')
device.user_function('IGmm','mA/mm',f'IG*{norm}')
#display
device.display_variable('X','VDS')
device.display_variable('Y1','ID')
device.display_variable('Y2','IG')
device.display_variable('Y1','IDmm')
device.display_variable('Y2','IGmm')
if smu2['VAR1']['start']<smu2['VAR1']['stop']:
device.display_variable_min_max('X','MIN',smu2['VAR1']['start'])
......@@ -151,12 +151,12 @@ def Output(smu1,smu2,smu3,smu4,integration,device):
device.display_variable_min_max('X','MIN',smu2['VAR1']['stop'])
if smu2['VAR1']['comp']!=0:
device.display_variable_min_max('Y1','MIN',-abs(smu2['VAR1']['comp']))
device.display_variable_min_max('Y1','MAX',abs(smu2['VAR1']['comp']))
device.display_variable_min_max('Y1','MIN',-abs(smu2['VAR1']['comp'])*norm)
device.display_variable_min_max('Y1','MAX',abs(smu2['VAR1']['comp'])*norm)
if smu3['VAR2']['comp']!=0:
device.display_variable_min_max('Y2','MIN',-abs(smu3['VAR2']['comp']))
device.display_variable_min_max('Y2','MAX',abs(smu3['VAR2']['comp']))
device.display_variable_min_max('Y2','MIN',-abs(smu3['VAR2']['comp'])*norm)
device.display_variable_min_max('Y2','MAX',abs(smu3['VAR2']['comp'])*norm)
device.single_measurement()
while device.operation_completed()==False:
......@@ -165,13 +165,13 @@ def Output(smu1,smu2,smu3,smu4,integration,device):
device.autoscaling()
Vds=device.return_values('VDS')
Id=device.return_values('ID')
Ig=device.return_values('IG')
Idmm=device.return_values('IDmm')
Igmm=device.return_values('IGmm')
Vgs=device.return_values('VGS')
return Vgs,Vds,Id,Ig
return Vgs,Vds,Idmm,Igmm
def Gatediode(smu1,smu3,smu4,integration,device):
def Gatediode(smu1,smu3,smu4,integration,norm,device):
device.del_user_functions()
#setup all smus
......@@ -184,13 +184,13 @@ def Gatediode(smu1,smu3,smu4,integration,device):
device.integration_time(integration)
#define user functions
#device.user_function('IGmm','mA/mm','1E4*IG')
device.user_function('ABSIG','A','ABS(IG)')
device.user_function('IGmm','mA/mm',f'IG*{norm}')
device.user_function('ABSIGm','mA/mm','ABS(IGmm)')
#display
device.display_variable('X','VGS')
device.display_variable('Y1','IG')
device.display_variable('Y2','ABSIG')
device.display_variable('Y1','IGmm')
device.display_variable('Y2','ABSIGm')
if smu3['VAR1']['start']<smu3['VAR1']['stop']:
device.display_variable_min_max('X','MIN',smu3['VAR1']['start'])
......@@ -201,12 +201,12 @@ def Gatediode(smu1,smu3,smu4,integration,device):
device.display_variable_min_max('X','MIN',smu3['VAR1']['stop'])
if smu3['VAR1']['comp'] !=0:
device.display_variable_min_max('Y1','MIN',-abs(smu3['VAR1']['comp']))
device.display_variable_min_max('Y1','MAX',abs(smu3['VAR1']['comp']))
device.display_variable_min_max('Y1','MIN',-abs(smu3['VAR1']['comp'])*norm)
device.display_variable_min_max('Y1','MAX',abs(smu3['VAR1']['comp'])*norm)
device.display_variable_min_max('Y2','MIN',0)
device.display_variable_min_max('Y1','MAX',abs(smu3['VAR1']['comp']))
device.display_variable_min_max('Y1','MAX',abs(smu3['VAR1']['comp'])*norm)
device.axis_scale('Y2','LOG')
......@@ -217,10 +217,10 @@ def Gatediode(smu1,smu3,smu4,integration,device):
device.autoscaling()
Vgs=device.return_values('VGS')
Ig=device.return_values('IG')
ABSIg=device.return_values('ABSIG')
Igmm=device.return_values('IGmm')
ABSIGm=device.return_values('ABSIGm')
return Vgs,Ig,ABSIg
return Vgs,Igmm,ABSIGm
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment