Recent interface changes#
0.20.1: DistortionCorrection#
DistortionCorrectionis now deprecated in favor ofSoftwareDistortionCorrection.
0.18.0: HardwareCompilationConfig and DeviceCompilationConfig#
DeviceCompilationConfig: Thebackendfield was replaced by theconfig_typefield.If you are loading a stored
DeviceCompilationConfig(instead of relying on the device config generation of theQuantumDevice), remove the"backend"key.
HardwareCompilationConfig: Thebackendfield was removed.Only if you are already using the
HardwareCompilationConfig, remove the"backend"key and add"config_type": "quantify_scheduler.backends.qblox_backend.QbloxHardwareCompilationConfig".
0.15.0: HardwareCompilationConfig structure#
The HardwareCompilationConfig datastructure was introduced to structure the information that was previously stored in the hardware configuration dict.
The information is now divided into sub-datastructures for the "hardware_description", "hardware_options" and "connectivity".
For more information, see Hardware compilation configuration and Cluster (HardwareCompilationConfig).
0.13.0: Long waveform support#
The instruction_generated_pulses_enabled option is deprecated and will be removed in a future version. Long square pulses, staircase pulses and long ramps can be generated with the newly introduced helper functions long_square_pulse, staircase_pulse and long_ramp_pulse. More complex long waveforms can now also be created from the StitchedPulseBuilder, which generates a StitchedPulse. For more information, see Long waveform support.
0.12.0: Marker behavior for RF modules; Custom Qblox downconverter#
For the Qblox QCM-RF and QRM-RF modules, the marker override QCoDeS parameter
marker_ovr_enis now always set toFalsebefore the execution of a schedule. This way, the markers behave as expected, even if they were previously overridden. Please refer to the qblox-instruments documentation for more information about themarker_ovr_enandmarker_ovr_valueparameters.For deactivating the custom Qblox downconverter, set
downconverter_freqtonull(json) orNone(instead of0before).Note
Using
downconverter_freqrequires custom Qblox hardware, do not use otherwise.
0.11.1: Input attenuation parameter both for input and output#
Ability to set input_att parameter for both complex_input_0 and complex_output_0 on QRM-RF.
To make sure that you can use the same sequencer for both input and output
on QRM-RF with input modulation and input attenuation, you can set input_att on either input or output,
but not on both in the same module at the same time.
0.11.0: Gain and attenuation parameters#
Ability to set input/output gain/attenuation parameters via the Qblox hardware configuration file.
Note
input_gain introduced in version 0.9.0 is now renamed to input_gain_<n>.
The following parameters are available per device type:
QRM (baseband)
input_gain_I(forcomplex_output_0) orinput_gain_0(forreal_output_0)input_gain_Q(forcomplex_output_0) orinput_gain_1(forreal_output_1)
QRM-RF
output_att(forcomplex_output_0)input_att(forcomplex_input_0)
QCM-RF
output_att(forcomplex_output_0)output_att(forcomplex_output_1)
See quantify_scheduler/schemas/examples/qblox_test_mapping.json for concrete examples.
0.8.0: Dynamic Sequencer Allocation#
The Qblox backend now dynamically allocates sequencers to port-clock combinations as required. This enables the user to target an arbitrary number of port-clock combinations using the same module, as long as they are not being simultaneously targeted. Given that Qblox instruments have 6 sequencers, up to 6 port-clock combinations may be simultaneously targeted.
This change has introduced a new syntax for the hardware configuration file:
We now specify a list of
portclock_configsinstead of sequencers.Furthermore, we moved latency correction to top-level key
latency_correctionsWe provide a helper function that may be used to convert from old to new syntax:
Warning
This helper function has been removed in quantify-scheduler 0.18.0.
quantify_scheduler.backends.qblox.helpers.convert_hw_config_to_portclock_configs_specTemporarily, this method is called by the Qblox backend before compilation.
The old syntax:
hardware_cfg = {
"backend": "quantify_scheduler.backends.qblox_backend.hardware_compile",
"cluster0": {
"instrument_type": "Cluster",
"ref": "internal",
"cluster0_module1: {
"instrument_type": "QCM",
"complex_output_0": {
"lo_name": "lo0",
"seq0": {
"port": "q0:mw",
"clock": "q0.01",
"interm_freq": 50e6,
"latency_correction" : 4e-9
},
"seq1": {
"port": "q1:mw",
"clock": "q1.01",
"interm_freq": 100e6
}
},
"complex_output_1": {
"lo_name": "lo1",
"seq2": {
"port": "q2:mw",
"clock": "q2.01",
"interm_freq": None
}
},
},
"lo0": {"instrument_type": "LocalOscillator", "frequency": None, "power": 20},
"lo1": {"instrument_type": "LocalOscillator", "frequency": 7.2e9, "power": 20}
}
The new syntax:
hardware_cfg = {
"backend": "quantify_scheduler.backends.qblox_backend.QbloxHardwareCompilationConfig",
"latency_corrections": {
"q0:mw-q0.01": 4e-9
},
"cluster0": {
"instrument_type": "Cluster",
"ref": "internal",
"cluster0_module1: {
"complex_output_0": {
"instrument_type": "QCM",
"lo_name": "lo0",
"portclock_configs": [
{
"port": "q0:mw",
"clock": "q0.01",
"interm_freq": 50e6
},
{
"port": "q1:mw",
"clock": "q1.01",
"interm_freq": 100e6
}
]
},
"complex_output_1": {
"lo_name": "lo1",
"portclock_configs": [
{
"port": "q2:mw",
"clock": "q2.01",
"interm_freq": None
}
]
}
},
"lo0": {"instrument_type": "LocalOscillator", "frequency": None, "power": 20},
"lo1": {"instrument_type": "LocalOscillator", "frequency": 7.2e9, "power": 20}
}