Cluster¶
The Cluster driver is separated into three layers:
QCoDeS driver: Instrument driver based on QCoDeS and the instrument’s native interface.
Native interface: Instrument API that provides control over the instrument and is an extension of the the SCPI interface.
SCPI interface: Instrument API based on the SCPI standard which in turn is based on IEEE488.2.
Warning
This is a preliminary driver for the Cluster that is currently under development.
QCoDeS driver¶
- class qblox_instruments.Cluster(*args: Any, **kwargs: Any)[source]¶
Bases:
Cluster
,Instrument
This class connects QCoDeS to the Cluster native interface.
- __init__(name: str, identifier: Optional[str] = None, port: Optional[int] = None, debug: Optional[int] = None, dummy_cfg: Optional[Dict] = None)[source]¶
Creates Cluster QCoDeS class and adds all relevant instrument parameters. These instrument parameters call the associated methods provided by the native interface.
- Parameters
name (str) – Instrument name.
identifier (Optional[str]) – Instrument identifier. See
resolve()
. If None, the instrument is identified by name.port (Optional[int]) – Override for the TCP port through which we should connect.
debug (Optional[int]) – Debug level (0 | None = normal, 1 = no version check, >1 = no version or error checking).
dummy_cfg (Optional[Dict]) – Configure as dummy using this configuration. For each slot that needs to be occupied by a module add the slot index as key and specify the type of module in the slot using the type
ClusterType
.
QCoDeS instrument parameters¶
QCoDeS parameters generated by Cluster
.
Cluster.IDN
¶
Please see QCoDeS for a description.
- Properties
value: Anything
Cluster.reference_source
¶
Sets/gets reference source (‘internal’ = internal 10 MHz, ‘external’ = external 10 MHz).
- Properties
value: Enum: {‘external’, ‘internal’}
Cluster.ext_trigger_input_delay
¶
Sets/gets the trigger address to which the external inputtrigger is mapped to the trigger network (T1 to T15).
- Properties
unit: ps
value: Ints 0<=v<=1209, Multiples of 39
Cluster.ext_trigger_input_trigger_en
¶
Enable/disable the external input trigger.
- Properties
value: Boolean
Cluster.ext_trigger_input_trigger_address
¶
Sets/gets the external input trigger address to which the input trigger is mapped to the trigger network (T1 to T15).
- Properties
value: Numbers 1<=v<=15
Cluster.trigger1_monitor_count
¶
Gets the trigger monitor count from trigger address T1.
- Properties
value: on
Cluster.trigger2_monitor_count
¶
Gets the trigger monitor count from trigger address T2.
- Properties
value: on
Cluster.trigger3_monitor_count
¶
Gets the trigger monitor count from trigger address T3.
- Properties
value: on
Cluster.trigger4_monitor_count
¶
Gets the trigger monitor count from trigger address T4.
- Properties
value: on
Cluster.trigger5_monitor_count
¶
Gets the trigger monitor count from trigger address T5.
- Properties
value: on
Cluster.trigger6_monitor_count
¶
Gets the trigger monitor count from trigger address T6.
- Properties
value: on
Cluster.trigger7_monitor_count
¶
Gets the trigger monitor count from trigger address T7.
- Properties
value: on
Cluster.trigger8_monitor_count
¶
Gets the trigger monitor count from trigger address T8.
- Properties
value: on
Cluster.trigger9_monitor_count
¶
Gets the trigger monitor count from trigger address T9.
- Properties
value: on
Cluster.trigger10_monitor_count
¶
Gets the trigger monitor count from trigger address T10.
- Properties
value: on
Cluster.trigger11_monitor_count
¶
Gets the trigger monitor count from trigger address T11.
- Properties
value: on
Cluster.trigger12_monitor_count
¶
Gets the trigger monitor count from trigger address T12.
- Properties
value: on
Cluster.trigger13_monitor_count
¶
Gets the trigger monitor count from trigger address T13.
- Properties
value: on
Cluster.trigger14_monitor_count
¶
Gets the trigger monitor count from trigger address T14.
- Properties
value: on
Cluster.trigger15_monitor_count
¶
Gets the trigger monitor count from trigger address T15.
- Properties
value: on
Cluster.trigger_monitor_latest
¶
Gets the trigger address which was triggered last (T1 to T15).
- Properties
value: on
QCoDeS module parameters¶
Besides instrument parameters, the Cluster also has parameters for each module in the Cluster which are described in QCM-QRM.
Native interface¶
- class qblox_instruments.native.Cluster(identifier: str, port: Optional[int] = None, debug: Optional[int] = None, dummy_cfg: Optional[Dict] = None)[source]¶
Bases:
Cluster
Class that provides the native API for the Cluster. It provides methods to control all functions and features provided by the Cluster.
Note that the bulk of the functionality of this class is contained in the
generic_func
module so that this functionality can be shared between instruments.- __init__(identifier: str, port: Optional[int] = None, debug: Optional[int] = None, dummy_cfg: Optional[Dict] = None)[source]¶
Creates Cluster native interface object.
- Parameters
identifier (str) – Instrument identifier. See
resolve()
for more information.port (Optional[int]) – Instrument port. If None, this will be determined automatically.
debug (Optional[int]) – Debug level (0 | None = normal, 1 = no version check, >1 = no version or error checking).
dummy_cfg (Optional[Dict]) – Configure as dummy using this configuration. For each slot that needs to be occupied by a module add the slot index as key and specify the type of module in the slot using the type
ClusterType
.
- Raises
RuntimeError – Instrument cannot be reached due to invalid IP configuration.
ConnectionError – Instrument type is not supported.
- property instrument_class: InstrumentClass¶
Get instrument class (e.g. Pulsar, Cluster).
- Returns
Instrument class
- Return type
- property instrument_type: InstrumentType¶
Get instrument type (e.g. MM, QRM, QCM).
- Returns
Instrument type
- Return type
- get_idn() Dict [source]¶
Get device identity and build information and convert them to a dictionary.
- Returns
Dictionary containing manufacturer, model, serial number and build information. The build information is subdivided into FPGA firmware, kernel module software, application software and driver software build information. Each of those consist of the version, build date, build Git hash and Git build dirty indication.
- Return type
- get_system_state() SystemState [source]¶
Get general system state and convert it to a
SystemState
.- Returns
Tuple containing general system status and corresponding flags.
- Return type
- arm_sequencer(slot: Optional[int] = None, sequencer: Optional[int] = None) None [source]¶
Prepare the indexed sequencer to start by putting it in the armed state. If no sequencer index is given, all sequencers are armed. Any sequencer that was already running is stopped and rearmed. If an invalid sequencer index is given, an error is set in system error.
- Parameters
sequencer (Optional[int]) – Sequencer index.
- Raises
RuntimeError – An error is reported in system error and debug <= 1. All errors are read from system error and listed in the exception.
- start_sequencer(slot: Optional[int] = None, sequencer: Optional[int] = None) None [source]¶
Start the indexed sequencer, thereby putting it in the running state. If an invalid sequencer index is given or the indexed sequencer was not yet armed, an error is set in system error. If no sequencer index is given, all armed sequencers are started and any sequencer not in the armed state is ignored. However, if no sequencer index is given and no sequencers are armed, and error is set in system error.
- Parameters
sequencer (Optional[int]) – Sequencer index.
- Raises
RuntimeError – An error is reported in system error and debug <= 1. All errors are read from system error and listed in the exception.
- stop_sequencer(slot: Optional[int] = None, sequencer: Optional[int] = None) None [source]¶
Stop the indexed sequencer, thereby putting it in the stopped state. If an invalid sequencer index is given, an error is set in system error. If no sequencer index is given, all sequencers are stopped.
- Parameters
sequencer (Optional[int]) – Sequencer index.
- Raises
RuntimeError – An error is reported in system error and debug <= 1. All errors are read from system error and listed in the exception.
- get_sequencer_state(slot: int, sequencer: int, timeout: int = 0, timeout_poll_res: float = 0.02) SequencerState [source]¶
Get the sequencer state. If an invalid sequencer index is given, an error is set in system error. If the timeout is set to zero, the function returns the state immediately. If a positive non-zero timeout is set, the function blocks until the sequencer completes. If the sequencer hasn’t stopped before the timeout expires, a TimeoutError is thrown.
- Parameters
- Returns
Tuple containing sequencer status and corresponding flags.
- Return type
- Raises
TimeoutError – Timeout
- get_waveforms(slot: int, sequencer: int) Dict [source]¶
Get all waveforms and weigths in the AWG waveform list of indexed sequencer. The returned dictionary is structured as follows:
name: waveform name.
data: waveform samples in a range of 1.0 to -1.0.
- index: waveform index used by the sequencer Q1ASM program to refer
to the waveform.
- get_weights(slot: int, sequencer: int) Dict [source]¶
Get all weigths in the acquisition weight lists of indexed sequencer. The returned dictionary is structured as follows:
-name : weight name.
data: weight samples in a range of 1.0 to -1.0.
- index: weight index used by the sequencer Q1ASM program to refer
to the weight.
- Parameters
sequencer (int) – Sequencer index.
- Returns
Dictionary with weights.
- Return type
- Raises
NotImplementedError – Functionality not available on this module.
- get_acquisition_state(slot: int, sequencer: int, timeout: int = 0, timeout_poll_res: float = 0.02) bool [source]¶
Return acquisition binning completion state of the indexed sequencer. If an invalid sequencer is given, an error is set in system error. If the timeout is set to zero, the function returns the state immediately. If a positive non-zero timeout is set, the function blocks until the acquisition binning completes. If the acquisition hasn’t completed before the timeout expires, a TimeoutError is thrown. Note that when sequencer state checking is enabled, the sequencer state is checked using get_sequencer_state with the selected timeout period first and then the acquisition state is checked with the same timeout period. This means that the total timeout period is two times the set timeout period.
- Parameters
- Returns
Indicates the acquisition binning completion state (False = uncompleted, True = completed).
- Return type
- Raises
TimeoutError – Timeout
NotImplementedError – Functionality not available on this module.
- delete_acquisition_data(slot: int, sequencer: int, name: str = '', all: bool = False) None [source]¶
Delete data from an acquisition specified by name in the acquisition list of indexed sequencer or delete data in all acquisitions if all is True.
- Parameters
- Raises
NotImplementedError – Functionality not available on this module.
- store_scope_acquisition(slot: int, sequencer: int, name: str) None [source]¶
After an acquisition has completed, store the scope acquisition results in the acquisition specified by name of the indexed sequencers. If an invalid sequencer index is given an error is set in system error. To get access to the acquisition results, the sequencer will be stopped when calling this function.
- Parameters
- Raises
NotImplementedError – Functionality not available on this module.
- get_acquisitions(slot: int, sequencer: int) Dict [source]¶
Get all acquisitions in acquisition lists of indexed sequencer. The acquisition scope and bin data is normalized to a range of -1.0 to 1.0 taking both the bit widths of the processing path and average count into considaration. For the binned integration results, the integration length is not handled during normalization and therefore these values have to be divided by their respective integration lenghts. The returned dictionary is structured as follows:
name: acquisition name
- index: acquisition index used by the sequencer Q1ASM program to
refer to the acquisition.
acquisition: acquisition dictionary
scope: Scope data
path0: input path 0
data: acquisition samples in a range of 1.0 to -1.0.
- out-of-range: out-of-range indication for the entire
acquisition (False = in-range, True = out-of-range).
avg_cnt: number of averages.
path1: input path 1
data: acquisition samples in a range of 1.0 to -1.0.
- out-of-range: out-of-range indication for the entire
acquisition (False = in-range, True = out-of-range).
avg_cnt: number of averages.
bins: bin data
integration: integration data
path_0: input path 0 integration result bin list
path_1: input path 1 integration result bin list
threshold: threshold result bin list
valid: list of valid indications per bin
avg_cnt: list of number of averages per bin
- Parameters
sequencer (int) – Sequencer index.
- Returns
Dictionary with acquisitions.
- Return type
- Raises
NotImplementedError – Functionality not available on this module.
- set_dummy_binned_acquisition_data(slot_idx: int, sequencer: int, acq_index_name: str, data: Iterable[Optional[DummyBinnedAcquisitionData]])[source]¶
Set dummy binned acquisition data for the dummy.
- Parameters
slot_idx (int) – Slot of the hardware you want to set the data to on a cluster.
sequencer (int) – Sequencer.
acq_index_name (str) – Acquisition index name.
data (Iterable[Union[DummyBinnedAcquisitionData, None]]) – Dummy data for the binned acquisition. An iterable of all the bin values.
- set_dummy_scope_acquisition_data(slot_idx: int, sequencer: Optional[int], data: DummyScopeAcquisitionData)[source]¶
Set dummy scope acquisition data for the dummy.
- Parameters
slot_idx (int) – Slot of the hardware you want to set the data to on a cluster.
sequencer (Union[int, None]) – Sequencer.
data (DummyScopeAcquisitionData) – Dummy data for the scope acquisition.
SCPI interface¶
- class qblox_instruments.scpi.Cluster(transport: Transport, debug: int = 0)[source]¶
Bases:
Ieee488_2
This interface provides an API for the mandatory and required SCPI calls and adds Pulsar related functionality (see SCPI).
- __init__(transport: Transport, debug: int = 0)[source]¶
Creates SCPI interface object.
- Parameters
- Raises
ConnectionError – Debug level is 0 and there is a device or version mismatch.
- get_system_error() str [source]¶
Get system error from queue (see SCPI).
- Parameters
None –
- Returns
System error description string.
- Return type
- get_num_system_error() int [source]¶
Get number of system errors (see SCPI).
- Parameters
None –
- Returns
Current number of system errors.
- Return type
- set_name(name: str) None [source]¶
Sets the customer-specified name of the instrument. The name must not contain any newlines, backslashes, or double quotes.
- set_ip_config(config: str) None [source]¶
Reconfigures the IP address of this device. The configuration will not go into effect until reboot() is called or the device is power-cycled.
- Parameters
config (str) –
- IP configuration. May be one of the following things:
an IPv4 address including prefix length, for example 192.168.0.2/24, - the string dhcp to enable IPv4 DHCP, - an IPv6 address including prefix length, for example 1:2::3:4/64, or - a semicolon-separated combination of an IPv4 configuration (IP address or dhcp) and an IPv6 address.
- Return type
None
- Raises
- get_ip_config() str [source]¶
Returns the IP address configuration that will go into effect when the device reboots.
- Parameters
None –
- Returns
- IP configuration. Can be one of the following things:
an IPv4 address including prefix length, for example 192.168.0.2/24, - the string dhcp to enable IPv4 DHCP, - an IPv6 address including prefix length, for example 1:2::3:4/64, or - a semicolon-separated combination of an IPv4 configuration (IP address or dhcp) and an IPv6 address.
- Return type
- Raises
Exception – An error is reported in system error and debug <= 1. All errors are read from system error and listed in the exception.
- reboot() None [source]¶
Reboots the instrument.
- Parameters
None –
- Return type
None
- Raises
Exception – An error is reported in system error and debug <= 1. All errors are read from system error and listed in the exception.
- get_status_byte() int [source]¶
Get status byte register. Register is only cleared when feeding registers are cleared (see SCPI).
- get_service_request_enable() int [source]¶
Get service request enable register. The register is cleared after reading it (see SCPI).
- set_standard_event_status_enable(reg: int) None [source]¶
Set standard event status enable register (see SCPI).
- get_standard_event_status_enable() int [source]¶
Get standard event status enable register. The register is cleared after reading it (see SCPI).
- get_standard_event_status() int [source]¶
Get standard event status register. The register is cleared after reading it (see SCPI).
- set_operation_complete() None [source]¶
Set device in operation complete query active state (see SCPI).
- Parameters
None –
- Return type
None
- Raises
Exception – An error is reported in system error and debug <= 1. All errors are read from system error and listed in the exception.
- wait() None [source]¶
Wait until operations completed before continuing (see SCPI).
- Parameters
None –
- Return type
None
- Raises
Exception – An error is reported in system error and debug <= 1. All errors are read from system error and listed in the exception.
- preset_system_status() None [source]¶
Preset system status registers. Connects general system status flags for PLL unlock and temperature out-of-range indications to event status enable, status questionable temperature and status questionable frequency registers respectively (see SCPI).
- Parameters
None –
- Return type
None
- Raises
Exception – An error is reported in system error and debug <= 1. All errors are read from system error and listed in the exception.
- set_questionable_enable(reg: int) None [source]¶
Set status questionable enable register (see SCPI).
- identify() None [source]¶
Toggle frontpanel LEDs to visually identify the instrument.
- Parameters
None –
- Return type
None
- Raises
Exception – An error is reported in system error and debug <= 1. All errors are read from system error and listed in the exception.
- get_current_fpga_temperature(slot: int) float [source]¶
Get current FPGA junction temperature (inside device).
- get_maximum_fpga_temperature(slot: int) float [source]¶
Get maximum FPGA junction temperature since boot or clear (inside device).
- get_current_carrier_temperature(slot: int) float [source]¶
Get current carrier board temperature (inside device).
- get_maximum_carrier_temperature(slot: int) float [source]¶
Get maximum carrier board temperature since boot or clear (inside device).
- get_current_bp_temperature_0() float [source]¶
Get current backplane board temperature from sensor 0 (inside device).
- get_maximum_bp_temperature_0() float [source]¶
Get maximum backplane board temperature from sensor 0 since boot or clear (inside device).
- get_current_bp_temperature_1() float [source]¶
Get current backplane board temperature from sensor 1 (inside device).
- get_maximum_bp_temperature_1() float [source]¶
Get maximum backplane board temperature from sensor 1 since boot or clear (inside device).
- get_current_bp_temperature_2() float [source]¶
Get current backplane board temperature from sensor 2 (inside device).
- get_maximum_bp_temperature_2() float [source]¶
Get maximum backplane board temperature from sensor 2 since boot or clear (inside device).
- get_assembler_status(slot: int) bool [source]¶
Get assembler status. Refer to the assembler log to get more information regarding the assembler result.
Supporting classes and functions¶
- Please have a look at: