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:
{
"backend": "quantify_scheduler.backends.qblox_backend.hardware_compile",
"cluster0": {
"cluster0_module1": {
"complex_output_0": {
"line_gain_db": 0,
"lo_name": "lo0",
"seq0": {
"clock": "q4.01",
"interm_freq": 200000000.0,
"mixer_amp_ratio": 0.9999,
"mixer_phase_error_deg": -4.2,
"port": "q4:mw"
}
},
"instrument_type": "QCM"
},
"cluster0_module2": {
"complex_output_0": {
"line_gain_db": 0,
"seq0": {
"clock": "q5.01",
"interm_freq": 50000000.0,
"port": "q5:mw"
}
},
"instrument_type": "QCM_RF"
},
"cluster0_module3": {
"complex_output_0": {
"dc_mixer_offset_I": -0.054,
"dc_mixer_offset_Q": -0.034,
"line_gain_db": 0,
"lo_name": "lo1",
"seq0": {
"clock": "q4.ro",
"interm_freq": null,
"mixer_amp_ratio": 0.9997,
"mixer_phase_error_deg": -4.0,
"port": "q4:res"
}
},
"instrument_type": "QRM",
"ref": "external"
},
"instrument_type": "Cluster",
"ref": "internal"
},
"lo0": {
"frequency": null,
"instrument_type": "LocalOscillator",
"power": 1
},
"lo1": {
"frequency": 7200000000.0,
"instrument_type": "LocalOscillator",
"power": 1
},
"qcm0": {
"complex_output_0": {
"dc_mixer_offset_I": 0.1234,
"dc_mixer_offset_Q": -1.337,
"line_gain_db": 0,
"lo_name": "lo0",
"seq0": {
"clock": "q0.01",
"interm_freq": 50000000.0,
"mixer_amp_ratio": 0.9998,
"mixer_phase_error_deg": -4.1,
"port": "q0:mw"
}
},
"complex_output_1": {
"line_gain_db": 0,
"lo_name": "lo1",
"seq1": {
"clock": "q1.01",
"interm_freq": null,
"port": "q1:mw"
}
},
"instrument_type": "Pulsar_QCM",
"ref": "internal"
},
"qcm_rf0": {
"complex_output_0": {
"dc_mixer_offset_I": -0.045,
"dc_mixer_offset_Q": -0.035,
"line_gain_db": 0,
"seq0": {
"clock": "q2.01",
"interm_freq": 50000000.0,
"mixer_amp_ratio": 0.9996,
"mixer_phase_error_deg": -3.9,
"port": "q2:mw"
}
},
"complex_output_1": {
"line_gain_db": 0,
"lo_freq": 5000000000.0,
"seq1": {
"clock": "q3.01",
"interm_freq": null,
"port": "q3:mw"
}
},
"instrument_type": "Pulsar_QCM_RF",
"ref": "internal"
},
"qrm0": {
"complex_output_0": {
"dc_mixer_offset_I": -0.054,
"dc_mixer_offset_Q": -0.034,
"line_gain_db": 0,
"lo_name": "lo1",
"seq0": {
"clock": "q0.ro",
"interm_freq": null,
"mixer_amp_ratio": 0.9997,
"mixer_phase_error_deg": -4.0,
"port": "q0:res"
},
"seq1": {
"clock": "q0.multiplex",
"interm_freq": null,
"mixer_amp_ratio": 0.9997,
"mixer_phase_error_deg": -4.0,
"port": "q0:res"
}
},
"instrument_type": "Pulsar_QRM",
"ref": "external"
},
"qrm1": {
"complex_output_0": {
"line_gain_db": 0,
"seq0": {
"clock": "q1.ro",
"port": "q1:res"
}
},
"instrument_type": "Pulsar_QRM",
"ref": "external"
},
"qrm_rf0": {
"complex_output_0": {
"dc_mixer_offset_I": -0.046,
"dc_mixer_offset_Q": -0.036,
"line_gain_db": 0,
"lo_freq": 7200000000.0,
"seq0": {
"clock": "q2.ro",
"interm_freq": null,
"mixer_amp_ratio": 0.9999,
"mixer_phase_error_deg": -3.8,
"port": "q2:res"
}
},
"instrument_type": "Pulsar_QRM_RF",
"ref": "external"
},
"qrm_rf1": {
"complex_output_0": {
"line_gain_db": 0,
"seq0": {
"clock": "q3.ro",
"interm_freq": 100000000.0,
"port": "q3:res"
}
},
"instrument_type": "Pulsar_QRM_RF",
"ref": "external"
}
}
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).
Apart from the "backend"
, each entry in the dictionary corresponds to a device connected to the setup. In the other sections we will look at the specific instrument configurations in more detail.