Stack Configurations

class squidasm.run.stack.config.StackConfig(**data)

Configuration for a single stack (i.e. end node).

name: str

Name of the stack.

qdevice_typ: str

Type of the quantum device.

qdevice_cfg: Any

Configuration of the quantum device, allowed configuration depends on type.

classmethod from_file(path)

Load the configuration from a YAML file.

Return type:

StackConfig

classmethod perfect_generic_config(name)

Create a configuration for a stack with a generic quantum device without any noise or errors.

Return type:

StackConfig

Generic QDevice

The generic qdevice implements the following native gates:

  • X, Y, Z

  • Rot_X, Rot_Y, Rot_Z

  • H

  • CNOT, CZ

The rotation gates will rotate the qubit around the specified axis with a given angle.

class squidasm.run.stack.config.GenericQDeviceConfig(**data)

The configuration for a generic quantum device.

classmethod from_file(path)

Load the configuration from a YAML file.

Return type:

Any

classmethod perfect_config(num_qubits=100)

Create a configuration for a device without any noise or errors.

Parameters:

num_qubits (int) – number of qubits in the device.

Return type:

GenericQDeviceConfig

num_qubits: int

Number of qubits in the quantum device.

num_comm_qubits: int

Number of communication qubits. Not used.

T1: float

Energy or longitudinal relaxation time in nanoseconds.

T2: float

Dephasing or transverse relaxation time in nanoseconds.

init_time: float

Qubit initialization time in nanoseconds.

single_qubit_gate_time: float

Single qubit gate execution time in nanoseconds.

two_qubit_gate_time: float

Two qubit gate execution time in nanoseconds.

measure_time: float

Qubit measurement time in nanoseconds.

single_qubit_gate_depolar_prob: float

Probability of error in each single qubit gate operation.

two_qubit_gate_depolar_prob: float

Probability of error in each two qubit gate operation.

external_params: Optional[dict]

Dictionary of extra parameters that have no direct impact on the qdevice model, but are physically associated with the qdevice. It is typically used for parameters that relate to the entanglement generation, such as emission_fidelity.

NV QDevice

The NV qdevice implements the following native gates:

  • Rot_X, Rot_Y, Rot_Z

  • CXDIR, CYDIR

The CXDIR and CYDIR gates will rotate the target qubit like a Rot_X or Rot_Y gate with a given angle, but the direction of the rotation is controlled by the control qubit. Specifically:

\[CXDIR(\theta) = \ket{0}\bra{0} \otimes Rot\_X(\theta) + \ket{1}\bra{1} \otimes Rot\_X(-\theta)\]

The topology of the NV qdevice only allows for CXDIR and CYDIR gates between the electron and the carbon qubits.

class squidasm.run.stack.config.NVQDeviceConfig(**data)

The configuration for a nitrogen vacancy (NV) quantum device.

classmethod from_file(path)

Load the configuration from a YAML file.

Return type:

Any

classmethod perfect_config(num_qubits=100)

Create a configuration for a device without any noise or errors.

Parameters:

num_qubits (int) – number of qubits in the device.

Return type:

NVQDeviceConfig

num_qubits: int

Number of qubits in the quantum device.

electron_init_depolar_prob: float

Probability of error during electron initialization.

electron_single_qubit_depolar_prob: float

Probability of error during electron single gate operation.

prob_error_0: float

Probability of measuring a 1 instead of 0 in an electron measurement.

prob_error_1: float

Probability of measuring a 0 instead of 1 in an electron measurement.

carbon_init_depolar_prob: float

Probability of error during carbon initialization.

carbon_z_rot_depolar_prob: float

Probability of error during carbon single gate operation.

ec_gate_depolar_prob: float

Probability of error during native NV two qubit operation between electron and carbon.

electron_T1: float

Energy or longitudinal relaxation time in nanoseconds for the electron.

electron_T2: float

Dephasing or transverse relaxation time in nanoseconds for the electron.

carbon_T1: float

Energy or longitudinal relaxation time in nanoseconds for carbon qubits.

carbon_T2: float

Dephasing or transverse relaxation time in nanoseconds for carbon qubits..

carbon_init: float

Carbon qubit initialization time in nanoseconds.

carbon_rot_x: float

Carbon x rotation gate time in nanoseconds.

carbon_rot_y: float

Carbon y rotation gate time in nanoseconds.

carbon_rot_z: float

Carbon z rotation gate time in nanoseconds.

electron_init: float

Electron qubit initialization time in nanoseconds.

electron_rot_x: float

Electron x rotation gate time in nanoseconds.

electron_rot_y: float

Electron y rotation gate time in nanoseconds.

electron_rot_z: float

Electron z rotation gate time in nanoseconds.

ec_controlled_dir_x: float

Two qubit controlled x rotation gate time in nanoseconds.

ec_controlled_dir_y: float

Two qubit controlled y rotation gate time in nanoseconds.

measure: float

Electron measurement time in nanoseconds.

external_params: Optional[dict]

Dictionary of extra parameters that have no direct impact on the qdevice model, but are physically associated with the qdevice. It is typically used for parameters that relate to the entanglement generation, such as emission_fidelity.