{ "cells": [ { "cell_type": "markdown", "id": "af85ac5b", "metadata": {}, "source": [ "Advanced sequencing\n", "================\n", "\n", "In this tutorial we will demonstrate advanced sequencer based operations, where we focus on waveform parametrization (see [Sequencer Operation](https://qblox-qblox-instruments.readthedocs-hosted.com/en/main/cluster/q1_sequence_processor.html#operation)). We will demonstrate this by creating a sequence that will show various sequencer features,\n", "including complex looping constructs, dynamic gain control, hardware-based modulation and marker output control.\n", "\n", "The sequence itself will use four waveform envelopes with a duration of 1μs each; a gaussian, a sine, a sawtooth and a block. We will have several nested loops\n", "in the sequence. The first loop will increase the wait period between the start of the iteration and playback of the waveform envelope and also increase the gain of\n", "the waveform envelope on every iteration. At the end of this loop a second loop will do the inverse operations. A third loop will loop over the first and\n", "second loops to iterate over the four waveform envelopes. And finally a fourth loop will function as an infinite loop over the third loop.\n", "At the same time, the sequence will also control marker output 1 and create a trigger point at the start of each iteration of the first and second loops as well an\n", "\"enable\" during playback. Finally, each waveform envelope will be modulated at 10MHz.\n", "\n", "The result of this sequence, when observed on an oscilloscope, will be iterating waveform envelopes that will be sliding over the modulation frequency with varying gain,\n", "encapsulated by an \"enable\" on the marker output. We highly recommend that you take a look at it, to get an impression of what is possible with the sequencers.\n", "\n", "We can perform this tutorial with a Cluster QCM/QRM . We use the term 'module' encompassing both QCM and QRM modules." ] }, { "cell_type": "markdown", "id": "4a0d7814", "metadata": { "tags": [] }, "source": [ "Setup\n", "-----\n", "\n", "First, we are going to import the required packages." ] }, { "cell_type": "code", "execution_count": 1, "id": "ed92443b", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:02.949173Z", "iopub.status.busy": "2024-03-28T14:37:02.949173Z", "iopub.status.idle": "2024-03-28T14:37:04.494774Z", "shell.execute_reply": "2024-03-28T14:37:04.493182Z" } }, "outputs": [], "source": [ "\n", "from __future__ import annotations\n", "\n", "import json\n", "import math\n", "from typing import TYPE_CHECKING, Callable\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import scipy.signal\n", "from qcodes.instrument import find_or_create_instrument\n", "\n", "from qblox_instruments import Cluster, ClusterType\n", "\n", "if TYPE_CHECKING:\n", " from qblox_instruments.qcodes_drivers.module import QcmQrm" ] }, { "cell_type": "markdown", "id": "1db6014a", "metadata": {}, "source": [ "### Scan For Clusters\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": 2, "id": "47fa1f56", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:04.499745Z", "iopub.status.busy": "2024-03-28T14:37:04.499745Z", "iopub.status.idle": "2024-03-28T14:37:06.541977Z", "shell.execute_reply": "2024-03-28T14:37:06.539849Z" } }, "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": 3, "id": "50194107", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:06.546543Z", "iopub.status.busy": "2024-03-28T14:37:06.545549Z", "iopub.status.idle": "2024-03-28T14:37:06.557107Z", "shell.execute_reply": "2024-03-28T14:37:06.555083Z" } }, "outputs": [], "source": [ "cluster_ip = \"10.10.200.42\"\n", "cluster_name = \"cluster0\"" ] }, { "cell_type": "markdown", "id": "1424d8d9", "metadata": {}, "source": [ "### Connect to Cluster\n", "\n", "We now make a connection with the Cluster." ] }, { "cell_type": "code", "execution_count": 4, "id": "e128e472", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:06.561107Z", "iopub.status.busy": "2024-03-28T14:37:06.561107Z", "iopub.status.idle": "2024-03-28T14:37:07.457070Z", "shell.execute_reply": "2024-03-28T14:37:07.456069Z" }, "lines_to_next_cell": 2 }, "outputs": [], "source": [ "\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": "7d98062a", "metadata": { "lines_to_next_cell": 2 }, "source": [ "#### Get connected modules" ] }, { "cell_type": "code", "execution_count": 5, "id": "bfa1caba", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:07.461191Z", "iopub.status.busy": "2024-03-28T14:37:07.460666Z", "iopub.status.idle": "2024-03-28T14:37:07.472704Z", "shell.execute_reply": "2024-03-28T14:37:07.471190Z" } }, "outputs": [], "source": [ "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": 6, "id": "79ab94c3", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:07.476729Z", "iopub.status.busy": "2024-03-28T14:37:07.476729Z", "iopub.status.idle": "2024-03-28T14:37:07.594938Z", "shell.execute_reply": "2024-03-28T14:37:07.593864Z" } }, "outputs": [ { "data": { "text/plain": [ "{4: }" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# QRM 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": 7, "id": "d6736802", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:07.600045Z", "iopub.status.busy": "2024-03-28T14:37:07.600045Z", "iopub.status.idle": "2024-03-28T14:37:07.611370Z", "shell.execute_reply": "2024-03-28T14:37:07.609847Z" }, "lines_to_next_cell": 0 }, "outputs": [], "source": [ "module = modules[4]" ] }, { "cell_type": "markdown", "id": "d5abcfa1", "metadata": {}, "source": [ "### Reset the Cluster\n", "\n", "We reset the Cluster to enter a well-defined state. Note that resetting will clear all stored parameters, so resetting between experiments is usually not desirable." ] }, { "cell_type": "code", "execution_count": 8, "id": "fa029a9f", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:07.616758Z", "iopub.status.busy": "2024-03-28T14:37:07.615234Z", "iopub.status.idle": "2024-03-28T14:37:11.053290Z", "shell.execute_reply": "2024-03-28T14:37:11.052522Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Status: OKAY, Flags: NONE, Slot flags: NONE\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\work\\code\\qblox_instruments_install\\qblox_instruments\\native\\generic_func.py:1033: FutureWarning: \n", " After June 2024, this feature is subject to removal in future releases.\n", " Transition to an alternative is advised.\n", " See https://qblox-qblox-instruments.readthedocs-hosted.com/en/main/getting_started/deprecated.html\n", " \n", " warnings.warn(\n", "c:\\work\\code\\qblox_instruments_install\\qblox_instruments\\native\\generic_func.py:77: FutureWarning: \n", " After June 2024, this feature is subject to removal in future releases.\n", " Transition to an alternative is advised.\n", " See https://qblox-qblox-instruments.readthedocs-hosted.com/en/main/getting_started/deprecated.html\n", " \n", " self._deprecation_warning()\n", "c:\\work\\code\\qblox_instruments_install\\qblox_instruments\\native\\generic_func.py:129: FutureWarning: \n", " After June 2024, this feature is subject to removal in future releases.\n", " Transition to an alternative is advised.\n", " See https://qblox-qblox-instruments.readthedocs-hosted.com/en/main/getting_started/deprecated.html\n", " \n", " self._deprecation_warning()\n" ] } ], "source": [ "cluster.reset()\n", "print(cluster.get_system_state())" ] }, { "cell_type": "markdown", "id": "806bda90", "metadata": {}, "source": [ "Generate waveforms \n", "------------------\n", "\n", "Next, we need to create the gaussian, sine, sawtooth and block waveform envelopes for the sequence." ] }, { "cell_type": "code", "execution_count": 9, "id": "322bcdfe", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:11.058381Z", "iopub.status.busy": "2024-03-28T14:37:11.058381Z", "iopub.status.idle": "2024-03-28T14:37:11.067192Z", "shell.execute_reply": "2024-03-28T14:37:11.067192Z" } }, "outputs": [], "source": [ "# Waveform parameters\n", "waveform_length = 1000 # nanoseconds\n", "\n", "# Waveform dictionary (data will hold the samples and index will be used to select the waveforms in the instrument).\n", "waveforms = {\n", " \"gaussian\": {\n", " \"data\": scipy.signal.windows.gaussian(waveform_length, std=0.12 * waveform_length).tolist(),\n", " \"index\": 0,\n", " },\n", " \"sine\": {\n", " \"data\": [math.sin((2 * math.pi / waveform_length) * i) for i in range(0, waveform_length)],\n", " \"index\": 1,\n", " },\n", " \"sawtooth\": {\n", " \"data\": [(1.0 / (waveform_length)) * i for i in range(0, waveform_length)],\n", " \"index\": 2,\n", " },\n", " \"block\": {\"data\": [1.0 for i in range(0, waveform_length)], \"index\": 3},\n", "}" ] }, { "cell_type": "markdown", "id": "85f7f0a2", "metadata": {}, "source": [ "Let's plot the waveforms to see what we have created." ] }, { "cell_type": "code", "execution_count": 10, "id": "7eee3110", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:11.071909Z", "iopub.status.busy": "2024-03-28T14:37:11.070904Z", "iopub.status.idle": "2024-03-28T14:37:11.289091Z", "shell.execute_reply": "2024-03-28T14:37:11.288092Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "time = np.arange(0, max(map(lambda d: len(d[\"data\"]), waveforms.values())), 1)\n", "fig, ax = plt.subplots(1, 1, figsize=(10, 10 / 1.61))\n", "\n", "for wf, d in waveforms.items():\n", " ax.plot(time[: len(d[\"data\"])], d[\"data\"], \".-\", linewidth=0.5, label=wf)\n", "\n", "ax.legend(loc=4)\n", "ax.grid(alpha=1 / 10)\n", "ax.set_ylabel(\"Waveform primitive amplitude\")\n", "ax.set_xlabel(\"Time (ns)\")\n", "\n", "plt.draw()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "a359a3e9", "metadata": {}, "source": [ "Create Q1ASM program\n", "--------------------\n", "\n", "Now that we have the waveforms for the sequence, we need a Q1ASM program that sequences the waveforms as previously described." ] }, { "cell_type": "code", "execution_count": 11, "id": "91ebce15", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:11.294923Z", "iopub.status.busy": "2024-03-28T14:37:11.293444Z", "iopub.status.idle": "2024-03-28T14:37:11.306570Z", "shell.execute_reply": "2024-03-28T14:37:11.303889Z" } }, "outputs": [], "source": [ "# Sequence program.\n", "seq_prog = \"\"\"\n", " wait_sync 4 #Wait for synchronization\n", " reset_ph #Reset absolute phase\n", " upd_param 4 #Update all parameters and wait 4ns\n", "start: move 4,R0 #Init number of waveforms\n", " move 0,R1 #Init waveform index\n", "\n", "mult_wave_loop: move 166,R2 #Init number of single wave loops (increasing wait)\n", " move 166,R3 #Init number of single wave loops (decreasing wait)\n", " move 24,R4 #Init number of dynamic wait time (total of 4us)\n", " move 3976,R5 #Init number of dynamic wait time remainder\n", " move 32768,R6 #Init gain (Maximum gain)\n", "\n", "sngl_wave_loop_0: move 800,R7 #Init number of long wait loops (total of 40ms)\n", " set_mrk 15 #Set marker to 0xF\n", " upd_param 4 #Update all parameters and wait 4ns\n", " set_mrk 0 #Set marker to 0\n", " upd_param 96 #Update all parameters and wait 96ns\n", "\n", " wait R4 #Dynamic wait\n", " add R4,24,R4 #Increase wait\n", "\n", " set_mrk 1 #Set marker to 1\n", " play R1,R1,996 #Play waveform and wait 996ns\n", " set_mrk 0 #Set marker to 0\n", " upd_param 4 #Update all parameters and wait for 4ns\n", "\n", " wait R5 #Compensate previous dynamic wait\n", " sub R5,24,R5 #Decrease wait\n", "\n", " sub R6,98,R6 #Decrease gain\n", " nop\n", " set_awg_gain R6,R6 #Set gain\n", "\n", "long_wait_loop_0: wait 50000 #Wait 50 us\n", " loop R7,@long_wait_loop_0 #Wait total of 40ms\n", " loop R2,@sngl_wave_loop_0 #Repeat single wave loop\n", "\n", "sngl_wave_loop_1: move 800,R7 #Init number of long wait loops (total of 40ms)\n", " set_mrk 15 #Set marker to 0xF\n", " upd_param 8 #Update all parameters and wait 8ns\n", " set_mrk 0 #Set marker to 0\n", " upd_param 92 #Update all parameters and wait 92ns\n", "\n", " wait R4 #Dynamic wait\n", " sub R4,24,R4 #Decrease wait\n", "\n", " set_mrk 1 #Set marker to 1\n", " play R1,R1,996 #Play waveform and wait 996ns\n", " set_mrk 0 #Set marker to 0\n", " upd_param 4 #Update all parameters and wait 4ns\n", "\n", " wait R5 #Compensate previous dynamic wait\n", " add R5,24,R5 #Increase wait\n", "\n", " sub R6,98,R6 #Decrease gain\n", " nop\n", " set_awg_gain R6,R6 #Set gain\n", "\n", "long_wait_loop_1: wait 50000 #Wait for 50 us\n", " loop R7,@long_wait_loop_1 #Wait total of 40ms\n", " loop R3,@sngl_wave_loop_1 #Repeat single wave loop\n", "\n", " add R1,1,R1 #Adjust waveform index\n", " loop R0,@mult_wave_loop #Repeat with next waveform envelope\n", " jmp @start #Repeat entire sequence\n", "\"\"\"" ] }, { "cell_type": "markdown", "id": "23f4a1c3", "metadata": {}, "source": [ "Upload sequence\n", "---------------\n", "\n", "Now that we have the waveforms and Q1ASM program, we can combine them in a sequence stored in a JSON file." ] }, { "cell_type": "code", "execution_count": 12, "id": "e48ef216", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:11.312078Z", "iopub.status.busy": "2024-03-28T14:37:11.310571Z", "iopub.status.idle": "2024-03-28T14:37:11.335967Z", "shell.execute_reply": "2024-03-28T14:37:11.334442Z" } }, "outputs": [], "source": [ "# Add sequence to single dictionary and write to JSON file.\n", "sequence = {\n", " \"waveforms\": waveforms,\n", " \"weights\": {},\n", " \"acquisitions\": {},\n", " \"program\": seq_prog,\n", "}\n", "with open(\"sequence.json\", \"w\", encoding=\"utf-8\") as file:\n", " json.dump(sequence, file, indent=4)\n", " file.close()" ] }, { "cell_type": "markdown", "id": "b09036b5", "metadata": {}, "source": [ "Let's write the JSON file to the instruments. We will use sequencer 0 and 1, which will drive outputs $\\text{O}^{[1-2]}$ and $\\text{O}^{[3-4]}$ respectively." ] }, { "cell_type": "code", "execution_count": 13, "id": "cfa11733", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:11.339974Z", "iopub.status.busy": "2024-03-28T14:37:11.338973Z", "iopub.status.idle": "2024-03-28T14:37:11.520865Z", "shell.execute_reply": "2024-03-28T14:37:11.519863Z" } }, "outputs": [], "source": [ "# Upload sequence.\n", "module.sequencer0.sequence(\"sequence.json\")\n", "module.sequencer1.sequence(\"sequence.json\")" ] }, { "cell_type": "markdown", "id": "4a182ae3", "metadata": {}, "source": [ "Play sequence\n", "-------------\n", "\n", "The sequence has been uploaded to the instrument. Now we need to configure the sequencers in the instrument to use the `wait_sync` instruction\n", "at the start of the Q1ASM program to synchronize and to enable the hardware-based modulation at 10MHz." ] }, { "cell_type": "code", "execution_count": 14, "id": "36f90e59", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:11.525588Z", "iopub.status.busy": "2024-03-28T14:37:11.525588Z", "iopub.status.idle": "2024-03-28T14:37:11.675800Z", "shell.execute_reply": "2024-03-28T14:37:11.673710Z" } }, "outputs": [], "source": [ "# Configure the sequencers to synchronize and enable modulation at 10MHz.\n", "module.sequencer0.sync_en(True)\n", "module.sequencer0.mod_en_awg(True)\n", "module.sequencer0.nco_freq(10e6)\n", "module.sequencer1.sync_en(True)\n", "module.sequencer1.mod_en_awg(True)\n", "module.sequencer1.nco_freq(10e6)\n", "\n", "# Map sequencers to specific outputs (but first disable all sequencer connections).\n", "module.disconnect_outputs()\n", "\n", "# If it is a QRM, we only map sequencer 0 to the outputs.\n", "module.sequencer0.connect_sequencer(\"out0_1\")\n", "if module.is_qcm_type:\n", " module.sequencer0.connect_sequencer(\"out2_3\")" ] }, { "cell_type": "markdown", "id": "4c7b1887", "metadata": {}, "source": [ "Now let's start the sequence. If you want to observe the sequence, this is the time to connect an oscilloscope to marker output 1 and one or more\n", "of the four outputs. Configure the oscilloscope to trigger on marker output 1." ] }, { "cell_type": "code", "execution_count": 15, "id": "e81b4a4b", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:11.680794Z", "iopub.status.busy": "2024-03-28T14:37:11.680794Z", "iopub.status.idle": "2024-03-28T14:37:11.721584Z", "shell.execute_reply": "2024-03-28T14:37:11.719938Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Status: RUNNING, Flags: NONE\n", "Status: RUNNING, Flags: NONE\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\work\\code\\qblox_instruments_install\\qblox_instruments\\native\\generic_func.py:2414: FutureWarning: \n", " After June 2024, this feature is subject to removal in future releases.\n", " Transition to an alternative is advised.\n", " See https://qblox-qblox-instruments.readthedocs-hosted.com/en/main/getting_started/deprecated.html\n", " \n", " warnings.warn(\n", "c:\\work\\code\\qblox_instruments_install\\qblox_instruments\\native\\generic_func.py:85: FutureWarning: \n", " After June 2024, this feature is subject to removal in future releases.\n", " Transition to an alternative is advised.\n", " See https://qblox-qblox-instruments.readthedocs-hosted.com/en/main/getting_started/deprecated.html\n", " \n", " self._deprecation_warning()\n" ] } ], "source": [ "# Arm and start sequencers.\n", "module.arm_sequencer(0)\n", "module.arm_sequencer(1)\n", "module.start_sequencer()\n", "\n", "# Print status of sequencers.\n", "print(module.get_sequencer_state(0))\n", "print(module.get_sequencer_state(1))" ] }, { "cell_type": "markdown", "id": "d1d11d96", "metadata": {}, "source": [ "Before we continue, have you looked at the oscilloscope? Pretty nifty right? This is just an example. Imagine what else you can do with the power of\n", "the sequencers to control and/or speed up your experiments." ] }, { "cell_type": "markdown", "id": "7a049eea", "metadata": { "tags": [] }, "source": [ "Stop\n", "----\n", "\n", "Finally, let's stop the sequencers if they haven't already and close the instrument connection. One can also display a detailed snapshot containing the instrument parameters before\n", "closing the connection by uncommenting the corresponding lines." ] }, { "cell_type": "code", "execution_count": 16, "id": "9f606754", "metadata": { "execution": { "iopub.execute_input": "2024-03-28T14:37:11.726644Z", "iopub.status.busy": "2024-03-28T14:37:11.725763Z", "iopub.status.idle": "2024-03-28T14:37:21.493417Z", "shell.execute_reply": "2024-03-28T14:37:21.491390Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Status: STOPPED, Flags: FORCED_STOP\n", "Status: STOPPED, Flags: FORCED_STOP\n", "\n", "Snapshot:\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "cluster0_module4:\n", "\tparameter value\n", "--------------------------------------------------------------------------------\n", "in0_gain :\t-6 (dB)\n", "in0_offset :\t0 (V)\n", "in1_gain :\t-6 (dB)\n", "in1_offset :\t0 (V)\n", "marker0_inv_en :\tFalse \n", "marker1_inv_en :\tFalse \n", "marker2_inv_en :\tFalse \n", "marker3_inv_en :\tFalse \n", "out0_offset :\t0 (V)\n", "out1_offset :\t0 (V)\n", "present :\tTrue \n", "scope_acq_avg_mode_en_path0 :\tFalse \n", "scope_acq_avg_mode_en_path1 :\tFalse \n", "scope_acq_sequencer_select :\t0 \n", "scope_acq_trigger_level_path0 :\t0 \n", "scope_acq_trigger_level_path1 :\t0 \n", "scope_acq_trigger_mode_path0 :\tsequencer \n", "scope_acq_trigger_mode_path1 :\tsequencer \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "cluster0_module4_sequencer0:\n", "\tparameter value\n", "--------------------------------------------------------------------------------\n", "connect_acq_I :\tin0 \n", "connect_acq_Q :\tin1 \n", "connect_out0 :\tI \n", "connect_out1 :\tQ \n", "cont_mode_en_awg_path0 :\tFalse \n", "cont_mode_en_awg_path1 :\tFalse \n", "cont_mode_waveform_idx_awg_path0 :\t0 \n", "cont_mode_waveform_idx_awg_path1 :\t0 \n", "demod_en_acq :\tFalse \n", "gain_awg_path0 :\t1 \n", "gain_awg_path1 :\t1 \n", "integration_length_acq :\t1024 \n", "marker_ovr_en :\tFalse \n", "marker_ovr_value :\t0 \n", "mixer_corr_gain_ratio :\t1 \n", "mixer_corr_phase_offset_degree :\t-0 \n", "mod_en_awg :\tTrue \n", "nco_freq :\t1e+07 (Hz)\n", "nco_phase_offs :\t0 (Degrees)\n", "nco_prop_delay_comp :\t0 (ns)\n", "nco_prop_delay_comp_en :\tFalse (ns)\n", "offset_awg_path0 :\t0 \n", "offset_awg_path1 :\t0 \n", "sync_en :\tTrue \n", "thresholded_acq_marker_address :\t1 \n", "thresholded_acq_marker_en :\tFalse \n", "thresholded_acq_marker_invert :\tFalse \n", "thresholded_acq_rotation :\t0 (Degrees)\n", "thresholded_acq_threshold :\t0 \n", "thresholded_acq_trigger_address :\t1 \n", "thresholded_acq_trigger_en :\tFalse \n", "thresholded_acq_trigger_invert :\tFalse \n", "trigger10_count_threshold :\t1 \n", "trigger10_threshold_invert :\tFalse \n", "trigger11_count_threshold :\t1 \n", "trigger11_threshold_invert :\tFalse \n", "trigger12_count_threshold :\t1 \n", "trigger12_threshold_invert :\tFalse \n", "trigger13_count_threshold :\t1 \n", "trigger13_threshold_invert :\tFalse \n", "trigger14_count_threshold :\t1 \n", "trigger14_threshold_invert :\tFalse \n", "trigger15_count_threshold :\t1 \n", "trigger15_threshold_invert :\tFalse \n", "trigger1_count_threshold :\t1 \n", "trigger1_threshold_invert :\tFalse \n", "trigger2_count_threshold :\t1 \n", "trigger2_threshold_invert :\tFalse \n", "trigger3_count_threshold :\t1 \n", "trigger3_threshold_invert :\tFalse \n", "trigger4_count_threshold :\t1 \n", "trigger4_threshold_invert :\tFalse \n", "trigger5_count_threshold :\t1 \n", "trigger5_threshold_invert :\tFalse \n", "trigger6_count_threshold :\t1 \n", "trigger6_threshold_invert :\tFalse \n", "trigger7_count_threshold :\t1 \n", "trigger7_threshold_invert :\tFalse \n", "trigger8_count_threshold :\t1 \n", "trigger8_threshold_invert :\tFalse \n", "trigger9_count_threshold :\t1 \n", "trigger9_threshold_invert :\tFalse \n", "ttl_acq_auto_bin_incr_en :\tFalse \n", "ttl_acq_input_select :\t0 \n", "ttl_acq_threshold :\t0 \n", "upsample_rate_awg_path0 :\t0 \n", "upsample_rate_awg_path1 :\t0 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "cluster0_module4_sequencer1:\n", "\tparameter value\n", "--------------------------------------------------------------------------------\n", "connect_acq_I :\tin0 \n", "connect_acq_Q :\tin1 \n", "connect_out0 :\toff \n", "connect_out1 :\toff \n", "cont_mode_en_awg_path0 :\tFalse \n", "cont_mode_en_awg_path1 :\tFalse \n", "cont_mode_waveform_idx_awg_path0 :\t0 \n", "cont_mode_waveform_idx_awg_path1 :\t0 \n", "demod_en_acq :\tFalse \n", "gain_awg_path0 :\t1 \n", "gain_awg_path1 :\t1 \n", "integration_length_acq :\t1024 \n", "marker_ovr_en :\tFalse \n", "marker_ovr_value :\t0 \n", "mixer_corr_gain_ratio :\t1 \n", "mixer_corr_phase_offset_degree :\t-0 \n", "mod_en_awg :\tTrue \n", "nco_freq :\t1e+07 (Hz)\n", "nco_phase_offs :\t0 (Degrees)\n", "nco_prop_delay_comp :\t0 (ns)\n", "nco_prop_delay_comp_en :\tFalse (ns)\n", "offset_awg_path0 :\t0 \n", "offset_awg_path1 :\t0 \n", "sync_en :\tTrue \n", "thresholded_acq_marker_address :\t1 \n", "thresholded_acq_marker_en :\tFalse \n", "thresholded_acq_marker_invert :\tFalse \n", "thresholded_acq_rotation :\t0 (Degrees)\n", "thresholded_acq_threshold :\t0 \n", "thresholded_acq_trigger_address :\t1 \n", "thresholded_acq_trigger_en :\tFalse \n", "thresholded_acq_trigger_invert :\tFalse \n", "trigger10_count_threshold :\t1 \n", "trigger10_threshold_invert :\tFalse \n", "trigger11_count_threshold :\t1 \n", "trigger11_threshold_invert :\tFalse \n", "trigger12_count_threshold :\t1 \n", "trigger12_threshold_invert :\tFalse \n", "trigger13_count_threshold :\t1 \n", "trigger13_threshold_invert :\tFalse \n", "trigger14_count_threshold :\t1 \n", "trigger14_threshold_invert :\tFalse \n", "trigger15_count_threshold :\t1 \n", "trigger15_threshold_invert :\tFalse \n", "trigger1_count_threshold :\t1 \n", "trigger1_threshold_invert :\tFalse \n", "trigger2_count_threshold :\t1 \n", "trigger2_threshold_invert :\tFalse \n", "trigger3_count_threshold :\t1 \n", "trigger3_threshold_invert :\tFalse \n", "trigger4_count_threshold :\t1 \n", "trigger4_threshold_invert :\tFalse \n", "trigger5_count_threshold :\t1 \n", "trigger5_threshold_invert :\tFalse \n", "trigger6_count_threshold :\t1 \n", "trigger6_threshold_invert :\tFalse \n", "trigger7_count_threshold :\t1 \n", "trigger7_threshold_invert :\tFalse \n", "trigger8_count_threshold :\t1 \n", "trigger8_threshold_invert :\tFalse \n", "trigger9_count_threshold :\t1 \n", "trigger9_threshold_invert :\tFalse \n", "ttl_acq_auto_bin_incr_en :\tFalse \n", "ttl_acq_input_select :\t0 \n", "ttl_acq_threshold :\t0 \n", "upsample_rate_awg_path0 :\t0 \n", "upsample_rate_awg_path1 :\t0 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "cluster0_module4_sequencer2:\n", "\tparameter value\n", "--------------------------------------------------------------------------------\n", "connect_acq_I :\tin0 \n", "connect_acq_Q :\tin1 \n", "connect_out0 :\toff \n", "connect_out1 :\toff \n", "cont_mode_en_awg_path0 :\tFalse \n", "cont_mode_en_awg_path1 :\tFalse \n", "cont_mode_waveform_idx_awg_path0 :\t0 \n", "cont_mode_waveform_idx_awg_path1 :\t0 \n", "demod_en_acq :\tFalse \n", "gain_awg_path0 :\t1 \n", "gain_awg_path1 :\t1 \n", "integration_length_acq :\t1024 \n", "marker_ovr_en :\tFalse \n", "marker_ovr_value :\t0 \n", "mixer_corr_gain_ratio :\t1 \n", "mixer_corr_phase_offset_degree :\t-0 \n", "mod_en_awg :\tFalse \n", "nco_freq :\t0 (Hz)\n", "nco_phase_offs :\t0 (Degrees)\n", "nco_prop_delay_comp :\t0 (ns)\n", "nco_prop_delay_comp_en :\tFalse (ns)\n", "offset_awg_path0 :\t0 \n", "offset_awg_path1 :\t0 \n", "sync_en :\tFalse \n", "thresholded_acq_marker_address :\t1 \n", "thresholded_acq_marker_en :\tFalse \n", "thresholded_acq_marker_invert :\tFalse \n", "thresholded_acq_rotation :\t0 (Degrees)\n", "thresholded_acq_threshold :\t0 \n", "thresholded_acq_trigger_address :\t1 \n", "thresholded_acq_trigger_en :\tFalse \n", "thresholded_acq_trigger_invert :\tFalse \n", "trigger10_count_threshold :\t1 \n", "trigger10_threshold_invert :\tFalse \n", "trigger11_count_threshold :\t1 \n", "trigger11_threshold_invert :\tFalse \n", "trigger12_count_threshold :\t1 \n", "trigger12_threshold_invert :\tFalse \n", "trigger13_count_threshold :\t1 \n", "trigger13_threshold_invert :\tFalse \n", "trigger14_count_threshold :\t1 \n", "trigger14_threshold_invert :\tFalse \n", "trigger15_count_threshold :\t1 \n", "trigger15_threshold_invert :\tFalse \n", "trigger1_count_threshold :\t1 \n", "trigger1_threshold_invert :\tFalse \n", "trigger2_count_threshold :\t1 \n", "trigger2_threshold_invert :\tFalse \n", "trigger3_count_threshold :\t1 \n", "trigger3_threshold_invert :\tFalse \n", "trigger4_count_threshold :\t1 \n", "trigger4_threshold_invert :\tFalse \n", "trigger5_count_threshold :\t1 \n", "trigger5_threshold_invert :\tFalse \n", "trigger6_count_threshold :\t1 \n", "trigger6_threshold_invert :\tFalse \n", "trigger7_count_threshold :\t1 \n", "trigger7_threshold_invert :\tFalse \n", "trigger8_count_threshold :\t1 \n", "trigger8_threshold_invert :\tFalse \n", "trigger9_count_threshold :\t1 \n", "trigger9_threshold_invert :\tFalse \n", "ttl_acq_auto_bin_incr_en :\tFalse \n", "ttl_acq_input_select :\t0 \n", "ttl_acq_threshold :\t0 \n", "upsample_rate_awg_path0 :\t0 \n", "upsample_rate_awg_path1 :\t0 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "cluster0_module4_sequencer3:\n", "\tparameter value\n", "--------------------------------------------------------------------------------\n", "connect_acq_I :\tin0 \n", "connect_acq_Q :\tin1 \n", "connect_out0 :\toff \n", "connect_out1 :\toff \n", "cont_mode_en_awg_path0 :\tFalse \n", "cont_mode_en_awg_path1 :\tFalse \n", "cont_mode_waveform_idx_awg_path0 :\t0 \n", "cont_mode_waveform_idx_awg_path1 :\t0 \n", "demod_en_acq :\tFalse \n", "gain_awg_path0 :\t1 \n", "gain_awg_path1 :\t1 \n", "integration_length_acq :\t1024 \n", "marker_ovr_en :\tFalse \n", "marker_ovr_value :\t0 \n", "mixer_corr_gain_ratio :\t1 \n", "mixer_corr_phase_offset_degree :\t-0 \n", "mod_en_awg :\tFalse \n", "nco_freq :\t0 (Hz)\n", "nco_phase_offs :\t0 (Degrees)\n", "nco_prop_delay_comp :\t0 (ns)\n", "nco_prop_delay_comp_en :\tFalse (ns)\n", "offset_awg_path0 :\t0 \n", "offset_awg_path1 :\t0 \n", "sync_en :\tFalse \n", "thresholded_acq_marker_address :\t1 \n", "thresholded_acq_marker_en :\tFalse \n", "thresholded_acq_marker_invert :\tFalse \n", "thresholded_acq_rotation :\t0 (Degrees)\n", "thresholded_acq_threshold :\t0 \n", "thresholded_acq_trigger_address :\t1 \n", "thresholded_acq_trigger_en :\tFalse \n", "thresholded_acq_trigger_invert :\tFalse \n", "trigger10_count_threshold :\t1 \n", "trigger10_threshold_invert :\tFalse \n", "trigger11_count_threshold :\t1 \n", "trigger11_threshold_invert :\tFalse \n", "trigger12_count_threshold :\t1 \n", "trigger12_threshold_invert :\tFalse \n", "trigger13_count_threshold :\t1 \n", "trigger13_threshold_invert :\tFalse \n", "trigger14_count_threshold :\t1 \n", "trigger14_threshold_invert :\tFalse \n", "trigger15_count_threshold :\t1 \n", "trigger15_threshold_invert :\tFalse \n", "trigger1_count_threshold :\t1 \n", "trigger1_threshold_invert :\tFalse \n", "trigger2_count_threshold :\t1 \n", "trigger2_threshold_invert :\tFalse \n", "trigger3_count_threshold :\t1 \n", "trigger3_threshold_invert :\tFalse \n", "trigger4_count_threshold :\t1 \n", "trigger4_threshold_invert :\tFalse \n", "trigger5_count_threshold :\t1 \n", "trigger5_threshold_invert :\tFalse \n", "trigger6_count_threshold :\t1 \n", "trigger6_threshold_invert :\tFalse \n", "trigger7_count_threshold :\t1 \n", "trigger7_threshold_invert :\tFalse \n", "trigger8_count_threshold :\t1 \n", "trigger8_threshold_invert :\tFalse \n", "trigger9_count_threshold :\t1 \n", "trigger9_threshold_invert :\tFalse \n", "ttl_acq_auto_bin_incr_en :\tFalse \n", "ttl_acq_input_select :\t0 \n", "ttl_acq_threshold :\t0 \n", "upsample_rate_awg_path0 :\t0 \n", "upsample_rate_awg_path1 :\t0 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "cluster0_module4_sequencer4:\n", "\tparameter value\n", "--------------------------------------------------------------------------------\n", "connect_acq_I :\tin0 \n", "connect_acq_Q :\tin1 \n", "connect_out0 :\toff \n", "connect_out1 :\toff \n", "cont_mode_en_awg_path0 :\tFalse \n", "cont_mode_en_awg_path1 :\tFalse \n", "cont_mode_waveform_idx_awg_path0 :\t0 \n", "cont_mode_waveform_idx_awg_path1 :\t0 \n", "demod_en_acq :\tFalse \n", "gain_awg_path0 :\t1 \n", "gain_awg_path1 :\t1 \n", "integration_length_acq :\t1024 \n", "marker_ovr_en :\tFalse \n", "marker_ovr_value :\t0 \n", "mixer_corr_gain_ratio :\t1 \n", "mixer_corr_phase_offset_degree :\t-0 \n", "mod_en_awg :\tFalse \n", "nco_freq :\t0 (Hz)\n", "nco_phase_offs :\t0 (Degrees)\n", "nco_prop_delay_comp :\t0 (ns)\n", "nco_prop_delay_comp_en :\tFalse (ns)\n", "offset_awg_path0 :\t0 \n", "offset_awg_path1 :\t0 \n", "sync_en :\tFalse \n", "thresholded_acq_marker_address :\t1 \n", "thresholded_acq_marker_en :\tFalse \n", "thresholded_acq_marker_invert :\tFalse \n", "thresholded_acq_rotation :\t0 (Degrees)\n", "thresholded_acq_threshold :\t0 \n", "thresholded_acq_trigger_address :\t1 \n", "thresholded_acq_trigger_en :\tFalse \n", "thresholded_acq_trigger_invert :\tFalse \n", "trigger10_count_threshold :\t1 \n", "trigger10_threshold_invert :\tFalse \n", "trigger11_count_threshold :\t1 \n", "trigger11_threshold_invert :\tFalse \n", "trigger12_count_threshold :\t1 \n", "trigger12_threshold_invert :\tFalse \n", "trigger13_count_threshold :\t1 \n", "trigger13_threshold_invert :\tFalse \n", "trigger14_count_threshold :\t1 \n", "trigger14_threshold_invert :\tFalse \n", "trigger15_count_threshold :\t1 \n", "trigger15_threshold_invert :\tFalse \n", "trigger1_count_threshold :\t1 \n", "trigger1_threshold_invert :\tFalse \n", "trigger2_count_threshold :\t1 \n", "trigger2_threshold_invert :\tFalse \n", "trigger3_count_threshold :\t1 \n", "trigger3_threshold_invert :\tFalse \n", "trigger4_count_threshold :\t1 \n", "trigger4_threshold_invert :\tFalse \n", "trigger5_count_threshold :\t1 \n", "trigger5_threshold_invert :\tFalse \n", "trigger6_count_threshold :\t1 \n", "trigger6_threshold_invert :\tFalse \n", "trigger7_count_threshold :\t1 \n", "trigger7_threshold_invert :\tFalse \n", "trigger8_count_threshold :\t1 \n", "trigger8_threshold_invert :\tFalse \n", "trigger9_count_threshold :\t1 \n", "trigger9_threshold_invert :\tFalse \n", "ttl_acq_auto_bin_incr_en :\tFalse \n", "ttl_acq_input_select :\t0 \n", "ttl_acq_threshold :\t0 \n", "upsample_rate_awg_path0 :\t0 \n", "upsample_rate_awg_path1 :\t0 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "cluster0_module4_sequencer5:\n", "\tparameter value\n", "--------------------------------------------------------------------------------\n", "connect_acq_I :\tin0 \n", "connect_acq_Q :\tin1 \n", "connect_out0 :\toff \n", "connect_out1 :\toff \n", "cont_mode_en_awg_path0 :\tFalse \n", "cont_mode_en_awg_path1 :\tFalse \n", "cont_mode_waveform_idx_awg_path0 :\t0 \n", "cont_mode_waveform_idx_awg_path1 :\t0 \n", "demod_en_acq :\tFalse \n", "gain_awg_path0 :\t1 \n", "gain_awg_path1 :\t1 \n", "integration_length_acq :\t1024 \n", "marker_ovr_en :\tFalse \n", "marker_ovr_value :\t0 \n", "mixer_corr_gain_ratio :\t1 \n", "mixer_corr_phase_offset_degree :\t-0 \n", "mod_en_awg :\tFalse \n", "nco_freq :\t0 (Hz)\n", "nco_phase_offs :\t0 (Degrees)\n", "nco_prop_delay_comp :\t0 (ns)\n", "nco_prop_delay_comp_en :\tFalse (ns)\n", "offset_awg_path0 :\t0 \n", "offset_awg_path1 :\t0 \n", "sync_en :\tFalse \n", "thresholded_acq_marker_address :\t1 \n", "thresholded_acq_marker_en :\tFalse \n", "thresholded_acq_marker_invert :\tFalse \n", "thresholded_acq_rotation :\t0 (Degrees)\n", "thresholded_acq_threshold :\t0 \n", "thresholded_acq_trigger_address :\t1 \n", "thresholded_acq_trigger_en :\tFalse \n", "thresholded_acq_trigger_invert :\tFalse \n", "trigger10_count_threshold :\t1 \n", "trigger10_threshold_invert :\tFalse \n", "trigger11_count_threshold :\t1 \n", "trigger11_threshold_invert :\tFalse \n", "trigger12_count_threshold :\t1 \n", "trigger12_threshold_invert :\tFalse \n", "trigger13_count_threshold :\t1 \n", "trigger13_threshold_invert :\tFalse \n", "trigger14_count_threshold :\t1 \n", "trigger14_threshold_invert :\tFalse \n", "trigger15_count_threshold :\t1 \n", "trigger15_threshold_invert :\tFalse \n", "trigger1_count_threshold :\t1 \n", "trigger1_threshold_invert :\tFalse \n", "trigger2_count_threshold :\t1 \n", "trigger2_threshold_invert :\tFalse \n", "trigger3_count_threshold :\t1 \n", "trigger3_threshold_invert :\tFalse \n", "trigger4_count_threshold :\t1 \n", "trigger4_threshold_invert :\tFalse \n", "trigger5_count_threshold :\t1 \n", "trigger5_threshold_invert :\tFalse \n", "trigger6_count_threshold :\t1 \n", "trigger6_threshold_invert :\tFalse \n", "trigger7_count_threshold :\t1 \n", "trigger7_threshold_invert :\tFalse \n", "trigger8_count_threshold :\t1 \n", "trigger8_threshold_invert :\tFalse \n", "trigger9_count_threshold :\t1 \n", "trigger9_threshold_invert :\tFalse \n", "ttl_acq_auto_bin_incr_en :\tFalse \n", "ttl_acq_input_select :\t0 \n", "ttl_acq_threshold :\t0 \n", "upsample_rate_awg_path0 :\t0 \n", "upsample_rate_awg_path1 :\t0 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Status: OKAY, Flags: NONE, Slot flags: NONE\n" ] } ], "source": [ "# Stop both sequencers.\n", "module.stop_sequencer()\n", "\n", "# Print status of both sequencers (should now say it is stopped).\n", "print(module.get_sequencer_state(0))\n", "print(module.get_sequencer_state(1))\n", "print()\n", "\n", "print(\"Snapshot:\")\n", "module.print_readable_snapshot(update=True)\n", "\n", "# Reset the cluster\n", "cluster.reset()\n", "print(cluster.get_system_state())" ] } ], "metadata": { "jupytext": { "formats": "ipynb,py:percent" }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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 }