From b6b07af9cdf5ebc50b7eb06fcb2f032b315d3211 Mon Sep 17 00:00:00 2001 From: jevillegasd Date: Thu, 23 Jan 2025 14:53:32 +0400 Subject: [PATCH] Base partameters for QPU 105 --- qpu105/parameters.json | 303 +++++++++++++++++++++++++++++++++++++++++ qpu105/platform.py | 95 +++++++++++++ 2 files changed, 398 insertions(+) create mode 100644 qpu105/parameters.json create mode 100644 qpu105/platform.py diff --git a/qpu105/parameters.json b/qpu105/parameters.json new file mode 100644 index 00000000..918f4727 --- /dev/null +++ b/qpu105/parameters.json @@ -0,0 +1,303 @@ +{ + "nqubits": 3, + "settings": { + "nshots": 1000, + "relaxation_time": 150000 + }, + "qubits": [ + 0, + 1, + 2 + ], + "topology": [ + [ + 0, + 1 + ], + [ + 1, + 2 + ] + ], + "instruments": { + "qblox_controller": { + "bounds": { + "waveforms": 40000, + "readout": 1000000, + "instructions": 1000000 + } + }, + "qrm_rf0": { + "o1": { + "attenuation": 58, + "lo_frequency": 6400000000 + }, + "i1": { + "acquisition_hold_off": 400, + "acquisition_duration": 2000 + } + }, + "qcm_rf0": { + "o1": { + "attenuation": 14, + "lo_frequency": 4260000000 + }, + "o2": { + "attenuation": 16, + "lo_frequency": 4600000000 + } + }, + "qcm_rf1": { + "o1": { + "attenuation": 20, + "lo_frequency": 5200000000 + }, + "o2": { + "attenuation": 40, + "lo_frequency": 5450000000.0 + } + } + }, + "native_gates": { + "single_qubit": { + "0": { + "RX": { + "duration": 40, + "amplitude": 0.206, + "shape": "Gaussian(5)", + "frequency": 4500539000.0, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "MZ": { + "duration": 2000, + "amplitude": 0.26, + "shape": "Rectangular()", + "frequency": 6545165000.0, + "relative_start": 0, + "phase": 0, + "type": "ro" + } + }, + "1": { + "RX": { + "duration": 40, + "amplitude": 0.504, + "shape": "Gaussian(5)", + "frequency": 4869358490, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "MZ": { + "duration": 2000, + "amplitude": 0.3, + "shape": "Rectangular()", + "frequency": 6639903000.0, + "relative_start": 0, + "phase": 0.0, + "type": "ro" + } + }, + "2": { + "RX": { + "duration": 40, + "amplitude": 0.302, + "shape": "Gaussian(5)", + "frequency": 5018950000.0, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "MZ": { + "duration": 2000, + "amplitude": 0.32, + "shape": "Rectangular()", + "frequency": 6707769000.0, + "relative_start": 0, + "phase": 0.0, + "type": "ro" + } + } + }, + "two_qubit": { + "0-1": { + "CZ": [ + { + "duration": 0, + "amplitude": 0.0, + "shape": "Rectangular()", + "qubit": 1, + "frequency": 0, + "relative_start": 0, + "phase": 0.0, + "type": "qd" + } + ] + }, + "1-2": { + "CZ": [ + { + "duration": 0, + "amplitude": 0.0, + "shape": "Rectangular()", + "qubit": 2, + "frequency": 0, + "relative_start": 0, + "phase": 0.0, + "type": "qd" + } + ] + } + } + }, + "characterization": { + "single_qubit": { + "0": { + "bare_resonator_frequency": 0, + "readout_frequency": 6851593000, + "drive_frequency": 0, + "anharmonicity": 1000000000.0, + "sweetspot": 0.0, + "asymmetry": 0, + "crosstalk_matrix": { + "0": 1, + "1": 0, + "2": 0 + }, + "Ec": 0, + "Ej": 0, + "g": 69526557.80860941, + "assignment_fidelity": 0.8759561024276687, + "readout_fidelity": 0.7519122048553375, + "gate_fidelity": 0.0, + "effective_temperature": 0, + "peak_voltage": 0, + "pi_pulse_amplitude": 0, + "resonator_depletion_time": 0, + "T1": 0, + "T2": 0, + "T2_spin_echo": 0, + "state0_voltage": 0, + "state1_voltage": 0, + "mean_gnd_states": [ + -7.29701631985093e-05, + -0.0011969094390118793 + ], + "mean_exc_states": [ + 5.377446112141189e-05, + -0.002350179738564742 + ], + "threshold": 0.0017786801262622985, + "iq_angle": 1.461335418446727, + "mixer_drive_g": 0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0, + "mixer_readout_phi": 0 + }, + "1": { + "bare_resonator_frequency": 0, + "readout_frequency": 0, + "drive_frequency": 0, + "anharmonicity": 1000000000.0, + "sweetspot": 0.0, + "asymmetry": 0, + "crosstalk_matrix": { + "0": 0, + "1": 1, + "2": 0 + }, + "Ec": 0, + "Ej": 0, + "g": 0, + "assignment_fidelity": 0.7978051213834386, + "readout_fidelity": 0.5956102427668772, + "gate_fidelity": 0.0, + "effective_temperature": 0, + "peak_voltage": 0, + "pi_pulse_amplitude": 0, + "resonator_depletion_time": 0, + "T1": 14839, + "T2": 0, + "T2_spin_echo": 0, + "state0_voltage": 0, + "state1_voltage": 0, + "mean_gnd_states": [ + 0.0008640048171373188, + 0.001409953578524352 + ], + "mean_exc_states": [ + 0.0012223092380602247, + 0.001813533037795381 + ], + "threshold": 0.0019351714159935032, + "iq_angle": -0.8447534775606448, + "mixer_drive_g": 0, + "mixer_drive_phi": 0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0 + }, + "2": { + "bare_resonator_frequency": 0, + "readout_frequency": 7067429000, + "drive_frequency": 0, + "anharmonicity": 1000000000.0, + "sweetspot": 0.0, + "asymmetry": 0, + "crosstalk_matrix": { + "0": 0, + "1": 0, + "2": 1 + }, + "Ec": 0, + "Ej": 0, + "g": 92114704.62708898, + "assignment_fidelity": 0.8152643831060858, + "readout_fidelity": 0.6305287662121717, + "gate_fidelity": 0.0, + "effective_temperature": 0, + "peak_voltage": 0, + "pi_pulse_amplitude": 0, + "resonator_depletion_time": 0, + "T1": 16350, + "T2": 13102, + "T2_spin_echo": 0, + "state0_voltage": 0, + "state1_voltage": 0, + "mean_gnd_states": [ + -0.000652283825963093, + -0.0018181858868585572 + ], + "mean_exc_states": [ + -0.0012590292086743034, + -0.0019177079730425426 + ], + "threshold": 0.0012554392943759218, + "iq_angle": 2.979014259297442, + "mixer_drive_g": 0, + "mixer_drive_phi": 0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0 + } + }, + "two_qubit": { + "0-1": { + "gate_fidelity": 0.0, + "cz_fidelity": 0.0 + }, + "1-0": { + "gate_fidelity": 0.0, + "cz_fidelity": 0.0 + }, + "1-2": { + "gate_fidelity": 0.0, + "cz_fidelity": 0.0 + }, + "2-1": { + "gate_fidelity": 0.0, + "cz_fidelity": 0.0 + } + } + } +} \ No newline at end of file diff --git a/qpu105/platform.py b/qpu105/platform.py new file mode 100644 index 00000000..76e1c72e --- /dev/null +++ b/qpu105/platform.py @@ -0,0 +1,95 @@ +import pathlib + +from qibolab.channels import Channel, ChannelMap +from qibolab.instruments.qblox.cluster_qcm_bb import QcmBb +from qibolab.instruments.qblox.cluster_qcm_rf import QcmRf +from qibolab.instruments.qblox.cluster_qrm_rf import QrmRf +from qibolab.instruments.qblox.controller import QbloxController +from qibolab.instruments.rohde_schwarz import SGS100A +from qibolab.platform import Platform +from qibolab.serialize import ( + load_instrument_settings, + load_qubits, + load_runcard, + load_settings, +) + +ADDRESS = "192.168.0.2" +FOLDER = pathlib.Path(__file__).parent +PLATFORM = FOLDER.name +NUM_QUBITS = 3 + +ROOT = pathlib.Path.home() + +def create(): + """"QRC QFoundry 2Q Chip for Cross Resonance Gates""" + runcard = load_runcard(FOLDER) + + # Declare RF Instrument + modules = { + "qrm_rf0": QrmRf("qrm_rf0", f"{ADDRESS}:3"), # feedline + "qcm_rf0": QcmRf("qcm_rf0", f"{ADDRESS}:8"), # q0, q1 + "qcm_rf1": QcmRf("qcm_rf1", f"{ADDRESS}:2"), # q2 + } + controller = QbloxController("qblox_controller", + ADDRESS, + modules) + + # Declare TWPA Inatrument + # twpa = SGS100A(name="twpa", address="192.168.0.36") + + # Define the instruments and update all modules with the platform settings + instruments = { + controller.name: controller, + # twpa.name: twpa + } + instruments.update(modules) + instruments = load_instrument_settings(runcard, instruments) + + # ######################################################################################################### + + # Create channel objects + channels = ChannelMap() + # Readout + channels |= Channel(name="feed_in", port=modules["qrm_rf0"].ports("o1")) + # Feedback + channels |= Channel(name="feed_back", port=modules["qrm_rf0"].ports("i1",out=False)) + + # Drive + channels |= Channel(name="drive0", port=modules["qcm_rf0"].ports("o1")) # qubit 0 + channels |= Channel(name="drive1", port=modules["qcm_rf0"].ports("o2")) # qubit 1 + channels |= Channel(name="drive2", port=modules["qcm_rf1"].ports("o1")) # qubit 2 + channels |= Channel(name="drive_", port=modules["qcm_rf1"].ports("o2")) # dummy + # channels |= Channel(name="dummy", port=modules["qrm_rf1"].ports("i1",out=False)) + + # Channel for TWPA Pump + # channels |= Channel(name="twpa", port=None) + # channels["twpa"].local_oscillator = twpa + + # create qubit objects + qubits, couplers, pairs = load_qubits(runcard) + + # assign channels to qubits + for q, qubit in qubits.items(): + qubit.readout = channels["feed_in"] + qubit.feedback = channels["feed_back"] + qubit.drive = channels[f"drive{q}"] + # qubit.twpa = channels["twpa"] + channels[f"drive{q}"].qubit = qubit + + settings = load_settings(runcard) + #instruments["qblox_controller"].device + + # DEBUG: debug folder = report folder ################################################################### + # import os + # from datetime import datetime + + # debug_folder = f"{ROOT}/debug/{PLATFORM}/" + # if not os.path.exists(debug_folder): + # os.makedirs(debug_folder) + # for name in modules: + # modules[name]._debug_folder = debug_folder + ######################################################################################################### + return Platform( + PLATFORM, qubits, pairs, instruments, settings, resonator_type="D" + ) \ No newline at end of file