spinqick.experiments.tune_electrostatics

Perform charge stability measurements.

Converted to tprocv2 compatibility.

Attributes

logger

Classes

TuneElectrostatics

This class holds functions that wrap the QICK experiments for charge stability measurements.

Functions

plot_gvg_2d(data, x_gate, y_gate, x_label, y_label[, ...])

Plotting function for 2D electrostatics type sweeps.

plot_g_1d(data, gate, x_label, y_label[, dset_label])

Generate a plot of a 1D sweep of a gate voltage.

add_g_1d(data, gate, x_label, y_label, fignums[, ...])

Add a 1d trace to a plot generated with plot_g_1d.

analyze_cross_caps(data_obj[, adc, fit_type])

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:
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:
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:
spinqick.experiments.tune_electrostatics.analyze_cross_caps(data_obj, adc=0, fit_type='gaussian')

Analysis routine for the cross capacitance experiment.

Parameters:
class spinqick.experiments.tune_electrostatics.TuneElectrostatics(soccfg, soc, voltage_source, **kwargs)

Bases: spinqick.core.dot_experiment.DotExperiment

This 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
soc
vdc
gvg_baseband(g_gates, g_range, measure_buffer)

Perform a basic PvP or PvT by baseband pulsing with the RFSoC.

Parameters:
Returns:

SpinqickData object

Return type:

spinqick.core.spinqick_data.SpinqickData

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:

spinqick.core.spinqick_data.SpinqickData

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:

spinqick.core.spinqick_data.SpinqickData

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:

spinqick.core.spinqick_data.SpinqickData

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:

spinqick.core.spinqick_data.SpinqickData

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:

spinqick.core.spinqick_data.SpinqickData

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:

spinqick.core.spinqick_data.SpinqickData

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:

spinqick.core.spinqick_data.CompositeSpinqickData

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:

spinqick.core.spinqick_data.SpinqickData

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:

spinqick.core.spinqick_data.SpinqickData

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:

spinqick.core.spinqick_data.CompositeSpinqickData

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:

spinqick.core.spinqick_data.CompositeSpinqickData

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:

spinqick.core.spinqick_data.SpinqickData