diff --git a/_utils/calibrate_octaves.py b/_utils/calibrate_octaves.py new file mode 100644 index 00000000..bd743f78 --- /dev/null +++ b/_utils/calibrate_octaves.py @@ -0,0 +1,10 @@ +from qibolab import create_platform + +platform = create_platform("tii1qs_xld1000") + +platform.connect() + +qm = platform.instruments["qm"] +qm.calibrate_mixers(list(platform.qubits.values())) + +platform.disconnect() diff --git a/tii1qs_xld1000/calibration_db.json b/tii1qs_xld1000/calibration_db.json new file mode 100644 index 00000000..b7bd8d31 --- /dev/null +++ b/tii1qs_xld1000/calibration_db.json @@ -0,0 +1,382 @@ +{ + "modes": { + "1": { + "octave_name": "octave1", + "octave_channel": 1 + }, + "2": { + "octave_name": "octave1", + "octave_channel": 5 + } + }, + "lo_modes": { + "1": { + "mode_id": 1, + "lo_freq": 7200000000, + "gain": 0.0, + "latest": 3 + }, + "2": { + "mode_id": 2, + "lo_freq": 5700000000, + "gain": 0.0, + "latest": 16 + }, + "3": { + "mode_id": 1, + "lo_freq": 7200000000, + "gain": -20.0, + "latest": 15 + }, + "4": { + "mode_id": 1, + "lo_freq": 7200000000, + "gain": -12.0, + "latest": 11 + } + }, + "lo_cal": { + "1": { + "i0": -0.007084891057857912, + "q0": -0.0037503475781198825, + "lo_mode_id": 1, + "dc_gain": -0.006382994517186713, + "dc_phase": -0.037909540123185925, + "temperature": 55.4375, + "timestamp": 1707997127.0055819, + "method": "auto" + }, + "2": { + "i0": 0.005540087064494878, + "q0": 0.013584123933690531, + "lo_mode_id": 2, + "dc_gain": -0.015966685187811747, + "dc_phase": 0.036147940500258116, + "temperature": 57.1875, + "timestamp": 1707997137.8742175, + "method": "auto" + }, + "3": { + "i0": -0.007150298203847077, + "q0": -0.003681236357795724, + "lo_mode_id": 1, + "dc_gain": -0.0067166872254205146, + "dc_phase": -0.037646633859200584, + "temperature": 55.4375, + "timestamp": 1707997185.1473517, + "method": "auto" + }, + "4": { + "i0": 0.005593702056751237, + "q0": 0.013624323045313884, + "lo_mode_id": 2, + "dc_gain": -0.01615298518671693, + "dc_phase": 0.03618386046905906, + "temperature": 57.1875, + "timestamp": 1707997199.3525617, + "method": "auto" + }, + "5": { + "i0": -0.008167293483263742, + "q0": -0.004278715504681908, + "lo_mode_id": 3, + "dc_gain": -0.00683252071203877, + "dc_phase": -0.03656498141911376, + "temperature": 55.875, + "timestamp": 1708009215.400701, + "method": "auto" + }, + "6": { + "i0": 0.0055360748027866846, + "q0": 0.013524575943806887, + "lo_mode_id": 2, + "dc_gain": -0.016242522524091085, + "dc_phase": 0.03611133259838432, + "temperature": 57.5, + "timestamp": 1708009224.4162471, + "method": "auto" + }, + "7": { + "i0": -0.007027376960722282, + "q0": -0.005168181900082347, + "lo_mode_id": 3, + "dc_gain": -0.011616984072514325, + "dc_phase": -0.03956418422823939, + "temperature": 55.875, + "timestamp": 1708009310.055034, + "method": "auto" + }, + "8": { + "i0": 0.005515330301401605, + "q0": 0.013584178004109956, + "lo_mode_id": 2, + "dc_gain": -0.016009718168371045, + "dc_phase": 0.03575795075808891, + "temperature": 57.4375, + "timestamp": 1708009319.1679537, + "method": "auto" + }, + "9": { + "i0": -0.007029538087917532, + "q0": -0.0031846698637926947, + "lo_mode_id": 3, + "dc_gain": -0.00860120485872995, + "dc_phase": -0.03372875279776255, + "temperature": 55.875, + "timestamp": 1708009760.1945362, + "method": "auto" + }, + "10": { + "i0": 0.0054983300084039555, + "q0": 0.013613714037487184, + "lo_mode_id": 2, + "dc_gain": -0.01634426687343471, + "dc_phase": 0.03601883381148697, + "temperature": 57.4375, + "timestamp": 1708009774.4893403, + "method": "auto" + }, + "11": { + "i0": -0.007308368453035706, + "q0": -0.0034987368684725644, + "lo_mode_id": 4, + "dc_gain": -0.0072899635509162675, + "dc_phase": -0.03836138660806452, + "temperature": 55.625, + "timestamp": 1708421686.8045206, + "method": "auto" + }, + "12": { + "i0": 0.005614429857541018, + "q0": 0.01368642198012816, + "lo_mode_id": 2, + "dc_gain": -0.01589204605011696, + "dc_phase": 0.036449888658833425, + "temperature": 57.3125, + "timestamp": 1708421696.1020849, + "method": "auto" + }, + "13": { + "i0": -0.0075913137753365004, + "q0": -0.003998062873334726, + "lo_mode_id": 3, + "dc_gain": -0.007156824473899981, + "dc_phase": -0.03855402994936123, + "temperature": 55.625, + "timestamp": 1709460806.1852753, + "method": "auto" + }, + "14": { + "i0": 0.005567020549403408, + "q0": 0.013690912653732913, + "lo_mode_id": 2, + "dc_gain": -0.01616541722620779, + "dc_phase": 0.03634823655761868, + "temperature": 57.4375, + "timestamp": 1709460815.5605762, + "method": "auto" + }, + "15": { + "i0": -0.007555827033139296, + "q0": -0.003906656321633174, + "lo_mode_id": 3, + "dc_gain": -0.007488889019402922, + "dc_phase": -0.03872735112886452, + "temperature": 55.25, + "timestamp": 1709535770.4693468, + "method": "auto" + }, + "16": { + "i0": 0.005595878655575251, + "q0": 0.013781731401234858, + "lo_mode_id": 2, + "dc_gain": -0.016324451424989506, + "dc_phase": 0.037013778105523976, + "temperature": 57.1875, + "timestamp": 1709535779.7092018, + "method": "auto" + } + }, + "if_modes": { + "1": { + "lo_mode_id": 1, + "if_freq": 92027169, + "latest": 3 + }, + "2": { + "lo_mode_id": 2, + "if_freq": 96353976, + "latest": 4 + }, + "3": { + "lo_mode_id": 3, + "if_freq": 92127169, + "latest": 9 + }, + "4": { + "lo_mode_id": 2, + "if_freq": 96250000, + "latest": 10 + }, + "5": { + "lo_mode_id": 4, + "if_freq": 92127169, + "latest": 11 + }, + "6": { + "lo_mode_id": 2, + "if_freq": 96204441, + "latest": 12 + }, + "7": { + "lo_mode_id": 3, + "if_freq": 92827169, + "latest": 13 + }, + "8": { + "lo_mode_id": 2, + "if_freq": 83737200, + "latest": 14 + }, + "9": { + "lo_mode_id": 3, + "if_freq": 92427169, + "latest": 15 + }, + "10": { + "lo_mode_id": 2, + "if_freq": 83730200, + "latest": 16 + } + }, + "if_cal": { + "1": { + "if_mode_id": 1, + "gain": -0.007360398972448068, + "phase": -0.06465671354290509, + "temperature": 55.4375, + "timestamp": 1707997127.010914, + "method": "auto" + }, + "2": { + "if_mode_id": 2, + "gain": -0.015917572193397657, + "phase": 0.031197635339684886, + "temperature": 57.1875, + "timestamp": 1707997137.879775, + "method": "auto" + }, + "3": { + "if_mode_id": 1, + "gain": -0.009132193801938278, + "phase": -0.0637737858321658, + "temperature": 55.4375, + "timestamp": 1707997190.2725003, + "method": "auto" + }, + "4": { + "if_mode_id": 2, + "gain": -0.018000860743824256, + "phase": 0.03085405629289496, + "temperature": 57.1875, + "timestamp": 1707997199.3577943, + "method": "auto" + }, + "5": { + "if_mode_id": 3, + "gain": NaN, + "phase": NaN, + "temperature": 55.875, + "timestamp": 1708009215.4134812, + "method": "auto" + }, + "6": { + "if_mode_id": 4, + "gain": -0.016461075322099013, + "phase": 0.031098781079080616, + "temperature": 57.5, + "timestamp": 1708009224.4250226, + "method": "auto" + }, + "7": { + "if_mode_id": 3, + "gain": NaN, + "phase": NaN, + "temperature": 55.875, + "timestamp": 1708009310.062477, + "method": "auto" + }, + "8": { + "if_mode_id": 4, + "gain": -0.016649260351969546, + "phase": 0.030088510499716285, + "temperature": 57.4375, + "timestamp": 1708009319.1750634, + "method": "auto" + }, + "9": { + "if_mode_id": 3, + "gain": 0.0, + "phase": 0.0, + "temperature": 55.875, + "timestamp": 1708009765.2501948, + "method": "auto" + }, + "10": { + "if_mode_id": 4, + "gain": -0.01803886738060439, + "phase": 0.030408710532885602, + "temperature": 57.4375, + "timestamp": 1708009774.4971294, + "method": "auto" + }, + "11": { + "if_mode_id": 5, + "gain": -0.03755611024903891, + "phase": -0.08515906381105526, + "temperature": 55.625, + "timestamp": 1708421686.8157413, + "method": "auto" + }, + "12": { + "if_mode_id": 6, + "gain": -0.016666905526500582, + "phase": 0.03105595152804154, + "temperature": 57.3125, + "timestamp": 1708421696.1210063, + "method": "auto" + }, + "13": { + "if_mode_id": 7, + "gain": -0.0053807775450318675, + "phase": -0.06934981033666213, + "temperature": 55.625, + "timestamp": 1709460806.1974826, + "method": "auto" + }, + "14": { + "if_mode_id": 8, + "gain": -0.01739807157315442, + "phase": 0.03205899950734242, + "temperature": 57.4375, + "timestamp": 1709460815.5736842, + "method": "auto" + }, + "15": { + "if_mode_id": 9, + "gain": -0.003674748421442735, + "phase": -0.06752827341986348, + "temperature": 55.25, + "timestamp": 1709535770.4851043, + "method": "auto" + }, + "16": { + "if_mode_id": 10, + "gain": -0.017423050312572505, + "phase": 0.03270291479867618, + "temperature": 57.1875, + "timestamp": 1709535779.7229016, + "method": "auto" + } + } +} diff --git a/tii1qs_xld1000/kernels.npz b/tii1qs_xld1000/kernels.npz new file mode 100644 index 00000000..56581edf Binary files /dev/null and b/tii1qs_xld1000/kernels.npz differ diff --git a/tii1qs_xld1000/parameters.json b/tii1qs_xld1000/parameters.json new file mode 100644 index 00000000..785c7b39 --- /dev/null +++ b/tii1qs_xld1000/parameters.json @@ -0,0 +1,98 @@ +{ + "nqubits": 1, + "settings": { + "nshots": 4024, + "relaxation_time": 120000 + }, + "topology": [], + "qubits": [ + 0 + ], + "instruments": { + "con1": { + "i1": { + "gain": 16 + }, + "i2": { + "gain": 16 + } + }, + "octave1": { + "o1": { + "lo_frequency": 7200000000, + "gain": -20 + }, + "o5": { + "lo_frequency": 5700000000, + "gain": 0 + }, + "i1": { + "lo_frequency": 7200000000 + } + } + }, + "native_gates": { + "single_qubit": { + "0": { + "RX": { + "duration": 80, + "amplitude": 0.1495, + "shape": "Gaussian(5)", + "frequency": 5783726200, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "MZ": { + "duration": 1600, + "amplitude": 0.12, + "shape": "Rectangular()", + "frequency": 7292427169, + "relative_start": 0, + "phase": 0, + "type": "ro" + } + } + }, + "two_qubits": {} + }, + + "characterization": { + "single_qubit": { + "0": { + "bare_resonator_frequency": 7292500000, + "readout_frequency": 7292427169, + "drive_frequency": 5783726200, + "anharmonicity": 0, + "sweetspot": 0, + "asymmetry": 0, + "Ec": 0, + "g": 0, + "assignment_fidelity": 0.924, + "readout_fidelity": 0.847, + "effective_temperature": 0, + "peak_voltage": 0, + "pi_pulse_amplitude": 0.1495, + "T1": 13223, + "T2": 11078, + "T2_spin_echo": 0, + "state0_voltage": 0, + "state1_voltage": 0, + "mean_gnd_states": [ + 0, + 0 + ], + "mean_exc_states": [ + 0, + 0 + ], + "threshold": -0.008292, + "iq_angle": 0.14, + "mixer_drive_g": 0, + "mixer_drive_phi": 0, + "mixer_readout_g": 0, + "mixer_readout_phi": 0 + } + } + } + } diff --git a/tii1qs_xld1000/platform.py b/tii1qs_xld1000/platform.py new file mode 100644 index 00000000..23f72761 --- /dev/null +++ b/tii1qs_xld1000/platform.py @@ -0,0 +1,64 @@ +import pathlib + +from qibolab.channels import Channel, ChannelMap +from qibolab.instruments.qm import Octave, OPXplus, QMController +from qibolab.instruments.rohde_schwarz import SGS100A +from qibolab.kernels import Kernels +from qibolab.platform import Platform +from qibolab.serialize import ( + load_instrument_settings, + load_qubits, + load_runcard, + load_settings, +) + +FOLDER = pathlib.Path(__file__).parent + + +def create(): + """QuantWare 5q-chip controlled using qblox cluster. + + Args: + runcard_path (str): Path to the runcard file. + """ + opx = OPXplus("con1") + octave = Octave("octave1", port=100, connectivity=opx) + controller = QMController( + "qm", + "192.168.0.101:80", + opxs=[opx], + octaves=[octave], + time_of_flight=224, + calibration_path=FOLDER, + # script_file_name="qua_script.py", + ) + # twpa_pump0 = SGS100A(name="twpa_pump0", address="192.168.0.37") + + channels = ChannelMap() + # Readout + channels |= Channel(name="L3-31r", port=octave.ports(1)) + # Feedback + channels |= Channel(name="L2-1", port=octave.ports(1, output=False)) + # Drive + channels |= Channel(name="L3-31d", port=octave.ports(5)) + + # channels |= Channel(name="L99", port=modules["qcm_rf0"].ports("i1", output=False)) + + # create qubit objects + runcard = load_runcard(FOLDER) + # kernels = Kernels.load(FOLDER) + qubits, couplers, pairs = load_qubits(runcard) # , kernels) + + qubits[0].readout = channels["L3-31r"] + qubits[0].feedback = channels["L2-1"] + qubits[0].drive = channels["L3-31d"] + + instruments = {controller.name: controller} # , twpa.name: twpa} + instruments.update(controller.opxs) + instruments.update(controller.octaves) + instruments = load_instrument_settings(runcard, instruments) + + settings = load_settings(runcard) + return Platform( + FOLDER.name, qubits, pairs, instruments, settings, resonator_type="3D" + )