Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
labcode
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Model registry
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
CST
labcode
Commits
c8b15fb9
Commit
c8b15fb9
authored
10 months ago
by
Alexandros Asonitis
Browse files
Options
Downloads
Patches
Plain Diff
Abillity to save the initial plots
parent
f9eeb0c8
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
hp4155/ADU for double gate devices-test/double_gate_ADU.py
+9
-9
9 additions, 9 deletions
hp4155/ADU for double gate devices-test/double_gate_ADU.py
hp4155/ADU for double gate devices-test/lib/measurements.py
+39
-8
39 additions, 8 deletions
hp4155/ADU for double gate devices-test/lib/measurements.py
with
48 additions
and
17 deletions
hp4155/ADU for double gate devices-test/double_gate_ADU.py
+
9
−
9
View file @
c8b15fb9
...
...
@@ -111,7 +111,7 @@ def on_start_clicked(b):
enable_widgets
(
all_widgets
)
return
save_plot
=
sample
[
'
save_fig
'
].
value
#reset replotting columns
replot_transfer
[
'
x_variable
'
].
options
=
[]
replot_transfer
[
'
y_variable
'
].
options
=
[]
...
...
@@ -125,19 +125,19 @@ def on_start_clicked(b):
if
transfer_check
.
value
==
True
:
match
transfer_gates
.
value
:
case
'
VTG
'
if
check_values
(
Vtg_transfer
,
'
primary
'
)
and
check_values
(
Vds_transfer
,
'
secondary
'
):
df_transfer
,
points_transfer
=
Transfer_VTG
(
Vtg_transfer
,
Vds_transfer
,
integration_transfer
.
value
,
sample
,
device
)
df_transfer
,
points_transfer
=
Transfer_VTG
(
Vtg_transfer
,
Vds_transfer
,
integration_transfer
.
value
,
sample
,
device
,
smu_map
,
save_plot
)
replot_transfer
[
'
x_variable
'
].
options
=
df_transfer
.
columns
.
tolist
()
replot_transfer
[
'
y_variable
'
].
options
=
df_transfer
.
columns
.
tolist
()
replot_transfer
[
'
x_variable
'
].
value
=
'
VTG/V
'
replot_transfer
[
'
y_variable
'
].
value
=
'
IDmm/uA/um
'
case
'
VBG
'
if
check_values
(
Vbg_transfer
,
'
primary
'
)
and
check_values
(
Vds_transfer
,
'
secondary
'
):
df_transfer
,
points_transfer
=
Transfer_VBG
(
Vbg_transfer
,
Vds_transfer
,
integration_transfer
.
value
,
sample
,
device
)
df_transfer
,
points_transfer
=
Transfer_VBG
(
Vbg_transfer
,
Vds_transfer
,
integration_transfer
.
value
,
sample
,
device
,
smu_map
,
save_plot
)
replot_transfer
[
'
x_variable
'
].
options
=
df_transfer
.
columns
.
tolist
()
replot_transfer
[
'
y_variable
'
].
options
=
df_transfer
.
columns
.
tolist
()
replot_transfer
[
'
x_variable
'
].
value
=
'
VBG/V
'
replot_transfer
[
'
y_variable
'
].
value
=
'
IDmm/uA/um
'
case
'
BOTH
'
if
check_values
(
Vbg_transfer
,
'
synchronous
'
)
and
check_values
(
Vds_transfer
,
'
secondary
'
)
and
check_values
(
Vtg_transfer
,
'
primary
'
):
df_transfer
,
points_transfer
=
Transfer_BOTH
(
Vtg_transfer
,
Vbg_transfer
,
Vds_transfer
,
integration_transfer
.
value
,
sample
,
device
)
df_transfer
,
points_transfer
=
Transfer_BOTH
(
Vtg_transfer
,
Vbg_transfer
,
Vds_transfer
,
integration_transfer
.
value
,
sample
,
device
,
smu_map
,
save_plot
)
replot_transfer
[
'
x_variable
'
].
options
=
df_transfer
.
columns
.
tolist
()
replot_transfer
[
'
y_variable
'
].
options
=
df_transfer
.
columns
.
tolist
()
replot_transfer
[
'
x_variable
'
].
value
=
'
VBG/V
'
...
...
@@ -150,19 +150,19 @@ def on_start_clicked(b):
if
output_check
.
value
==
True
:
match
output_gates
.
value
:
case
'
VTG
'
if
check_values
(
Vds_output
,
'
primary
'
)
and
check_values
(
Vtg_output
,
'
secondary
'
):
df_output
,
points_output
=
Output_VTG
(
Vds_output
,
Vtg_output
,
integration_output
.
value
,
sample
,
device
)
df_output
,
points_output
=
Output_VTG
(
Vds_output
,
Vtg_output
,
integration_output
.
value
,
sample
,
device
,
smu_map
,
save_plot
)
replot_output
[
'
x_variable
'
].
options
=
df_output
.
columns
.
tolist
()
replot_output
[
'
y_variable
'
].
options
=
df_output
.
columns
.
tolist
()
replot_output
[
'
x_variable
'
].
value
=
'
VDS/V
'
replot_output
[
'
y_variable
'
].
value
=
'
IDmm/uA/um
'
case
'
VBG
'
if
check_values
(
Vds_output
,
'
primary
'
)
and
check_values
(
Vbg_output
,
'
secondary
'
):
df_output
,
points_output
=
Output_VBG
(
Vds_output
,
Vbg_output
,
integration_output
.
value
,
sample
,
device
)
df_output
,
points_output
=
Output_VBG
(
Vds_output
,
Vbg_output
,
integration_output
.
value
,
sample
,
device
,
smu_map
,
save_plot
)
replot_output
[
'
x_variable
'
].
options
=
df_output
.
columns
.
tolist
()
replot_output
[
'
y_variable
'
].
options
=
df_output
.
columns
.
tolist
()
replot_output
[
'
x_variable
'
].
value
=
'
VDS/V
'
replot_output
[
'
y_variable
'
].
value
=
'
IDmm/uA/um
'
case
'
BOTH
'
if
check_values
(
Vds_output
,
'
primary
'
)
and
check_values
(
Vtg_output
,
'
secondary
'
)
and
check_values
(
Vbg_output
,
'
secondary
'
):
df_output
,
points_output
=
Output_BOTH
(
Vds_output
,
Vtg_output
,
Vbg_output
,
integration_output
.
value
,
sample
,
device
)
df_output
,
points_output
=
Output_BOTH
(
Vds_output
,
Vtg_output
,
Vbg_output
,
integration_output
.
value
,
sample
,
device
,
smu_map
,
save_plot
)
replot_output
[
'
x_variable
'
].
options
=
df_output
.
columns
.
tolist
()
replot_output
[
'
y_variable
'
].
options
=
df_output
.
columns
.
tolist
()
replot_output
[
'
x_variable
'
].
value
=
'
VDS/V
'
...
...
@@ -176,13 +176,13 @@ def on_start_clicked(b):
if
gatediode_check
.
value
==
True
:
match
terminal
.
value
:
case
'
VTG
'
if
check_values
(
Vg_gatediode
,
'
primary
'
):
df_gatediode
=
Gatediode_VTG
(
Vg_gatediode
,
integration_gatediode
.
value
,
sample
,
device
)
df_gatediode
=
Gatediode_VTG
(
Vg_gatediode
,
integration_gatediode
.
value
,
sample
,
device
,
smu_map
,
save_plot
)
replot_gatediode
[
'
x_variable
'
].
options
=
df_gatediode
.
columns
.
tolist
()
replot_gatediode
[
'
y_variable
'
].
options
=
df_gatediode
.
columns
.
tolist
()
replot_gatediode
[
'
x_variable
'
].
value
=
'
VTG/V
'
replot_gatediode
[
'
y_variable
'
].
value
=
'
ITGmm/uA/um
'
case
'
VBG
'
if
check_values
(
Vg_gatediode
,
'
primary
'
):
df_gatediode
=
Gatediode_VBG
(
Vg_gatediode
,
integration_gatediode
.
value
,
sample
,
device
)
df_gatediode
=
Gatediode_VBG
(
Vg_gatediode
,
integration_gatediode
.
value
,
sample
,
device
,
smu_map
,
save_plot
)
replot_gatediode
[
'
x_variable
'
].
options
=
df_gatediode
.
columns
.
tolist
()
replot_gatediode
[
'
y_variable
'
].
options
=
df_gatediode
.
columns
.
tolist
()
replot_gatediode
[
'
x_variable
'
].
value
=
'
VBG/V
'
...
...
This diff is collapsed.
Click to expand it.
hp4155/ADU for double gate devices-test/lib/measurements.py
+
39
−
8
View file @
c8b15fb9
...
...
@@ -9,6 +9,8 @@ import hp4155a
from
help
import
*
from
decimal
import
Decimal
import
os
def
Setup
(
device
):
device
.
reset
()
...
...
@@ -19,7 +21,7 @@ def Setup(device):
device
.
disable_not_smu
()
# Transfer only VTG
def
Transfer_VTG
(
VTG
,
VDS
,
integration
,
sample
,
device
,
smu_map
):
def
Transfer_VTG
(
VTG
,
VDS
,
integration
,
sample
,
device
,
smu_map
,
save_plot
):
smu_t
=
device
.
smu_dict
()
smu_t
.
update
(
vname
=
'
VTG
'
,
iname
=
'
ITG
'
,
mode
=
'
V
'
,
func
=
'
VAR1
'
)
smu_d
=
device
.
smu_dict
()
...
...
@@ -150,10 +152,17 @@ def Transfer_VTG(VTG,VDS,integration,sample,device,smu_map):
f
.
write
(
"
\n
Results
\n
"
)
df
.
to_csv
(
file
,
sep
=
"
"
,
mode
=
'
a
'
)
#save plot if checked
if
save_plot
==
True
:
filename
=
os
.
path
.
splitext
(
path
)[
0
]
fig
.
savefig
(
filename
+
'
.png
'
)
return
df
,
points
# Transfer only VBG
def
Transfer_VBG
(
VBG
,
VDS
,
integration
,
sample
,
device
,
smu_map
):
def
Transfer_VBG
(
VBG
,
VDS
,
integration
,
sample
,
device
,
smu_map
,
save_plot
):
smu_t
=
device
.
smu_dict
()
smu_t
.
update
(
vname
=
'
VTG
'
,
iname
=
'
ITG
'
,
mode
=
'
COMM
'
,
func
=
'
CONS
'
)
smu_d
=
device
.
smu_dict
()
...
...
@@ -288,10 +297,14 @@ def Transfer_VBG(VBG,VDS,integration,sample,device,smu_map):
f
.
write
(
"
\n
Results
\n
"
)
df
.
to_csv
(
file
,
sep
=
"
"
,
mode
=
'
a
'
)
if
save_plot
==
True
:
filename
=
os
.
path
.
splitext
(
path
)[
0
]
fig
.
savefig
(
filename
+
'
.png
'
)
return
df
,
points
def
Transfer_BOTH
(
VTG
,
VBG
,
VDS
,
integration
,
sample
,
device
,
smu_map
):
def
Transfer_BOTH
(
VTG
,
VBG
,
VDS
,
integration
,
sample
,
device
,
smu_map
,
save_plot
):
smu_t
=
device
.
smu_dict
()
smu_t
.
update
(
vname
=
'
VTG
'
,
iname
=
'
ITG
'
,
mode
=
'
V
'
,
func
=
'
VAR1
'
)
smu_d
=
device
.
smu_dict
()
...
...
@@ -456,10 +469,13 @@ def Transfer_BOTH(VTG,VBG,VDS,integration,sample,device,smu_map):
f
.
write
(
"
\n
Results
\n
"
)
df
.
to_csv
(
file
,
sep
=
"
"
,
mode
=
'
a
'
)
if
save_plot
==
True
:
filename
=
os
.
path
.
splitext
(
path
)[
0
]
fig
.
savefig
(
filename
+
'
.png
'
)
return
df
,
points
# Output with VTG
def
Output_VTG
(
VDS
,
VTG
,
integration
,
sample
,
device
,
smu_map
):
def
Output_VTG
(
VDS
,
VTG
,
integration
,
sample
,
device
,
smu_map
,
save_plot
):
smu_t
=
device
.
smu_dict
()
smu_t
.
update
(
vname
=
'
VTG
'
,
iname
=
'
ITG
'
,
mode
=
'
V
'
,
func
=
'
VAR2
'
)
smu_d
=
device
.
smu_dict
()
...
...
@@ -596,10 +612,13 @@ def Output_VTG(VDS,VTG,integration,sample,device,smu_map):
f
.
write
(
"
\n
Results
\n
"
)
df
.
to_csv
(
file
,
sep
=
"
"
,
mode
=
'
a
'
)
if
save_plot
==
True
:
filename
=
os
.
path
.
splitext
(
path
)[
0
]
fig
.
savefig
(
filename
+
'
.png
'
)
return
df
,
points
#Output VBG
def
Output_VBG
(
VDS
,
VBG
,
integration
,
sample
,
device
,
smu_map
):
def
Output_VBG
(
VDS
,
VBG
,
integration
,
sample
,
device
,
smu_map
,
save_plot
):
smu_t
=
device
.
smu_dict
()
smu_t
.
update
(
vname
=
'
VTG
'
,
iname
=
'
ITG
'
,
mode
=
'
COMM
'
,
func
=
'
CONS
'
)
smu_d
=
device
.
smu_dict
()
...
...
@@ -735,10 +754,13 @@ def Output_VBG(VDS,VBG,integration,sample,device,smu_map):
f
.
write
(
"
\n
Results
\n
"
)
df
.
to_csv
(
file
,
sep
=
"
"
,
mode
=
'
a
'
)
if
save_plot
==
True
:
filename
=
os
.
path
.
splitext
(
path
)[
0
]
fig
.
savefig
(
filename
+
'
.png
'
)
return
df
,
points
# Output both
def
Output_BOTH
(
VDS
,
VTG
,
VBG
,
integration
,
sample
,
device
,
smu_map
):
def
Output_BOTH
(
VDS
,
VTG
,
VBG
,
integration
,
sample
,
device
,
smu_map
,
save_plot
):
smu_t
=
device
.
smu_dict
()
smu_t
.
update
(
vname
=
'
VTG
'
,
iname
=
'
ITG
'
,
mode
=
'
V
'
,
func
=
'
VAR2
'
)
smu_d
=
device
.
smu_dict
()
...
...
@@ -894,10 +916,13 @@ def Output_BOTH(VDS,VTG,VBG,integration,sample,device,smu_map):
f
.
write
(
"
\n
Results
\n
"
)
df
.
to_csv
(
file
,
sep
=
"
"
,
mode
=
'
a
'
)
if
save_plot
==
True
:
filename
=
os
.
path
.
splitext
(
path
)[
0
]
fig
.
savefig
(
filename
+
'
.png
'
)
return
df
,
points
def
Gatediode_VTG
(
VTG
,
integration
,
sample
,
device
,
smu_map
):
def
Gatediode_VTG
(
VTG
,
integration
,
sample
,
device
,
smu_map
,
save_plot
):
smu_t
=
device
.
smu_dict
()
smu_t
.
update
(
vname
=
'
VTG
'
,
iname
=
'
ITG
'
,
mode
=
'
V
'
,
func
=
'
VAR1
'
)
smu_s
=
device
.
smu_dict
()
...
...
@@ -1005,9 +1030,12 @@ def Gatediode_VTG(VTG,integration,sample,device,smu_map):
f
.
write
(
"
\n
Results
\n
"
)
df
.
to_csv
(
file
,
sep
=
"
"
,
mode
=
'
a
'
)
if
save_plot
==
True
:
filename
=
os
.
path
.
splitext
(
path
)[
0
]
fig
.
savefig
(
filename
+
'
.png
'
)
return
df
def
Gatediode_VBG
(
VBG
,
integration
,
sample
,
device
,
smu_map
):
def
Gatediode_VBG
(
VBG
,
integration
,
sample
,
device
,
smu_map
,
save_plot
):
smu_b
=
device
.
smu_dict
()
smu_b
.
update
(
vname
=
'
VBG
'
,
iname
=
'
IBG
'
,
mode
=
'
V
'
,
func
=
'
VAR1
'
)
smu_s
=
device
.
smu_dict
()
...
...
@@ -1117,4 +1145,7 @@ def Gatediode_VBG(VBG,integration,sample,device,smu_map):
f
.
write
(
"
\n
Results
\n
"
)
df
.
to_csv
(
file
,
sep
=
"
"
,
mode
=
'
a
'
)
if
save_plot
==
True
:
filename
=
os
.
path
.
splitext
(
path
)[
0
]
fig
.
savefig
(
filename
+
'
.png
'
)
return
df
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment