# Introduction

With LabOne Q, you can take full advantage of the Zurich Instruments system control approach QCCS System Control. This approach handles all instruments in any combination as one system while remaining synchronized and controlled through one software interface (API).

Figure 1. LabOne Q Components

## Domain Specific Language

Figure 1 shows the main components of LabOne Q. It consists of a domain-specific language (DSL) which you will use for the definition of your quantum experiments.

LabOne Q separates the data that defines your instrument setup, the calibration, and the experiment definition. During experiment execution, setup data is static while calibration data is kept persistent over subsequent executions. The experiment data is dynamic.

You’ll start using LabOne Q with the DSL. First, you’ll define your instrument setup and the connections of individual setup components. The DSL uses logical signal lines to abstract the instruments, the physical channels, and the hardware settings. These settings are all saved in a DeviceSetup object and managed by LabOne Q. You only need to think and program in terms of logical signal lines that reflect the physical connections to a qubit, yet you have a whole stack of instruments with complex settings in your lab.

In a second step you define your single-qubit or multi-qubit characterization experiment or quantum circuit in the DSL on the experimental signal lines. All definitions are set offline, because only later the code is executed on the hardware. For such a situation, a declarative programming approach is useful to clearly separate directly executed Python code from code executed later by the Zurich Instruments hardware and to facilitate debugging. Nevertheless, the DSL code can also be written in an imperative form for better readability by indentation and scope. Declarative and imperative form are arbitrarily interchangeable and adaptable to your individual coding style.

You are able to change experimental settings like modulation frequencies or mixer calibrations and you define a pulse sequence with a pulse language that uses commands for playing and aligning pulses for driving and readout of your qubits. The DSL helps you to combine multiple pulses and complex sequences into sections which you use for single- and multi-qubit gates, cross-resonance gates and branching. Sections function as temporal and logical boundaries which help you to express and structure your desired experiment as a sequence of pulses and control flows, which is sorted not only in time but also in scope as you know it from Python. Control flows like sweeps, averages and a callback functionality to address any user-defined function give you the full flexibility for your experiments. Your individual quantum gates and full quantum circuits can be expressed with combinations of user-defined and optimized pulses as templates, and can be reused for multiple quantum information processing experiments.

## Session

The Session is the central part of LabOne Q that connects the definition of a setup, the instruments in the laboratory and the experiment you want to execute on the setup. You define a specific setup and experiment independently without the need for reprogramming when running the same experiment on different setups. From the Session you start the execution of your experiment, the Session will retrieve your results and will give you access to them. All data LabOne Q needs can be fully serialized (saved) and deserialized (loaded) via the Session. This enables you to store any data in a database and to reuse the data like stored experiments, results, instrument settings, pulses and waveforms any time, because all references are kept persistent. The Sessions enable LabOne Q to be used within other software frameworks, a queuing architecture, or cloud services.

## Compiler and Controller

Upon executing a quantum information processing experiment, LabOne Q first starts a Compiler that runs an offline pre-calculation of settings and waveform data for time sequences as well as an offline code generation for each instrument of the system. This compilation step enables a separation of the quantum information processing experiment into real-time and near-time parts: Real-time parts can be executed fast and directly on the Zurich Instruments hardware. In most cases, these parts are executed within the coherence time of the quantum device. Near-time parts are slower, but still take place online with the execution of the experiment. These parts allow for sweeps of arbitrary instrument settings, or execution of user-defined callback functions.

Following the compilation, the LabOne Q Controller accesses the generated code, uploads it to the devices and then starts and controls the experiment’s execution. This 'Compile and Control' approach enables users to optimally use the resources of their quantum device and avoid idle time whenever possible.

## Pulse Sheet Viewer

The Pulse Sheet Viewer visualizes the compiled experiment. You can explore the used signal lines, sections, pulse sequences, and pulses, as well as the control flows. The Pulse Sheet Viewer is an interactive html file which runs in the browser and is self contained. Thus, you can send it to others for discussions and analysis of experiments, use it for publications, as a reference and database for documentation, or you can also integrate it into a website to share it.

## Monitoring Tool

Large Quantum Computing Control Systems have the need to monitor the overall status of the system in some kind of control stand. The LabOne Q Monitoring Tool is a web application running in the browser that gives an overview over the status of all devices that are defined in the DSL and connected with the Session. The application is divided into two parts, the monitor server (back end) and the monitor client (front end). While the monitor server is a binary executable running on a PC, the monitor client is running in the browser. The monitor server is the interface between the LabOne data server (and the devices to be monitored) and the visual representation displayed in the browser. The visual representation can be integrated in a website and is a standalone product.