Skip to content

Commit 002c043

Browse files
committed
Switched all samples to use new design specifying class name for accessing spikesafe-python static methods and enums
1 parent fb5d49e commit 002c043

File tree

120 files changed

+872
-728
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

120 files changed

+872
-728
lines changed

application_specific_examples/fixed_pulse_count_using_software_timing/FixedPulseCountUsingSoftwareTimingExample.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -37,64 +37,64 @@
3737
# reset to default state and check for all events,
3838
# it is best practice to check for errors after sending each command
3939
tcp_socket.send_scpi_command('*RST')
40-
spikesafe_python.log_all_events(tcp_socket)
40+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
4141

4242
# set Channel 1's mode to DC Dynamic and check for all events
4343
tcp_socket.send_scpi_command('SOUR1:FUNC:SHAP PULSEDDYNAMIC')
44-
spikesafe_python.log_all_events(tcp_socket)
44+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
4545

4646
# set Channel 1's Trigger Output to Positive and check for all events
4747
tcp_socket.send_scpi_command('OUTP1:TRIG:SLOP POS')
48-
spikesafe_python.log_all_events(tcp_socket)
48+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
4949

5050
# set Channel 1's Trigger Output Always and check for all events
5151
tcp_socket.send_scpi_command('SOUR0:PULS:TRIG ALWAYS')
52-
spikesafe_python.log_all_events(tcp_socket)
52+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
5353

5454
# set Channel 1's Pulse On Time to 1us and check for all events
5555
pulse_on_time = 0.000001
56-
tcp_socket.send_scpi_command(f'SOUR1:PULS:TON {spikesafe_python.get_precise_time_command_argument(pulse_on_time)}')
57-
spikesafe_python.log_all_events(tcp_socket)
56+
tcp_socket.send_scpi_command(f'SOUR1:PULS:TON {spikesafe_python.Precision.get_precise_time_command_argument(pulse_on_time)}')
57+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
5858

5959
# set Channel 1's Pulse Off Time 9us and check for all events
60-
tcp_socket.send_scpi_command(f'SOUR1:PULS:TOFF {spikesafe_python.get_precise_time_command_argument(0.000009)}')
61-
spikesafe_python.log_all_events(tcp_socket)
60+
tcp_socket.send_scpi_command(f'SOUR1:PULS:TOFF {spikesafe_python.Precision.get_precise_time_command_argument(0.000009)}')
61+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
6262

6363
# set Channel 1's Pulse Width adjustment to disabled and check for all events
6464
tcp_socket.send_scpi_command('SOUR1:PULS:AADJ 0')
65-
spikesafe_python.log_all_events(tcp_socket)
65+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
6666

6767
# set Channel 1's current to 100mA and check for all events
6868
set_current = 0.1
69-
tcp_socket.send_scpi_command(f'SOUR1:CURR {spikesafe_python.get_precise_current_command_argument(set_current)}')
70-
spikesafe_python.log_all_events(tcp_socket)
69+
tcp_socket.send_scpi_command(f'SOUR1:CURR {spikesafe_python.Precision.get_precise_current_command_argument(set_current)}')
70+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
7171

7272
# set Channel 1's voltage to 20V and check for all events
73-
tcp_socket.send_scpi_command(f'SOUR1:VOLT {spikesafe_python.get_precise_compliance_voltage_command_argument(20)}')
74-
spikesafe_python.log_all_events(tcp_socket)
73+
tcp_socket.send_scpi_command(f'SOUR1:VOLT {spikesafe_python.Precision.get_precise_compliance_voltage_command_argument(20)}')
74+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
7575

7676
# set Channel 1's Auto Range to On and check for all events
7777
tcp_socket.send_scpi_command('SOUR1:CURR:RANG:AUTO 1')
78-
spikesafe_python.log_all_events(tcp_socket)
78+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
7979

8080
# set Channel 1's Load Impedance and Rise Time, and check for all events
8181
tcp_socket.send_scpi_command('SOUR1:CURR? MAX')
8282
spikesafe_model_max_current = float(tcp_socket.read_data())
83-
load_impedance, rise_time = spikesafe_python.get_optimum_compensation(spikesafe_model_max_current, set_current, pulse_on_time)
83+
load_impedance, rise_time = spikesafe_python.Compensation.get_optimum_compensation(spikesafe_model_max_current, set_current, pulse_on_time)
8484
tcp_socket.send_scpi_command(f'SOUR1:PULS:CCOM {load_impedance}')
85-
spikesafe_python.log_all_events(tcp_socket)
85+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
8686
tcp_socket.send_scpi_command(f'SOUR1:PULS:RCOM {rise_time}')
87-
spikesafe_python.log_all_events(tcp_socket)
87+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
8888

8989
# set Channel 1's Ramp mode to Fast and check for all events
9090
tcp_socket.send_scpi_command('OUTP1:RAMP FAST')
91-
spikesafe_python.log_all_events(tcp_socket)
91+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
9292

9393
# Start the channel
9494
tcp_socket.send_scpi_command('OUTP1 ON')
9595

9696
# wait until Channel 1 is ready
97-
spikesafe_python.read_until_event(tcp_socket, spikesafe_python.SpikeSafeEvents.CHANNEL_READY) # event 100 is "Channel Ready"
97+
spikesafe_python.ReadAllEvents.read_until_event(tcp_socket, spikesafe_python.SpikeSafeEvents.CHANNEL_READY) # event 100 is "Channel Ready"
9898

9999
# pulsing starts before before getting Channel Ready message
100100
# wait 30ms for getting ~10000 pulses

application_specific_examples/making_tj_measurements/TjMeasurement.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,13 @@ def calculate_Vf0(start_point, end_point, digitizer_data_list):
8888
# reset to default state and check for all events, this will automatically abort digitizer in order get it into a known state. This is good practice when connecting to a SpikeSafe PSMU
8989
# it is best practice to check for errors after sending each command
9090
tcp_socket.send_scpi_command('*RST')
91-
spikesafe_python.log_all_events(tcp_socket)
91+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
9292

9393
# set up Channel 1 for Bias Current output to determine the K-factor
9494
tcp_socket.send_scpi_command('SOUR1:FUNC:SHAP BIAS')
95-
tcp_socket.send_scpi_command(f'SOUR0:CURR:BIAS {spikesafe_python.get_precise_current_command_argument(0.033)}')
95+
tcp_socket.send_scpi_command(f'SOUR0:CURR:BIAS {spikesafe_python.Precision.get_precise_current_command_argument(0.033)}')
9696
compliance_voltage = 40
97-
tcp_socket.send_scpi_command(f'SOUR1:VOLT {spikesafe_python.get_precise_compliance_voltage_command_argument(compliance_voltage)}')
97+
tcp_socket.send_scpi_command(f'SOUR1:VOLT {spikesafe_python.Precision.get_precise_compliance_voltage_command_argument(compliance_voltage)}')
9898
tcp_socket.send_scpi_command('SOUR1:CURR:PROT 50')
9999
tcp_socket.send_scpi_command('OUTP1:RAMP FAST')
100100

@@ -104,7 +104,7 @@ def calculate_Vf0(start_point, end_point, digitizer_data_list):
104104
tcp_socket.send_scpi_command('OUTP1 1')
105105

106106
# wait until Channel 1 is ready to pulse
107-
spikesafe_python.read_until_event(tcp_socket, spikesafe_python.SpikeSafeEvents.CHANNEL_READY) # event 100 is "Channel Ready"
107+
spikesafe_python.ReadAllEvents.read_until_event(tcp_socket, spikesafe_python.SpikeSafeEvents.CHANNEL_READY) # event 100 is "Channel Ready"
108108

109109
log_and_print_to_console('\nMeasurement Current is currently outputting to the DUT.\n\nPress \'Enter\' in the console once temperature has been stabilized at T1, then record V1 and T1.')
110110
input()
@@ -113,7 +113,7 @@ def calculate_Vf0(start_point, end_point, digitizer_data_list):
113113
log_and_print_to_console('Enter V1 (in V):')
114114
voltage_one = float(receive_user_input_and_log())
115115

116-
spikesafe_python.wait(2)
116+
spikesafe_python.Threading.wait(2)
117117

118118
log_and_print_to_console('\nMeasurement Current is currently outputting to the DUT.\n\nChange the control temperature to T2.\n\nPress \'Enter\' in the console once temperature has been stabilized at T2, then record V2 and T2.')
119119
input()
@@ -127,27 +127,27 @@ def calculate_Vf0(start_point, end_point, digitizer_data_list):
127127

