Usage of the backend
Configuring the backend is done by specifying a python dictionary (or loading it from a JSON file) that describes your experimental setup. An example of such a config is shown below.
Here the entry "backend": "quantify_scheduler.backends.qblox_backend.hardware_compile"
specifies to the scheduler
that we are using the Qblox backend (specifically the hardware_compile()
function).
The general structure of this hardware compilation configuration file is explained in the Hardware compilation configuration section of the User guide. In the other sections, we will look at the specific instrument configurations in more detail.
{
"backend": "quantify_scheduler.backends.qblox_backend.hardware_compile",
"hardware_description": {
"cluster0": {
"hardware_type": "Qblox",
"instrument_type": "Cluster",
"ref": "internal",
"modules": {
"1": {
"module_type": "QCM"
},
"2": {
"module_type": "QCM_RF"
},
"3": {
"module_type": "QRM"
},
"4": {
"module_type": "QRM_RF"
},
"10": {
"module_type": "QCM"
},
"12": {
"module_type": "QCM"
}
}
},
"lo0": {
"hardware_type": "LocalOscillator",
"power": 1
},
"lo1": {
"hardware_type": "LocalOscillator",
"power": 1
}
},
"hardware_options": {
"latency_corrections": {
"q4:mw-q4.01": 8e-09,
"q5:mw-q5.01": 4e-09
},
"distortion_corrections": {
"q0:fl-cl0.baseband": {
"filter_func": "scipy.signal.lfilter",
"input_var_name": "x",
"kwargs": {
"b": [
0,
0.25,
0.5
],
"a": [
1
]
},
"clipping_values": [
-2.5,
2.5
]
}
},
"modulation_frequencies": {
"q0:res-q0.ro": {
"interm_freq": null,
"lo_freq": 7800000000.0
},
"q0:mw-q0.01": {
"interm_freq": 50000000.0,
"lo_freq": null
},
"q4:mw-q4.01": {
"interm_freq": 200000000.0,
"lo_freq": null
},
"q4:res-q4.ro": {
"interm_freq": null,
"lo_freq": 7200000000.0
},
"q5:mw-q5.01": {
"interm_freq": 50000000.0,
"lo_freq": null
},
"q5:res-q5.ro": {
"interm_freq": 50000000.0
},
"q6:mw-q6.01": {
"lo_freq": 5000000000.0
}
},
"mixer_corrections": {
"q4:mw-q4.01": {
"amp_ratio": 0.9999,
"phase_error": -4.2
},
"q4:res-q4.ro": {
"dc_offset_i": -0.054,
"dc_offset_q": -0.034,
"amp_ratio": 0.9997,
"phase_error": -4.0
}
},
"power_scaling": {
"q0:mw-q0.01": {
"output_att": 4
},
"q0:res-q0.ro": {
"output_att": 12
},
"q4:res-q4.ro": {
"input_gain": [
2,
3
]
},
"q5:mw-q5.01": {
"output_att": 4
},
"q5:res-q5.ro": {
"input_att": 10
},
"q6:mw-q6.01": {
"output_att": 6
}
}
},
"connectivity": {
"cluster0": {
"cluster0_module1": {
"complex_output_0": {
"lo_name": "lo0",
"portclock_configs": [
{
"port": "q4:mw",
"clock": "q4.01"
}
]
}
},
"cluster0_module2": {
"complex_output_0": {
"portclock_configs": [
{
"port": "q0:mw",
"clock": "q0.01"
},
{
"port": "q5:mw",
"clock": "q5.01"
}
]
},
"complex_output_1": {
"portclock_configs": [
{
"port": "q6:mw",
"clock": "q6.01"
}
]
}
},
"cluster0_module3": {
"complex_output_0": {
"lo_name": "lo1",
"portclock_configs": [
{
"port": "q4:res",
"clock": "q4.ro"
}
]
}
},
"cluster0_module4": {
"complex_input_0": {
"portclock_configs": [
{
"port": "q5:res",
"clock": "q5.ro"
}
]
},
"complex_output_0": {
"portclock_configs": [
{
"port": "q0:res",
"clock": "q0.ro"
}
]
}
},
"cluster0_module10": {
"real_output_0": {
"portclock_configs": [
{
"port": "q0:fl",
"clock": "cl0.baseband"
}
]
},
"real_output_1": {
"portclock_configs": [
{
"port": "q1:fl",
"clock": "cl0.baseband"
}
]
},
"real_output_2": {
"portclock_configs": [
{
"port": "q2:fl",
"clock": "cl0.baseband"
}
]
},
"real_output_3": {
"portclock_configs": [
{
"port": "q3:fl",
"clock": "cl0.baseband"
}
]
}
},
"cluster0_module12": {
"real_output_0": {
"portclock_configs": [
{
"port": "q4:fl",
"clock": "cl0.baseband"
}
]
}
}
}
}
}