{ "cells": [ { "cell_type": "markdown", "id": "c5d587cf", "metadata": {}, "source": [ "# Qblox basic sequencing" ] }, { "cell_type": "markdown", "id": "89f0cf9b", "metadata": {}, "source": [ "This tutorial outputs the same waveforms as in the [Basic Sequencing](https://qblox-qblox-instruments.readthedocs-hosted.com/en/main/tutorials/q1asm_tutorials/basic/baseband/basic_sequencing.html) tutorial, but using quantify instead." ] }, { "cell_type": "markdown", "id": "65b6a152", "metadata": {}, "source": [ "Quantify allows a either a gate or pulse to be played from a qblox instrument. Gates are performed on qubits (see [Operations and Qubits](https://quantify-os.org/docs/quantify-scheduler/tutorials/Operations%20and%20Qubits.html)) and pulses are played on ports (see [Schedules and Pulses](https://quantify-os.org/docs/quantify-scheduler/tutorials/Schedules%20and%20Pulses.html)).\n", "\n", "In this tutorial, we will play both gates and pulses." ] }, { "cell_type": "markdown", "id": "230d3682", "metadata": {}, "source": [ "First we set the data directory." ] }, { "cell_type": "code", "execution_count": 1, "id": "58bab9a1", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:07.129492Z", "iopub.status.busy": "2024-03-28T14:38:07.129492Z", "iopub.status.idle": "2024-03-28T14:38:08.597797Z", "shell.execute_reply": "2024-03-28T14:38:08.596725Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Data will be saved in:\n", "C:\\Users\\Daniel Weigand\\quantify-data\n" ] } ], "source": [ "from __future__ import annotations\n", "\n", "from qcodes.instrument import find_or_create_instrument\n", "\n", "from quantify_core.data import handling as dh\n", "\n", "dh.set_datadir()" ] }, { "cell_type": "markdown", "id": "e22661be", "metadata": {}, "source": [ "## Connections\n", "\n", "First, we define a quantum device with one transmon (qubit).\n", "\n", "The transmon here is a device element (typically a type of qubit) and is only necessary when using a gate operation, since the same gate can be implemented differently on different types of device elements. Take for example the `Measure` operation. The state of a transmon is determined by measuring a signal sent to a resonator coupled to it, but the state of a spin qubit is determined by measuring a current." ] }, { "cell_type": "code", "execution_count": 2, "id": "637acce1", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:08.603560Z", "iopub.status.busy": "2024-03-28T14:38:08.602510Z", "iopub.status.idle": "2024-03-28T14:38:10.549796Z", "shell.execute_reply": "2024-03-28T14:38:10.548610Z" } }, "outputs": [], "source": [ "from quantify_scheduler.device_under_test.quantum_device import QuantumDevice\n", "from quantify_scheduler.device_under_test.transmon_element import BasicTransmonElement\n", "\n", "single_transmon_device = find_or_create_instrument(QuantumDevice, recreate=True, name=\"DUT\")\n", "transmon = find_or_create_instrument(BasicTransmonElement, recreate=True, name=\"transmon\")\n", "single_transmon_device.add_element(transmon)" ] }, { "cell_type": "markdown", "id": "454e8dbe", "metadata": {}, "source": [ "We will assume the transmon is already calibrated, and that we know the frequency of the qubit and the parameters for a $\\pi$-pulse. We can assign this known frequency and $\\pi$-pulse parameters to the transmon." ] }, { "cell_type": "code", "execution_count": 3, "id": "0aa87876", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:10.555424Z", "iopub.status.busy": "2024-03-28T14:38:10.554394Z", "iopub.status.idle": "2024-03-28T14:38:10.565196Z", "shell.execute_reply": "2024-03-28T14:38:10.564202Z" } }, "outputs": [], "source": [ "transmon.clock_freqs.f01(5e9) # The |0> <=> |1> transition frequency is at 5 GHz.\n", "transmon.rxy.amp180(0.3) # The amplitude of a pi pulse is 0.3" ] }, { "cell_type": "markdown", "id": "f54119f6", "metadata": {}, "source": [ "Next, we define the module(s) that are connected to the quantum device.\n", "\n", "In this case, one Qblox Cluster with a QCM (or QRM) in slot 4.\n", "\n", "We will use three outputs of the QCM for the tutorial to showcase both real and complex output signals. Please make appropriate modifications if using a QRM which only has two outputs.\n", "\n", "We scan for the available devices connected via ethernet using the Plug & Play functionality of the Qblox Instruments package (see [Plug & Play](https://qblox-qblox-instruments.readthedocs-hosted.com/en/main/api_reference/tools.html#api-pnp) for more info)." ] }, { "cell_type": "code", "execution_count": 4, "id": "3f58ec89", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:10.571076Z", "iopub.status.busy": "2024-03-28T14:38:10.570072Z", "iopub.status.idle": "2024-03-28T14:38:12.702841Z", "shell.execute_reply": "2024-03-28T14:38:12.700840Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Devices:\n", " - 10.10.200.13 via 192.168.207.146/24 (reconfiguration needed!): cluster_mm 0.6.2 with name \"QSE_1\" and serial number 00015_2321_005\n", " - 10.10.200.42 via 192.168.207.146/24 (reconfiguration needed!): cluster_mm 0.7.0 with name \"QAE-I\" and serial number 00015_2321_004\n", " - 10.10.200.43 via 192.168.207.146/24 (reconfiguration needed!): cluster_mm 0.6.2 with name \"QAE-2\" and serial number 00015_2206_003\n", " - 10.10.200.50 via 192.168.207.146/24 (reconfiguration needed!): cluster_mm 0.7.0 with name \"cluster-mm\" and serial number 00015_2219_003\n", " - 10.10.200.53 via 192.168.207.146/24 (reconfiguration needed!): cluster_mm 0.7.0 with name \"cluster-mm\" and serial number 00015_2320_004\n", " - 10.10.200.70 via 192.168.207.146/24 (reconfiguration needed!): cluster_mm 0.6.1 with name \"cluster-mm\" and serial number 123-456-789\n", " - 10.10.200.80 via 192.168.207.146/24 (reconfiguration needed!): cluster_mm 0.6.1 with name \"cluster-mm\" and serial number not_valid\n" ] } ], "source": [ "!qblox-pnp list" ] }, { "cell_type": "code", "execution_count": 5, "id": "1d8fc7c1", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:12.706297Z", "iopub.status.busy": "2024-03-28T14:38:12.706297Z", "iopub.status.idle": "2024-03-28T14:38:12.717909Z", "shell.execute_reply": "2024-03-28T14:38:12.716382Z" } }, "outputs": [], "source": [ "cluster_ip = \"10.10.200.42\"\n", "cluster_name = \"cluster0\"" ] }, { "cell_type": "markdown", "id": "30e1a17b", "metadata": {}, "source": [ "### Connect to Cluster\n", "\n", "We now make a connection with the Cluster." ] }, { "cell_type": "code", "execution_count": 6, "id": "e7e9c454", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:12.721483Z", "iopub.status.busy": "2024-03-28T14:38:12.721483Z", "iopub.status.idle": "2024-03-28T14:38:13.742822Z", "shell.execute_reply": "2024-03-28T14:38:13.740821Z" }, "lines_to_next_cell": 2 }, "outputs": [], "source": [ "\n", "from qblox_instruments import Cluster, ClusterType\n", "\n", "cluster = find_or_create_instrument(\n", " Cluster,\n", " recreate=True,\n", " name=cluster_name,\n", " identifier=cluster_ip,\n", " dummy_cfg=(\n", " {\n", " 2: ClusterType.CLUSTER_QCM,\n", " 4: ClusterType.CLUSTER_QRM,\n", " 6: ClusterType.CLUSTER_QCM_RF,\n", " 8: ClusterType.CLUSTER_QRM_RF,\n", " }\n", " if cluster_ip is None\n", " else None\n", " ),\n", ")" ] }, { "cell_type": "markdown", "id": "8393207b", "metadata": { "lines_to_next_cell": 2 }, "source": [ "#### Get connected modules" ] }, { "cell_type": "code", "execution_count": 7, "id": "1a6b66e6", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:13.747175Z", "iopub.status.busy": "2024-03-28T14:38:13.747175Z", "iopub.status.idle": "2024-03-28T14:38:13.757068Z", "shell.execute_reply": "2024-03-28T14:38:13.756073Z" } }, "outputs": [], "source": [ "from typing import TYPE_CHECKING, Callable\n", "\n", "if TYPE_CHECKING:\n", " from qblox_instruments.qcodes_drivers.module import QcmQrm\n", "\n", "\n", "def get_connected_modules(cluster: Cluster, filter_fn: Callable | None = None) -> dict[int, QcmQrm]:\n", " def checked_filter_fn(mod: ClusterType) -> bool:\n", " if filter_fn is not None:\n", " return filter_fn(mod)\n", " return True\n", "\n", " return {\n", " mod.slot_idx: mod for mod in cluster.modules if mod.present() and checked_filter_fn(mod)\n", " }" ] }, { "cell_type": "code", "execution_count": 8, "id": "8a4dd7e2", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:13.761172Z", "iopub.status.busy": "2024-03-28T14:38:13.761172Z", "iopub.status.idle": "2024-03-28T14:38:13.881337Z", "shell.execute_reply": "2024-03-28T14:38:13.880286Z" } }, "outputs": [ { "data": { "text/plain": [ "{4: }" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# QRM baseband modules\n", "modules = get_connected_modules(cluster, lambda mod: mod.is_qrm_type and not mod.is_rf_type)\n", "modules" ] }, { "cell_type": "code", "execution_count": 9, "id": "daf26acc", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:13.884918Z", "iopub.status.busy": "2024-03-28T14:38:13.884918Z", "iopub.status.idle": "2024-03-28T14:38:13.897470Z", "shell.execute_reply": "2024-03-28T14:38:13.895517Z" } }, "outputs": [], "source": [ "module = modules[4]" ] }, { "cell_type": "code", "execution_count": 10, "id": "918752b5", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:13.901561Z", "iopub.status.busy": "2024-03-28T14:38:13.900550Z", "iopub.status.idle": "2024-03-28T14:38:13.913145Z", "shell.execute_reply": "2024-03-28T14:38:13.911110Z" } }, "outputs": [], "source": [ "slot_no = module.slot_idx\n", "if module.is_qcm_type:\n", " module_type = \"QCM\"\n", "if module.is_qrm_type:\n", " module_type = \"QRM\"" ] }, { "cell_type": "markdown", "id": "d7a02341", "metadata": {}, "source": [ "Create a dummy Local Oscillator with the same name as in the hardware config. This can be replaced with a microwave generator in an actual situation" ] }, { "cell_type": "code", "execution_count": 11, "id": "7bd34c10", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:13.916845Z", "iopub.status.busy": "2024-03-28T14:38:13.916845Z", "iopub.status.idle": "2024-03-28T14:38:13.927649Z", "shell.execute_reply": "2024-03-28T14:38:13.926250Z" } }, "outputs": [], "source": [ "from quantify_scheduler.helpers.mock_instruments import MockLocalOscillator\n", "\n", "lo1 = find_or_create_instrument(MockLocalOscillator, recreate=True, name=\"lo1\")" ] }, { "cell_type": "markdown", "id": "81f756bd", "metadata": {}, "source": [ "Now we define the connections between the quantum device and the qblox instrument(s). For this we define a hardware config according to the [Qblox backend](https://quantify-os.org/docs/quantify-scheduler/latest/reference/qblox/index.html) tutorial." ] }, { "cell_type": "code", "execution_count": 12, "id": "994de65e", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:13.933807Z", "iopub.status.busy": "2024-03-28T14:38:13.932115Z", "iopub.status.idle": "2024-03-28T14:38:13.944019Z", "shell.execute_reply": "2024-03-28T14:38:13.942000Z" } }, "outputs": [], "source": [ "hardware_config = {\n", " \"backend\": \"quantify_scheduler.backends.qblox_backend.hardware_compile\", # Use the Qblox backend\n", " \"cluster0\": { # The first instrument is named \"cluster0\"\n", " \"instrument_type\": \"Cluster\", # The instrument is a Qblox Cluster\n", " \"ref\": \"internal\", # Use the internal reference clock\n", " f\"cluster0_module{slot_no}\": { # This is the module in slot of the cluster. (slot 0 has the CMM)\n", " \"instrument_type\": f\"{module_type}\", # The module is either a QCM or QRM module\n", " \"complex_output_0\": { # The module will output a real signal from output 0 (O1)\n", " \"lo_name\": \"lo1\", # output 0 and 1 (O1 and O2) are connected to the I and Q ports of an IQ mixer with a LocalOscillator by the name lo1\n", " \"portclock_configs\": [ # Each output can contain upto 6 portclocks. We will use only one for this tutorial\n", " {\n", " \"port\": \"transmon:mw\", # This output is connected to the microwave line of qubit 0\n", " \"clock\": \"transmon.01\", # This clock tracks the |0> <=> |1> transition of the transmon\n", " },\n", " ],\n", " },\n", " },\n", " },\n", " \"lo1\": {\n", " \"instrument_type\": \"LocalOscillator\",\n", " \"frequency\": 4.9e9,\n", " \"power\": 20,\n", " }, # lo1 has a frequency of 4.9 GHz and is set to a power level of 20 (can be dBm)\n", "}" ] }, { "cell_type": "code", "execution_count": 13, "id": "8a6e0fa0", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:13.946554Z", "iopub.status.busy": "2024-03-28T14:38:13.946554Z", "iopub.status.idle": "2024-03-28T14:38:13.959265Z", "shell.execute_reply": "2024-03-28T14:38:13.958125Z" } }, "outputs": [], "source": [ "if module_type == \"QCM\":\n", " hardware_config[\"cluster0\"][f\"cluster0_module{slot_no}\"][\"real_output_2\"] = (\n", " { # The QCM will output a real signal from output 2\n", " \"portclock_configs\": [\n", " {\n", " \"port\": \"transmon:fl\", # This output is connected to the flux line of qubit 2\n", " \"clock\": \"cl0.baseband\", # This default value (clock with zero frequency) is used if a clock is not provided.\n", " },\n", " ]\n", " },\n", " )" ] }, { "cell_type": "code", "execution_count": 14, "id": "f855c77d", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:13.963265Z", "iopub.status.busy": "2024-03-28T14:38:13.963265Z", "iopub.status.idle": "2024-03-28T14:38:13.975377Z", "shell.execute_reply": "2024-03-28T14:38:13.973360Z" } }, "outputs": [], "source": [ "single_transmon_device.hardware_config(hardware_config)" ] }, { "cell_type": "markdown", "id": "9bf2d0be", "metadata": {}, "source": [ "## Schedule" ] }, { "cell_type": "markdown", "id": "bdd2de2b", "metadata": {}, "source": [ "We can now create a `Schedule` of pulses or gates to play." ] }, { "cell_type": "code", "execution_count": 15, "id": "08d377ff", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:13.980760Z", "iopub.status.busy": "2024-03-28T14:38:13.979496Z", "iopub.status.idle": "2024-03-28T14:38:13.989353Z", "shell.execute_reply": "2024-03-28T14:38:13.988348Z" } }, "outputs": [], "source": [ "from quantify_scheduler import Schedule\n", "\n", "sched = Schedule(\n", " \"Basic sequencing\", repetitions=2**27\n", ") # The schedule will be played repeatedly 2^27 times" ] }, { "cell_type": "markdown", "id": "71cce51f", "metadata": {}, "source": [ "Let's create the control portion of an experiment.\n", "\n", "First we specify an arbitrary numerical pulse to be played on the microwave port of the transmon.\n", "\n", "Here we play a gaussian pulse constructed from the scipy library." ] }, { "cell_type": "code", "execution_count": 16, "id": "2e247949", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:13.994026Z", "iopub.status.busy": "2024-03-28T14:38:13.994026Z", "iopub.status.idle": "2024-03-28T14:38:14.004413Z", "shell.execute_reply": "2024-03-28T14:38:14.003419Z" } }, "outputs": [], "source": [ "import numpy as np\n", "from scipy.signal import gaussian\n", "\n", "from quantify_scheduler.operations.pulse_library import NumericalPulse\n", "\n", "t = np.arange(0, 48.5e-9, 1e-9)\n", "\n", "gaussian_pulse = sched.add(\n", " NumericalPulse(\n", " samples=0.2 * gaussian(len(t), std=0.12 * len(t))\n", " - 1j * gaussian(len(t), std=0.12 * len(t)), # Numerical pulses can be complex as well.\n", " t_samples=t,\n", " port=\"transmon:mw\",\n", " clock=\"transmon.01\",\n", " ),\n", " ref_pt=\"start\",\n", " rel_time=0e-9,\n", ")" ] }, { "cell_type": "markdown", "id": "9f1d2a00", "metadata": {}, "source": [ "Next, we apply a square pulse to the flux port of the transmon at the same time as the Gaussian Pulse" ] }, { "cell_type": "code", "execution_count": 17, "id": "95727507", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:14.008492Z", "iopub.status.busy": "2024-03-28T14:38:14.008492Z", "iopub.status.idle": "2024-03-28T14:38:14.020962Z", "shell.execute_reply": "2024-03-28T14:38:14.019404Z" } }, "outputs": [], "source": [ "from quantify_scheduler.operations.pulse_library import SquarePulse\n", "\n", "if module_type == \"QCM\":\n", " square_pulse = sched.add(\n", " SquarePulse(amp=0.4, duration=32e-9, port=\"transmon:fl\", clock=\"cl0.baseband\"),\n", " ref_pt=\"start\", # Play at the start of\n", " ref_op=gaussian_pulse, # the gaussian pulse\n", " rel_time=0e-9, # Delay the pulse by 0 ns\n", " )" ] }, { "cell_type": "markdown", "id": "8eae94f3", "metadata": {}, "source": [ "Finally, we apply an X gate to the transmon. This uses the stored parameters in the `transmon` object." ] }, { "cell_type": "code", "execution_count": 18, "id": "a14b623d", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:14.026020Z", "iopub.status.busy": "2024-03-28T14:38:14.026020Z", "iopub.status.idle": "2024-03-28T14:38:14.036100Z", "shell.execute_reply": "2024-03-28T14:38:14.035113Z" } }, "outputs": [], "source": [ "from quantify_scheduler.operations.gate_library import X\n", "from quantify_scheduler.resources import ClockResource\n", "\n", "pi_pulse = sched.add(X(qubit=transmon.name), ref_op=gaussian_pulse)\n", "\n", "sched.add_resource(\n", " ClockResource(name=\"transmon.01\", freq=transmon.clock_freqs.f01())\n", ") # A ClockResource is necessary for the schedule to know the frequency of the transmon." ] }, { "cell_type": "markdown", "id": "f8d7b4dd", "metadata": {}, "source": [ "## Compilation" ] }, { "cell_type": "markdown", "id": "d0db7672", "metadata": {}, "source": [ "We then compile the schedule to produce instructions for the instruments.\n", "\n", "We use the `SerialCompiler` here, which first converts all gates to pulses, then all pulses to instrument instructions." ] }, { "cell_type": "code", "execution_count": 19, "id": "88473cec", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:14.041099Z", "iopub.status.busy": "2024-03-28T14:38:14.040099Z", "iopub.status.idle": "2024-03-28T14:38:15.775822Z", "shell.execute_reply": "2024-03-28T14:38:15.773821Z" } }, "outputs": [ { "data": { "text/plain": [ "(
,\n", " )" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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H32UCRMmEBwczIYNG7jtttu49dZbyczMBGDo0KE1kss1a9YQFhbmXLZp0yasVusZfx4AO3fupLi4mN69e5/x9Qs5T3X5+U2bNo0TJ06wevVqPv/8c15//XVyc2tfs/r27cuvv/563hgviCKU4uJiBVCKi4vVDkWIOntvXboS/8A3Svt/fqs8snSXsmT90To93lt3RJny6u9Kmwe/UT7ZlKH223A7FRUVyt69e5WKiopar8U/8M1ZHzPe2lBj3eSHl5913Smv/l5j3R6P/1BrnYYYOnSo0rFjR8XhcDiXPfDAA0rHjh0VRVGUAwcOKIDy22+/OV/Pz89XvL29lU8++URRFEVZvHixAijbt2+vse/p06crkyZNqlMMc+bMqbFs1apVCqAsXbr0vNt36tRJWbhwofN5fHy8cv311zufOxwOJSIiQlm0aJGiKIpy5513KsOHD6/xnv8MUB5++GHn83Xr1imA8r///c+57MMPP1RMJpPz+cCBA5WZM2fW2M9VV12ljBs37qz7LS0tVQBl+fLlzmXDhw+v8V6mT5+uxMfHK3a73bksKSlJueiii5zPbTab4uvrq3z44YeKoijKzp07FY1Go+Tm5ioFBQWKwWBQ/v3vfytTp05VFEVRnnjiCWXgwIFnfO+KoihffvmlotPpap2f+Ph45YUXXrig83Qmf/757du3TwGUTZs2OV8/ePCgAtQ4tqIoyksvvaQkJCSccZ/n+pusz+d3s2/h+eKLLxg1ahShoaFoNBq2b9+udkhCNIlr+8bTrVUgVrvCrwfza7Ua/JmiKBSUVQFQarHRIcqf+0cnMal7bFOFK5pI//79a7TYDRgwgIMHD2K329m3bx9eXl7069fP+XpoaChJSUns27fPucxgMNC1a1eXx/bXVobS0lLuu+8+OnbsSFBQEH5+fuzbt69WC8+fY9FoNERFRTlbCWbMmMH27dtJSkrirrvu4ocffqh13D9vHxkZCUCXLl1qLKusrMRsNgOwb98+Bg0aVGMfgwYNqnGO/rpfX19fAgICarRerFy5skaLCECnTp3Qav/46I2MjKwRi06nIzQ01Lmfzp07ExISwpo1a/j111/p0aMHEyZMYM2aNUB1i8+wYcNqvefTKioqMBqNdWrFre95Ot/PLzU1FS8vL3r27OncR/v27QkODq51bG9vb8rLy88b44Vo9oUHy8rK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SAgAW7ZswWq11jgXycnJtG7d2mPPhd1u56OPPqKsrIwBAwa0yHMwa9Ysxo8fX+M9Q8v7fTh48CAxMTG0bduW6667joyMDKBlnYdly5bRu3dvrrrqKiIiIujRowdvvPGG8/WWeL2sqqri/fff56abbkKj0bj890ESnkaQn5+P3W4nMjKyxvLIyEiys7NVikp9p997SzsvDoeDu+++m0GDBtG5c2eg+lwYDAaCgoJqrOuJ52LXrl34+flhNBq57bbb+PLLL0lJSWlR5wDgo48+YuvWrcybN6/Way3pXPTr14+3336bFStWsGjRItLT07nooosoKSlpUefh8OHDLFq0iMTERL7//ntuv/127rrrLt555x2gZV4vly5dSlFRETNmzABc/3chs6UL0chmzZrF7t27a/RTaEmSkpLYvn07xcXFfPbZZ0yfPp01a9aoHVaTOnbsGHPmzOHHH3/EZDKpHY6qxo4d6/x/165d6devH/Hx8XzyySd4e3urGFnTcjgc9O7dm6eeegqAHj16sHv3bl599VWmT5+ucnTq+N///sfYsWOJiYlplP1LC08jCAsLQ6fT1epJnpOTQ1RUlEpRqe/0e29J52X27Nl88803rFq1ilatWjmXR0VFUVVVRVFRUY31PfFcGAwG2rdvT69evZg3bx7dunXjpZdealHnYMuWLeTm5tKzZ0+8vLzw8vJizZo1LFiwAC8vLyIjI1vMufiroKAgOnTowKFDh1rU70R0dDQpKSk1lnXs2NF5e6+lXS+PHj3KTz/9xN/+9jfnMlf/PkjC0wgMBgO9evVi5cqVzmUOh4OVK1cyYMAAFSNTV5s2bYiKiqpxXsxmMxs2bPC486IoCrNnz+bLL7/k559/pk2bNjVe79WrF3q9vsa5SE1NJSMjw+POxV85HA4sFkuLOgcjRoxg165dbN++3fno3bs31113nfP/LeVc/FVpaSlpaWlER0e3qN+JQYMG1SpVceDAAeLj44GWdb0EWLx4MREREYwfP965zOW/Dy7sXC3+5KOPPlKMRqPy9ttvK3v37lVuueUWJSgoSMnOzlY7tEZVUlKibNu2Tdm2bZsCKPPnz1e2bdumHD16VFEURXn66aeVoKAg5auvvlJ27typTJo0SWnTpo1SUVGhcuSudfvttyuBgYHK6tWrlaysLOejvLzcuc5tt92mtG7dWvn555+V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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from quantify_scheduler.backends.graph_compilation import SerialCompiler\n", "\n", "compiler = SerialCompiler(name=\"compiler\")\n", "compiled_sched = compiler.compile(\n", " schedule=sched, config=single_transmon_device.generate_compilation_config()\n", ")\n", "\n", "compiled_sched.plot_pulse_diagram()" ] }, { "cell_type": "markdown", "id": "d5080c15", "metadata": {}, "source": [ "We can view the compiled sequencer instructions sent to the QCM module. This may be compared to the program in the [Basic Sequencing](https://qblox-qblox-instruments.readthedocs-hosted.com/en/main/tutorials/q1asm_tutorials/basic/baseband/basic_sequencing.html) tutorial. Notice the extra instructions here that set the gain for each waveform played and the automatically calculated wait times." ] }, { "cell_type": "code", "execution_count": 20, "id": "d3841efc", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:15.779824Z", "iopub.status.busy": "2024-03-28T14:38:15.778822Z", "iopub.status.idle": "2024-03-28T14:38:15.790763Z", "shell.execute_reply": "2024-03-28T14:38:15.789762Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " set_mrk 0 # set markers to 0\n", " wait_sync 4 \n", " upd_param 4 \n", " wait 4 # latency correction of 4 + 0 ns\n", " move 134217728,R0 # iterator for loop with label start\n", "start: \n", " reset_ph \n", " upd_param 4 \n", " set_awg_gain 6554,-32768 # setting gain for NumericalPulse\n", " play 0,0,4 # play NumericalPulse (48 ns)\n", " wait 44 # auto generated wait (44 ns)\n", " set_awg_gain 9821,0 # setting gain for X transmon\n", " play 1,1,4 # play X transmon (20 ns)\n", " wait 16 # auto generated wait (16 ns)\n", " loop R0,@start \n", " stop \n", "\n" ] } ], "source": [ "print(\n", " compiled_sched.compiled_instructions[\"cluster0\"][f\"cluster0_module{slot_no}\"][\"sequencers\"][\n", " \"seq0\"\n", " ][\"sequence\"][\"program\"]\n", ")" ] }, { "cell_type": "markdown", "id": "76ef6990", "metadata": {}, "source": [ "## Instrument coordinator\n", "\n", "We create and instrument coordinator to prepare and run the schedule" ] }, { "cell_type": "code", "execution_count": 21, "id": "68a06ac4", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:15.795772Z", "iopub.status.busy": "2024-03-28T14:38:15.795772Z", "iopub.status.idle": "2024-03-28T14:38:15.821844Z", "shell.execute_reply": "2024-03-28T14:38:15.820414Z" } }, "outputs": [], "source": [ "from quantify_scheduler.instrument_coordinator import InstrumentCoordinator\n", "from quantify_scheduler.instrument_coordinator.components.qblox import ClusterComponent\n", "\n", "instrument_coordinator = find_or_create_instrument(\n", " InstrumentCoordinator, recreate=True, name=\"instrument_coordinator\"\n", ")\n", "instrument_coordinator.add_component(ClusterComponent(cluster))" ] }, { "cell_type": "code", "execution_count": 22, "id": "f897f3ce", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:15.825727Z", "iopub.status.busy": "2024-03-28T14:38:15.824708Z", "iopub.status.idle": "2024-03-28T14:38:16.226291Z", "shell.execute_reply": "2024-03-28T14:38:16.224725Z" } }, "outputs": [], "source": [ "# Set the qcodes parameters and upload the schedule program\n", "instrument_coordinator.prepare(compiled_sched)" ] }, { "cell_type": "markdown", "id": "82310951", "metadata": {}, "source": [ "We can now start the playback of the schedule. If you wish to view the signals on an oscilloscope, you can make the necessary connections and set up the oscilloscope accordingly." ] }, { "cell_type": "code", "execution_count": 23, "id": "6de50f56", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:16.230893Z", "iopub.status.busy": "2024-03-28T14:38:16.229868Z", "iopub.status.idle": "2024-03-28T14:38:16.507863Z", "shell.execute_reply": "2024-03-28T14:38:16.506837Z" } }, "outputs": [], "source": [ "# Start the hardware execution\n", "instrument_coordinator.start()" ] }, { "cell_type": "code", "execution_count": 24, "id": "6a08c138", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:38:16.513949Z", "iopub.status.busy": "2024-03-28T14:38:16.512919Z", "iopub.status.idle": "2024-03-28T14:38:16.909584Z", "shell.execute_reply": "2024-03-28T14:38:16.909077Z" } }, "outputs": [], "source": [ "instrument_coordinator.stop()" ] } ], "metadata": { "jupytext": { "formats": "ipynb,py:percent" }, "kernelspec": { "display_name": "docs", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.18" } }, "nbformat": 4, "nbformat_minor": 5 }