128128
# turn off Channel 1
129129
tcp_socket.send_scpi_command('OUTP1 0')
130-
wait_time = spikesafe_python.get_spikesafe_channel_discharge_time(compliance_voltage)
131-
spikesafe_python.wait(wait_time)
130+
wait_time = spikesafe_python.Discharge.get_spikesafe_channel_discharge_time(compliance_voltage)
131+
spikesafe_python.Threading.wait(wait_time)
132132

133133
log_and_print_to_console('\nK-factor values obtained. Stopped bias current output. Configuring to perform Electrical Test Method measurement.')
134134

135135
# set up Channel 1 for CDBC output to make the junction temperature measurement
136136
tcp_socket.send_scpi_command('SOUR1:FUNC:SHAP BIASPULSEDDYNAMIC')
137-
tcp_socket.send_scpi_command(f'SOUR1:CURR {spikesafe_python.get_precise_current_command_argument(3.5)}')
138-
tcp_socket.send_scpi_command(f'SOUR0:CURR:BIAS {spikesafe_python.get_precise_current_command_argument(0.033)}')
139-
tcp_socket.send_scpi_command(f'SOUR1:VOLT {spikesafe_python.get_precise_compliance_voltage_command_argument(40)}')
140-
tcp_socket.send_scpi_command(f'SOUR1:PULS:TON {spikesafe_python.get_precise_time_command_argument(1)}')
141-
tcp_socket.send_scpi_command(f'SOUR1:PULS:TOFF {spikesafe_python.get_precise_time_command_argument(0.001)}')
137+
tcp_socket.send_scpi_command(f'SOUR1:CURR {spikesafe_python.Precision.get_precise_current_command_argument(3.5)}')
138+
tcp_socket.send_scpi_command(f'SOUR0:CURR:BIAS {spikesafe_python.Precision.get_precise_current_command_argument(0.033)}')
139+
tcp_socket.send_scpi_command(f'SOUR1:VOLT {spikesafe_python.Precision.get_precise_compliance_voltage_command_argument(40)}')
140+
tcp_socket.send_scpi_command(f'SOUR1:PULS:TON {spikesafe_python.Precision.get_precise_time_command_argument(1)}')
141+
tcp_socket.send_scpi_command(f'SOUR1:PULS:TOFF {spikesafe_python.Precision.get_precise_time_command_argument(0.001)}')
142142
tcp_socket.send_scpi_command('SOUR1:CURR:PROT 50')
143143
tcp_socket.send_scpi_command('OUTP1:RAMP FAST')
144144

145145
# set Digitizer settings to take a series of quick measurements during the Off Time of CDBC operation
146146
tcp_socket.send_scpi_command('VOLT:RANG 100')
147147
aperture = 2
148-
tcp_socket.send_scpi_command(f'VOLT:APER {spikesafe_python.get_precise_time_microseconds_command_argument(aperture)}')
148+
tcp_socket.send_scpi_command(f'VOLT:APER {spikesafe_python.Precision.get_precise_time_microseconds_command_argument(aperture)}')
149149
hardware_trigger_delay = 0
150-
tcp_socket.send_scpi_command(f'VOLT:TRIG:DEL {spikesafe_python.get_precise_time_microseconds_command_argument(hardware_trigger_delay)}')
150+
tcp_socket.send_scpi_command(f'VOLT:TRIG:DEL {spikesafe_python.Precision.get_precise_time_microseconds_command_argument(hardware_trigger_delay)}')
151151
tcp_socket.send_scpi_command('VOLT:TRIG:SOUR HARDWARE')
152152
tcp_socket.send_scpi_command('VOLT:TRIG:EDGE FALLING')
153153
hardware_trigger_count = 1
@@ -156,13 +156,13 @@ def calculate_Vf0(start_point, end_point, digitizer_data_list):
156156
tcp_socket.send_scpi_command(f'VOLT:READ:COUN {reading_count}')
157157

158158
# check all SpikeSafe event since all settings have been sent
159-
spikesafe_python.log_all_events(tcp_socket)
159+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
160160

161161
# turn on Channel 1
162162
tcp_socket.send_scpi_command('OUTP1 1')
163163

