spinqick.experiments.tune_electrostatics
Perform charge stability measurements.
Converted to tprocv2 compatibility.
Attributes
Classes
This class holds functions that wrap the QICK experiments for charge stability measurements. |
Functions
|
Plotting function for 2D electrostatics type sweeps. |
|
Generate a plot of a 1D sweep of a gate voltage. |
|
Add a 1d trace to a plot generated with plot_g_1d. |
|
Analysis routine for the cross capacitance experiment. |
Module Contents
- spinqick.experiments.tune_electrostatics.logger
- spinqick.experiments.tune_electrostatics.plot_gvg_2d(data, x_gate, y_gate, x_label, y_label, adc_units='arbs')
Plotting function for 2D electrostatics type sweeps.
- Parameters:
x_gate (str)
y_gate (str)
x_label (str)
y_label (str)
adc_units (str | List[str])
- spinqick.experiments.tune_electrostatics.plot_g_1d(data, gate, x_label, y_label, dset_label=None)
Generate a plot of a 1D sweep of a gate voltage.
- Parameters:
gate (str)
x_label (str)
y_label (str)
dset_label (str | None)
- spinqick.experiments.tune_electrostatics.add_g_1d(data, gate, x_label, y_label, fignums, dset_label=None)
Add a 1d trace to a plot generated with plot_g_1d.
- Parameters:
gate (str)
x_label (str)
y_label (str)
fignums (list)
dset_label (str | None)
- spinqick.experiments.tune_electrostatics.analyze_cross_caps(data_obj, adc=0, fit_type='gaussian')
Analysis routine for the cross capacitance experiment.
- Parameters:
data_obj (spinqick.core.spinqick_data.SpinqickData)
adc (int)
fit_type (Literal['gaussian', 'abs_max', 'abs_min'])
- class spinqick.experiments.tune_electrostatics.TuneElectrostatics(soccfg, soc, voltage_source, **kwargs)
Bases:
spinqick.core.dot_experiment.DotExperimentThis class holds functions that wrap the QICK experiments for charge stability measurements. In general each function sets the necessary config parameters for you and then runs the qick program. They then optionally plot and save the data.Initialize with information about your rfsoc and your experimental setup.
- Parameters:
soccfg – QickConfig object
soc – QickSoc object
voltage_source (spinqick.helper_functions.hardware_manager.VoltageSource) – Initialized DC voltage source object. This is used here for saving the DC voltage state each time data is saved.
- soccfg
- soc
- vdc
- gvg_baseband(g_gates, g_range, measure_buffer)
Perform a basic PvP or PvT by baseband pulsing with the RFSoC.
- Parameters:
g_gates (tuple[spinqick.helper_functions.spinqick_enums.GateNames, spinqick.helper_functions.spinqick_enums.GateNames]) – gates to sweep on y and x axes. i.e. (‘P1’,’P2’)
g_range (tuple[tuple[float, float, int], tuple[float, float, int]]) – range to sweep gate x and gate y, and number of points for each
measure_buffer (float) – sets the delay time between measurements. The actual measurement is sandwiched between two measure_buffer delays
- Returns:
SpinqickData object
- Return type:
- gvg_arb_prog(prog, expt_name, cfg, g_gates, g_range, measure_buffer, compensate=None, sweep_direction=None, mode='sd_chop', save_data=False)
Python outer loop for 2 dimensional gate sweep-type experiments which sweep DC voltages. This method runs the 2D sweep and returns a spinqick data object.
- Parameters:
prog (qick.asm_v2.QickProgramV2) – QickProgram to run at each sweep
expt_name (str) – experiment name string to pass to SpinqickData object
cfg (pydantic.BaseModel) – pydantic config model to pass in to the QickProgram when it is run
g_gates (tuple[list[spinqick.helper_functions.spinqick_enums.GateNames], list[spinqick.helper_functions.spinqick_enums.GateNames]]) – specify the gates to sweep on the x and y axes. The fast sweep runs along the y axis, which is the second list in the tuple. An outer python loop steps through and sets the x-axis values one by one.
g_range (tuple[tuple[float, float, int], tuple[float, float, int]]) – voltage range to sweep gate x and gate y, and number of points for each in this format ((x start, x end, number of points), (x start, x end, number of points) )
measure_buffer (float) – time in microseconds at each voltage point before and after the readout pulse.
compensate (spinqick.helper_functions.spinqick_enums.GateNames | None) – whether to apply compensation on another gate. Typically an M gate.
sweep_direction (tuple[list[int], list[int]] | None) – specify direction of sweep. This arguement takes a tuple of lists the same size as g_gates. The values of the inputs must be +/-1, with +1 corresponding to sweeping from start to end voltage values, and -1 sweeping from end voltage to start voltage.
mode (Literal['sd_chop', 'transdc']) – toggles the readout mode between source-drain chop and transconductance. In transconductance mode, an AC signal is applied to a gate and a DC bias is applied to the device, while current is read out the normal way.
save_data (bool)
- Return type:
- gvg_dc(g_gates, g_range, measure_buffer, compensate=None, sweep_direction=None, mode='sd_chop')
GvG script which sweeps an external DC voltage source and reads out a DCS.
- Parameters:
g_gates (tuple[list[spinqick.helper_functions.spinqick_enums.GateNames], list[spinqick.helper_functions.spinqick_enums.GateNames]]) – gates to sweep on y and x axes. i.e. ([‘P1’],[‘P2’]). Option to provide a list of gates to sweep on each axis.
g_range (tuple[tuple[float, float, int], tuple[float, float, int]]) – voltage range to sweep gate x and gate y, and number of points for each.
compensate (spinqick.helper_functions.spinqick_enums.GateNames | None) – gate to compensate while changing other voltages. i.e. ‘M1’
sweep_direction (tuple[list[int], list[int]] | None) – Allows user to sweep a gate backwards if desired. Provide a list of positive or negative ones corresponding to each gate in g_gates i.e. ([1,-1], [1]).
measure_buffer (float) – time in microseconds between when the sleeperdac steps in voltage and the QICK starts a DCS measurement.
mode (Literal['sd_chop', 'transdc']) – “sdchop” selects typical source drain chop readout, “transdc” is for transcoductance mode
- Return type:
- gvg_pat(g_gates, g_range, measure_buffer, pat_freq, pat_gain, pat_gen, compensate=None, sweep_direction=None, mode='sd_chop')
GvG script which applies an RF tone to probe photon assisted tunneling.
- Parameters:
g_gates (tuple[list[spinqick.helper_functions.spinqick_enums.GateNames], list[spinqick.helper_functions.spinqick_enums.GateNames]]) – gates to sweep on y and x axes. i.e. ([‘P1’],[‘P2’]). Option to provide a list of gates to sweep on each axis.
g_range (tuple[tuple[float, float, int], tuple[float, float, int]]) – voltage range to sweep gate x and gate y, and number of points for each.
compensate (spinqick.helper_functions.spinqick_enums.GateNames | None) – gate to compensate while changing other voltages. i.e. ‘M1’
sweep_direction (tuple[list[int], list[int]] | None) – Allows user to sweep a gate backwards if desired. Provide a list of positive or negative ones corresponding to each gate in g_gates i.e. ([1,-1], [1]).
measure_buffer (float) – time in microseconds between when the sleeperdac steps in voltage and the QICK starts a DCS measurement.
pat_freq (float) – frequency of microwave tone
pat_gain (float) – gain of pat signal in QICK units (-1, 1)
pat_gen (int) – generator used for pat signal
mode (Literal['sd_chop', 'transdc']) – “sdchop” selects typical source drain chop readout, “transdc” is for transcoductance mode
- Return type:
- get_cross_caps(x_gate, y_gate, x_range, y_range, measure_buffer, compensate=None, mode='sd_chop', fit_type='gaussian')
Measure cross-capacitance between gates. This is set to fit a gaussian to a feature as it is scanned on the y-axis.
- Parameters:
x_gate (spinqick.helper_functions.spinqick_enums.GateNames) – gate to step in python outer loop
y_gate (spinqick.helper_functions.spinqick_enums.GateNames) – either an M gate, or the gate that compensation will be applied to
x_range (Tuple[float, float, int]) – voltage range to sweep x gate over
y_range (Tuple[float, float, int]) – voltage range to sweep y (fast sweep) gate over
measure_buffer (float) – time in microseconds between when the sleeperdac steps in voltage and the QICK starts a DCS measurement.
compensate (spinqick.helper_functions.spinqick_enums.GateNames | None) – the m-gate to compensate with for the y-gate. If y-gate is an m-gate, leave as None
mode (Literal['sd_chop', 'transdc']) – “sdchop” selects typical source drain chop readout, “transdc” is for transcoductance mode
fit_type (Literal['gaussian', 'abs_max', 'abs_min'])
- Return type:
- tune_mz(m_dot, m_range, z_range, measure_buffer, tune_type='common')
Tune MZ using sleeperdac or other external DC voltage bias. This wraps the function gvg_dc.
- Parameters:
m_dot (spinqick.helper_functions.spinqick_enums.GateNames) – M dot you’re tuning, i.e. ‘M1’
m_range (tuple[float, float, int]) – voltage range to sweep m gate, and number of points.
z_range (tuple[float, float, int]) – voltage range to sweep z gate, and number of points.
tune_type (Literal['common', 'diff']) – sweep z gates in same direction or opposite directions
measure_buffer (float) – time in microseconds between when the sleeperdac steps in voltage and the QICK starts a DCS measurement.
- Return type:
- retune_dcs(m_dot, m_range, measure_buffer, set_v=False, mode='sd_chop')
Automated retune DCS script. Scan m-gate voltage, fit to conductance peak, extract an optimal m-gate voltage from peak.
- Parameters:
m_dot (spinqick.helper_functions.spinqick_enums.GateNames) – Dot to retune
m_range (tuple[float, float, int]) – List of start voltage, stop voltage and number of points. Voltages are relative to the current setpoint
measure_buffer (float) – time in microseconds between when the slow dac steps in voltage and the QICK starts a DCS measurement.
set_v – after retuning, automatically set the voltage to the optimal point
mode (Literal['sd_chop', 'transdc']) – “sdchop” selects typical source drain chop readout, “transdc” is for transcoductance mode
- Return type:
- gate_action(gates, max_v, num_points, measure_buffer)
Performs a voltage sweep of a list of gates down to zero and back to a max voltage. Each gate is swept individually. This function holds other gates at the voltages they were set to when it was called.
- Parameters:
gates (list[spinqick.helper_functions.spinqick_enums.GateNames]) – list of gates to sweep
max_v (float) – voltage to sweep up to
num_points (int) – points in each sweep direction
measure_buffer (float) – time in microseconds between when the precision DAC steps in voltage and QICK starts a DCS measurement.
- Return type:
- sweep_1d(gates, g_range, measure_buffer=50, compensate=None, sweep_direction=None, filename_tag=None, mode='sd_chop')
Sweep gates over desired range. No averaging built in currently.
- Parameters:
gates (list[spinqick.helper_functions.spinqick_enums.GateNames]) – list of gates to sweep
g_range (tuple[float, float, int]) – (start voltage, stop voltage, number of steps)
measure_buffer (float) – time in microseconds between when the sleeperdac steps in voltage and the QICK starts a DCS measurement.
compensate (spinqick.helper_functions.spinqick_enums.GateNames | None) – specify a gate to compensate on while the sweep is running
sweep_direction (list[int] | None) – Allows user to sweep a gate backwards if desired. Provide a list of values equal to +/-1 to specify backwards sweeps.
filename_tag (str | None) – add a string to the filename, for example ‘electron_temperature’
mode (Literal['sd_chop', 'trans']) – “sdchop” selects typical source drain chop readout, “transdc” is for transcoductance mode
- Return type:
- gate_turn_on(gates, max_v, num_points, measure_buffer)
Global gate turn on script. Sweep several gates simultaneously to look for current through the device.
- Parameters:
gates (list[spinqick.helper_functions.spinqick_enums.GateNames]) – list of gates to sweep
max_v (float) – voltage to sweep up to
num_points (int) – points in each sweep direction
measure_buffer (float) – time in microseconds between when the precision DC DAC steps in voltage and QICK starts a DCS measurement.
- Return type:
- calibrate_baseband_voltage(gate, gate_dc_range, gate_pulse_range, gate_step, gate_freq, measure_buffer)
Calibrate baseband voltage based off of low speed dacs. Scans a loading line with low speed dacs while sweeping pulse gain of high speed dacs. The pulse is a high frequency AC signal. We perform two measurements at each point, each with a slightly different DC offset on the sine wave output by the rfsoc.
- Parameters:
gate (spinqick.helper_functions.spinqick_enums.GateNames) – name of gate to calibrate
gate_dc_range (Tuple[float, float, int]) – range of DC source voltages (start voltage, end voltage, number of points)
gate_pulse_range (Tuple[float, float, int]) – range of qick pulse gains
gate_step (float) – pulse gain value used to get a differential measurement. The Rfsoc pulses to a value, takes a measurement, then pulses to the value minus the gate_step parameter. Then we take a difference between the two conductance values. This gives us a differential measurement so that we can see the calibration lines more clearly.
gate_freq (float) – pulse frequency applied by rfsoc.
measure_buffer (float) – time in microseconds between when the slow dac steps in voltage and the QICK starts a DCS measurement.
- Return type:
- measure_bandwidth(gate, gate_dc_range, gate_freq_range, gate_step, pulse_gain, measure_buffer)
Performs a frequency sweep of an AC signal generated by qick in order to look for a roll- off. Scans a loading line with low speed dacs while sweeping pulse gain of high speed dacs. The pulse is a high frequency AC signal. We perform two measurements at each point, each with a slightly different DC offset on the sine wave output by the rfsoc.
- Parameters:
gate (spinqick.helper_functions.spinqick_enums.GateNames) – name of gate to calibrate
gate_dc_range (Tuple[float, float, int]) – range of DC source voltages (start voltage, end voltage, number of points)
gate_freq_range (Tuple[float, float, int]) – range of qick pulse frequency values (start frequency, end frequency, number of points)
gate_step (float) – pulse gain value used to get a differential measurement. The Rfsoc pulses to a value, takes a measurement, then pulses to the value minus the gate_step parameter. Then we take a difference between the two conductance values. This gives us a differential measurement so that we can see the calibration lines more clearly.
pulse_gain (float) – RFSoC pulse gain.
measure_buffer (float) – time in microseconds between when the slow dac steps in voltage and the QICK starts a DCS measurement.
- Return type:
- tune_hsa(gate, gate_dc_range, pulse_time, pulse_gain, measure_buffer)
Performs a scan of voltage and plays a baseband pulse followed immediately with a measurement. This is intended for tuning the high speed adder circuit described in https://doi.org/10.1103/PRXQuantum.3.010352 .
- Parameters:
gate (spinqick.helper_functions.spinqick_enums.GateNames) – name of gate to calibrate
gate_dc_range (Tuple[float, float, int]) – range of DC source voltages (start voltage, end voltage, number of points)
pulse_time (float) – duration of pulse in microseconds
pulse_gain (float) – pulse gain in RFSoC units (between -1, and 1)
measure_buffer (float) – time in microseconds between when the slow dac steps in voltage and the QICK starts a DCS measurement.
- Return type: