nv_element#

Device elements for NV centers.

Currently only for the electronic qubit, but could be extended for other qubits (eg. carbon qubit).

Module Contents#

Classes#

Ports

Submodule containing the ports.

ClockFrequencies

Submodule with clock frequencies specifying the transitions to address.

SpectroscopyOperationHermiteMW

Convert the SpectroscopyOperation into a hermite microwave pulse.

ResetSpinpump

Submodule containing parameters to run the spinpump laser with a square pulse.

Measure

Submodule containing parameters to read out the spin state of the NV center.

ChargeReset

Submodule containing parameters to run an ionization laser square pulse to reset the NV.

CRCount

Submodule containing parameters to run the ionization laser and the spin pump laser.

RxyHermite

Submodule containing parameters to perform an Rxy operation

BasicElectronicNVElement

A device element representing an electronic qubit in an NV center.

class Ports(parent: qcodes.instrument.base.InstrumentBase, name: str, *, microwave: str | None = None, optical_control: str | None = None, optical_readout: str | None = None)[source]#

Bases: qcodes.instrument.InstrumentModule

Submodule containing the ports.

microwave[source]#

Name of the element’s microwave port.

optical_control[source]#

Port to control the device element with optical pulses.

optical_readout[source]#

Port to readout photons from the device element.

class ClockFrequencies(parent: qcodes.instrument.base.InstrumentBase, name: str, *, f01: float = math.nan, spec: float = math.nan, ge0: float = math.nan, ge1: float = math.nan, ionization: float = math.nan)[source]#

Bases: qcodes.instrument.InstrumentModule

Submodule with clock frequencies specifying the transitions to address.

f01[source]#

Microwave frequency to resonantly drive the electron spin state of a negatively charged diamond NV center from the 0-state to 1-state Doherty et al. [DMD+13].

spec[source]#

Parameter that is swept for a spectroscopy measurement. It does not track properties of the device element.

ge0[source]#

Transition frequency from the m_s=0 state to the E_x,y state

ge1[source]#

Transition frequency from the m_s=+-1 state to any of the A_1, A_2, or E_1,2 states

ionization[source]#

Frequency of the green ionization laser for manipulation of the NVs charge state.

class SpectroscopyOperationHermiteMW(parent: qcodes.instrument.base.InstrumentBase, name: str, *, amplitude: float = math.nan, duration: float = 8e-06)[source]#

Bases: qcodes.instrument.InstrumentModule

Convert the SpectroscopyOperation into a hermite microwave pulse.

This class contains parameters with a certain amplitude and duration for spin-state manipulation.

The modulation frequency of the pulse is determined by the clock spec in ClockFrequencies.

amplitude[source]#

Amplitude of spectroscopy pulse

duration[source]#

Duration of the MW pulse.

class ResetSpinpump(parent: qcodes.instrument.base.InstrumentBase, name: str, amplitude: float = math.nan, duration: float = 5e-05)[source]#

Bases: qcodes.instrument.InstrumentModule

Submodule containing parameters to run the spinpump laser with a square pulse.

This should reset the NV to the \(|0\rangle\) state.

amplitude[source]#

Amplitude of reset pulse

duration[source]#

Duration of reset pulse

class Measure(parent: qcodes.instrument.base.InstrumentBase, name: str, *, pulse_amplitude: float = math.nan, pulse_duration: float = 2e-05, acq_duration: float = 5e-05, acq_delay: float = 0, acq_channel: Hashable = 0, time_source: quantify_scheduler.enums.TimeSource = TimeSource.FIRST, time_ref: quantify_scheduler.enums.TimeRef = TimeRef.START)[source]#

Bases: qcodes.instrument.InstrumentModule

Submodule containing parameters to read out the spin state of the NV center.

Excitation with a readout laser from the \(|0\rangle\) to an excited state. Acquisition of photons when decaying back into the \(|0\rangle\) state.

pulse_amplitude[source]#

Amplitude of readout pulse

pulse_duration[source]#

Readout pulse duration

acq_duration[source]#

Duration of the acquisition.

acq_delay[source]#

Delay between the start of the readout pulse and the start of the acquisition.

acq_channel[source]#

Acquisition channel of this device element.

time_source[source]#

Optional time source, in case the Timetag acquisition protocols are used. Please see that protocol for more information.

time_ref[source]#

Optional time reference, in case Timetag or TimetagTrace acquisition protocols are used. Please see those protocols for more information.

class ChargeReset(parent: qcodes.instrument.base.InstrumentBase, name: str, *, amplitude: float = math.nan, duration: float = 2e-05)[source]#

Bases: qcodes.instrument.InstrumentModule

Submodule containing parameters to run an ionization laser square pulse to reset the NV.

After resetting, the qubit should be in its negatively charged state.

amplitude[source]#

Amplitude of charge reset pulse.

duration[source]#

Duration of the charge reset pulse.

class CRCount(parent: qcodes.instrument.base.InstrumentBase, name: str, *, readout_pulse_amplitude: float = math.nan, spinpump_pulse_amplitude: float = math.nan, readout_pulse_duration: float = 2e-05, spinpump_pulse_duration: float = 2e-05, acq_duration: float = 5e-05, acq_delay: float = 0, acq_channel: Hashable = 0)[source]#

Bases: qcodes.instrument.InstrumentModule

Submodule containing parameters to run the ionization laser and the spin pump laser.

This uses a photon count to perform a charge and resonance count.

readout_pulse_amplitude[source]#

Amplitude of readout pulse

spinpump_pulse_amplitude[source]#

Amplitude of spin-pump pulse

readout_pulse_duration[source]#

Readout pulse duration

spinpump_pulse_duration[source]#

Readout pulse duration

acq_duration[source]#

Duration of the acquisition.

acq_delay[source]#

Delay between the start of the readout pulse and the start of the acquisition.

acq_channel[source]#

Default acquisition channel of this device element.

class RxyHermite(parent: qcodes.instrument.base.InstrumentBase, name: str, *, amp180: float = math.nan, skewness: float = 0, duration: float = 2e-08)[source]#

Bases: qcodes.instrument.InstrumentModule

Submodule containing parameters to perform an Rxy operation using a Hermite pulse.

amp180[source]#

Amplitude of \(\pi\) pulse.

skewness[source]#

First-order amplitude to the Hermite pulse envelope.

duration[source]#

Duration of the pi pulse.

class BasicElectronicNVElement(name: str, **kwargs)[source]#

Bases: quantify_scheduler.device_under_test.device_element.DeviceElement

A device element representing an electronic qubit in an NV center.

The submodules contain the necessary qubit parameters to translate higher-level operations into pulses. Please see the documentation of these classes.

Examples

Qubit parameters can be set through submodule attributes

from quantify_scheduler import BasicElectronicNVElement

qubit = BasicElectronicNVElement("q2")

qubit.rxy.amp180(0.1)
qubit.measure.pulse_amplitude(0.25)
qubit.measure.pulse_duration(300e-9)
qubit.measure.acq_delay(430e-9)
qubit.measure.acq_duration(1e-6)
...
Ellipsis
spectroscopy_operation: SpectroscopyOperationHermiteMW[source]#

Submodule SpectroscopyOperationHermiteMW.

ports: Ports[source]#

Submodule Ports.

clock_freqs: ClockFrequencies[source]#

Submodule ClockFrequencies.

reset: ResetSpinpump[source]#

Submodule ResetSpinpump.

charge_reset: ChargeReset[source]#

Submodule ChargeReset.

measure: Measure[source]#

Submodule Measure.

pulse_compensation: quantify_scheduler.device_under_test.transmon_element.PulseCompensationModule[source]#

Submodule PulseCompensationModule.

cr_count: CRCount[source]#

Submodule CRCount.

rxy: RxyHermite[source]#

Submodule Rxy.

_generate_config() dict[str, dict[str, quantify_scheduler.backends.graph_compilation.OperationCompilationConfig]][source]#

Generate part of the device configuration specific to a single qubit.

This method is intended to be used when this object is part of a device object containing multiple elements.

generate_device_config() quantify_scheduler.backends.graph_compilation.DeviceCompilationConfig[source]#

Generate a valid device config for the quantify-scheduler.

This makes use of the compile_circuit_to_device_with_config_validation() function.

This enables the settings of this qubit to be used in isolation.