164164
# wait until Channel 1 is ready to pulse
165-
spikesafe_python.read_until_event(tcp_socket, spikesafe_python.SpikeSafeEvents.CHANNEL_READY) # event 100 is "Channel Ready"
165+
spikesafe_python.ReadAllEvents.read_until_event(tcp_socket, spikesafe_python.SpikeSafeEvents.CHANNEL_READY) # event 100 is "Channel Ready"
166166

167167
log_and_print_to_console('\nHeating Current is being outputted.\n\nWait until temperature has stabilized, then press \'Enter\' in the console to take voltage measurements.')
168168
input()
@@ -171,11 +171,11 @@ def calculate_Vf0(start_point, end_point, digitizer_data_list):
171171
tcp_socket.send_scpi_command('VOLT:INIT')
172172

173173
# wait for the Digitizer measurements to complete
174-
spikesafe_python.wait_for_new_voltage_data(tcp_socket, 0.5)
174+
spikesafe_python.DigitizerDataFetch.wait_for_new_voltage_data(tcp_socket, 0.5)
175175

176176
# fetch the Digitizer voltage readings using VOLT:FETC? query
177177
digitizerData = []
178-
digitizerData = spikesafe_python.fetch_voltage_data(tcp_socket)
178+
digitizerData = spikesafe_python.DigitizerDataFetch.fetch_voltage_data(tcp_socket)
179179

180180
# turn off Channel 1 after routine is complete
181181
tcp_socket.send_scpi_command('OUTP1 0')

application_specific_examples/making_transient_dual_interface_measurement/digitizer_log_sampling_demo.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@ def receive_user_input_and_log():
9595
tcp_socket.send_scpi_command('SOUR1:FUNC:SHAP DCDYNAMIC')
9696

9797
# set MCV to 25
98-
tcp_socket.send_scpi_command(f'SOUR1:VOLT {spikesafe_python.get_precise_compliance_voltage_command_argument(40)}')
98+
tcp_socket.send_scpi_command(f'SOUR1:VOLT {spikesafe_python.Precision.get_precise_compliance_voltage_command_argument(40)}')
9999

100100
# set Auto Range
101101
tcp_socket.send_scpi_command('SOUR1:CURR:RANG:AUTO 1')
102102

103103
# set current to 1A
104-
tcp_socket.send_scpi_command(f'SOUR1:CURR {spikesafe_python.get_precise_current_command_argument(1)}')
104+
tcp_socket.send_scpi_command(f'SOUR1:CURR {spikesafe_python.Precision.get_precise_current_command_argument(1)}')
105105

106106
# set Ramp mode to Fast
107107
tcp_socket.send_scpi_command('OUTP1:RAMP FAST')
@@ -134,7 +134,7 @@ def receive_user_input_and_log():
134134
break
135135

136136
# Fetch Data
137-
digitizer_data = spikesafe_python.fetch_voltage_data(tcp_socket)
137+
digitizer_data = spikesafe_python.DigitizerDataFetch.fetch_voltage_data(tcp_socket)
138138

139139
# time stamp record the approximate timing between the trigger signal and the data output
140140
end_data_ready_time = time.time()

application_specific_examples/measuring_dc_staircase_voltages/MeasuringDcStaircaseVoltages.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -50,59 +50,59 @@
5050
# reset to default state and check for all events, this will automatically abort digitizer in order get it into a known state. This is good practice when connecting to a SpikeSafe PSMU
5151
# it is best practice to check for errors after sending each command
5252
tcp_socket.send_scpi_command('*RST')
53-
spikesafe_python.log_all_events(tcp_socket)
53+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
5454

5555
# set Channel 1's mode to DC Dynamic mode and check for all events
5656
tcp_socket.send_scpi_command('SOUR1:FUNC:SHAP DCDYNAMIC')
57-
spikesafe_python.log_all_events(tcp_socket)
57+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
5858

5959
# set Channel 1's voltage to 10 and check for all events
60-
tcp_socket.send_scpi_command(f'SOUR1:VOLT {spikesafe_python.get_precise_compliance_voltage_command_argument(40)}')
61-
spikesafe_python.log_all_events(tcp_socket)
60+
tcp_socket.send_scpi_command(f'SOUR1:VOLT {spikesafe_python.Precision.get_precise_compliance_voltage_command_argument(40)}')
61+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
6262

