Recent interface changes

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 new syntax for the hardware configuration file:

  1. We now specify a list of portclock_configs instead of sequencers.

  2. Furthermore, we moved latency correction to top-level key latency_corrections

  3. We provide a helper function that may be used to convert from old to new syntax:

Old syntax:

hardware_cfg = {
    "backend": "quantify_scheduler.backends.qblox_backend.hardware_compile",
    "qcm0": {
        "instrument_type": "Pulsar_QCM",
        "ref": "internal",
        "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}
}

New syntax:

hardware_cfg = {
    "backend": "quantify_scheduler.backends.qblox_backend.hardware_compile",
    "latency_corrections": {
        "q0:mw-q0.01": 4e-9
    },
    "qcm0": {
        "instrument_type": "Pulsar_QCM",
        "ref": "internal",
        "complex_output_0": {
            "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}
}