OpenQASM 3: A broader and deeper quantum assembly language
Andrew W. Cross, Ali Javadi-Abhari, Thomas Alexander, Niel de Beaudrap, Lev S. Bishop, Steven Heidel, Colm A. Ryan, Prasahnt Sivarajah, John Smolin, Jay M. Gambetta, Blake R. Johnson
TL;DR
OpenQASM 3 broadens quantum assembly language capabilities to integrate real-time classical control with quantum circuits, delivering a multi-level IR that spans logical circuit descriptions to physical pulse implementations. It introduces continuous gate parameterization, gate modifiers, non-unitary operations, and real-time classical computing, all within a framework designed to remain compatible with OpenQASM 2 while enabling richer hardware-aware descriptions. A key contribution is the incorporation of timing, stretchy delays, and box/barrier mechanisms to manage synchronization and optimization in the presence of varying gate durations, alongside an OpenPulse-calibration pathway for hardware-specific pulse control. The work positions OpenQASM 3 as a versatile, governance-driven, ecosystem-friendly language for designing, optimizing, and calibrating quantum circuits across diverse hardware platforms while supporting parameterized and externally computed components for near-time quantum–classical workflows.
Abstract
Quantum assembly languages are machine-independent languages that traditionally describe quantum computation in the circuit model. Open quantum assembly language (OpenQASM 2) was proposed as an imperative programming language for quantum circuits based on earlier QASM dialects. In principle, any quantum computation could be described using OpenQASM 2, but there is a need to describe a broader set of circuits beyond the language of qubits and gates. By examining interactive use cases, we recognize two different timescales of quantum-classical interactions: real-time classical computations that must be performed within the coherence times of the qubits, and near-time computations with less stringent timing. Since the near-time domain is adequately described by existing programming frameworks, we choose in OpenQASM 3 to focus on the real-time domain, which must be more tightly coupled to the execution of quantum operations. We add support for arbitrary control flow as well as calling external classical functions. In addition, we recognize the need to describe circuits at multiple levels of specificity, and therefore we extend the language to include timing, pulse control, and gate modifiers. These new language features create a multi-level intermediate representation for circuit development and optimization, as well as control sequence implementation for calibration, characterization, and error mitigation.