6363
# set Channel 1's Auto Range to On and check for all events
6464
tcp_socket.send_scpi_command('SOUR1:CURR:RANG:AUTO 1')
65-
spikesafe_python.log_all_events(tcp_socket)
65+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
6666

6767
# set Channel 1's current to start current and check for all events
68-
tcp_socket.send_scpi_command(f'SOUR1:CURR {spikesafe_python.get_precise_current_command_argument(start_current_A)}')
69-
spikesafe_python.log_all_events(tcp_socket)
68+
tcp_socket.send_scpi_command(f'SOUR1:CURR {spikesafe_python.Precision.get_precise_current_command_argument(start_current_A)}')
69+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
7070

7171
# set Channel 1's Ramp mode to Fast and check for all events
7272
tcp_socket.send_scpi_command('OUTP1:RAMP FAST')
73-
spikesafe_python.log_all_events(tcp_socket)
73+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
7474

7575
# start the Channel 1
7676
tcp_socket.send_scpi_command('OUTP1 ON')
7777

7878
# wait until Channel 1 is ready
79-
spikesafe_python.read_until_event(tcp_socket, spikesafe_python.SpikeSafeEvents.CHANNEL_READY) # event 100 is "Channel Ready"
79+
spikesafe_python.ReadAllEvents.read_until_event(tcp_socket, spikesafe_python.SpikeSafeEvents.CHANNEL_READY) # event 100 is "Channel Ready"
8080

8181
# set Digitizer Aperture to 10us and check for all events
8282
aperture = 10
83-
tcp_socket.send_scpi_command(f'VOLT:APER {spikesafe_python.get_precise_time_microseconds_command_argument(aperture)}')
84-
spikesafe_python.log_all_events(tcp_socket)
83+
tcp_socket.send_scpi_command(f'VOLT:APER {spikesafe_python.Precision.get_precise_time_microseconds_command_argument(aperture)}')
84+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
8585

8686
# set Digitizer Trigger Count to step count and check for all events
8787
tcp_socket.send_scpi_command('VOLT:TRIG:COUN {}'.format(step_count))
88-
spikesafe_python.log_all_events(tcp_socket)
88+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
8989

9090
# set Digitizer Read Count to 1 and check for all events
9191
reading_count = 1
9292
tcp_socket.send_scpi_command(f'VOLT:READ:COUN {reading_count}')
93-
spikesafe_python.log_all_events(tcp_socket)
93+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
9494

9595
# set Digitizer Range to 10V and check for all events
9696
tcp_socket.send_scpi_command('VOLT:RANG 10')
97-
spikesafe_python.log_all_events(tcp_socket)
97+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
9898

9999
# set Digitizer SW Trigger and check for all events
100100
tcp_socket.send_scpi_command('VOLT:TRIG:SOUR SOFTWARE')
101-
spikesafe_python.log_all_events(tcp_socket)
101+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
102102

103103
# start Digitizer software triggered measurements
104104
tcp_socket.send_scpi_command('VOLT:INIT:SEND')
105-
spikesafe_python.log_all_events(tcp_socket)
105+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
106106

107107
# start DC staircase current supply and voltage measurement per step
108108
set_current = start_current_A
@@ -117,14 +117,14 @@
117117

118118

119119
# check for all events
120-
spikesafe_python.log_all_events(tcp_socket)
120+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
121121

122122
# wait for the Digitizer measurements to complete. We need to wait for the data acquisition to complete before fetching the data
123-
spikesafe_python.wait_for_new_voltage_data(tcp_socket, 0.5)
123+
spikesafe_python.DigitizerDataFetch.wait_for_new_voltage_data(tcp_socket, 0.5)
124124

125125
# Fetch Data and check for all events
126-
digitizer_data = spikesafe_python.fetch_voltage_data(tcp_socket)
127-
spikesafe_python.log_all_events(tcp_socket)
126+
digitizer_data = spikesafe_python.DigitizerDataFetch.fetch_voltage_data(tcp_socket)
127+
spikesafe_python.ReadAllEvents.log_all_events(tcp_socket)
128128

129129
# disconnect from PSMU
130130
tcp_socket.close_socket()

0 commit comments

Comments
 (0)