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.