Why QUA?

Easiley implement complex quantum sequences with precise control of timing and alignment of qubit operations. Feed quantum measurements to classical processing and back in real-time for a fully integrated quantum-classical solution. smoothly scale with no software redesign.


Think it, Do it

Implement any protocol as easily as writing pseudocode while running it with the best possible performance. Describe any quantum experiment natively, from active reset to complex multi-qubit calibrations or quantum error correction sequences.

#2D Ramsey map

def Ramsey(t):
    play('pi_half', 'qubit')
    play('pi_half', 'qubit')
    align('qubit', 'resonator')
    measure('qubit', 'resonator', …, I)

with program() as 2D_Ramsey_Map:
    with for_(n, 0, n < N_avg, n + 1):
        with for_(f, f_min, f < f_max, f + df):
            update_frequency('qubit', f)
            with for_(t, t_min, t < t_max, D + dt):


Encompassing Quantum and Classical

QUA unifies quantum operations at the pulse level with classical resources including Turing-complete processing and control flow, allowing expression of every quantum control sequence with ease.

#2-point-Ramsey Real-Time Frequency Tracking

def 2-point-Ramsey_Tracking(): 
    with for_(n, 0, n < 2**any_power_of_two, n + 1): 
        assign(f, f_res_corr + plus_delta) 
        update_frequency('qubit', f)   		 
        assign(state_1, I > ge_threshold)
        assign(state_1_avg, state_1_avg_avg + (Cast.to_fixed(state_1) >> any_power_of_two))
        assign(f, f_res_corr + minus_delta) 
        update_frequency('qubit', f)   		 
        assign(state_2, I > ge_threshold)
        assign(state_2_avg, state_2_avg_avg + (Cast.to_fixed(state_2) >> any_power_of_two))
    corr = calculate_freq_correction(state_1_avg, state_2_avg)  

with program() as any_quantum_sequence:
    with for_(loops, 0, loops_max, loops + 1):


Grows with Your Setup

QUA scales with your roadmap, allowing you to code a thousand qubits as easily as a single qubit. No overhead, no rewriting codes, just seamless scaling. QUA removes any limitation in implementing your protocols, from the simplest to the most complex.

#Multi-qubit Active Reset and Ramsey

for qubit_n in qubits:
    measure(qubit_n, 'resonator', …, I)
    play('pi', qubit_n, condition = I > threshold)

    with for_(t, t_min, t < t_max, D + dt):
        Ramsey(qubit_n, t)

Quantum-Classical Programming

QUA combines quantum pulse-level operations with classical operations, making it Turing-complete for classical processing and providing comprehensive flow control. QUA is extremely intuitive and easy to use while still being comprehensive and powerful.

Executed in Real Time

Hosted within QM’s OPX+ controller and all OPX1000 control platform frontend modules is the unique PPU – classical processor that generates and manipulates in quantum pulses for qubits control and readout. It executes the codes formulated in QUA in real time for maximum performance and minimum latency.

Accelerating Community

QUA community rapidly accelerates. Experimentalists and software developers in hundreds of universities, national labs, HPC centers and enterprises all over the world share codes and results, allowing jumpstarting experiments, and reducing development time.

Parametric Pulse Programming

No long upload times and only minimal memory usage. Pulses are generated and manipulated on the fly.

Rich Workflows Library

From simple calibration and characterizations to QEC and real-time Bayesian estimations, numerus out-of-the-box workflows.

All Common Qubit Modalities

Superconducting, quantum dots, defect centers and optically addressable qubits.

What’s Possible with QUA?

Quantum Sensing

Quantum Technologies
Research & Development

Quantum Communication

Quantum Computing

Hybrid Quantum –
Classical Algorithmics

Quantum Computing

Quantum Firmware Development

QUA Community and Libraries

SWAP Spectroscopy Improved
with Predistortion Digital Filters

Qubit Frequency Tracking

Performed in the Lab of Prof. David Schuster in the University of Chicago.

Optimized Readout with Optimal Weights.


Performed in the Lab of Prof. Sorin Paraoanu in Aalto University.

DRAG Pulse Calibration

2D Atom Sorting

Performed in the Lab of Prof. Mark Saffman in the University of Wisconsin-Madison.

High resolution time-tagging

Performed in the lab of Prof. Faraon at Caltech.


Performed in the lab of Prof. Sekhar at Darmouth College.

Fast 2D scans using a spiral pattern

Performed in the lab of Prof. Natalia Ares in the University of Oxford.

Find additional QUA examples from labs across the world in the QUA GitHub zone, Access Here >>
Talk to us to learn how QUA can help you, for a QUA demo and for access to the growing QUA community.