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": {
        "ref": "internal",
        "instrument_type": "Cluster",
        "cluster0_module1": {
            "instrument_type": "QCM",
            "complex_output_0": {
                "lo_name": "lo0",
                "portclock_configs": [
                    {
                        "port": "q4:mw",
                        "clock": "q4.01"
                    }
                ]
            }
        },
        "cluster0_module2": {
            "instrument_type": "QCM_RF",
            "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": {
            "instrument_type": "QRM",
            "complex_output_0": {
                "lo_name": "lo1",
                "portclock_configs": [
                    {
                        "port": "q4:res",
                        "clock": "q4.ro"
                    }
                ]
            }
        },
        "cluster0_module4": {
            "instrument_type": "QRM_RF",
            "complex_input_0": {
                "portclock_configs": [
                    {
                        "port": "q5:res",
                        "clock": "q5.ro"
                    }
                ]
            },
            "complex_output_0": {
                "portclock_configs": [
                    {
                        "port": "q0:res",
                        "clock": "q0.ro"
                    }
                ]
            }
        },
        "cluster0_module10": {
            "instrument_type": "QCM",
            "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": {
            "instrument_type": "QCM",
            "real_output_0": {
                "portclock_configs": [
                    {
                        "port": "q4:fl",
                        "clock": "cl0.baseband"
                    }
                ]
            }
        }
    },
    "lo0": {
        "instrument_type": "LocalOscillator",
        "power": 1
    },
    "lo1": {
        "instrument_type": "LocalOscillator",
        "power": 1
    }
}

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.