It is designed to be an
intermediate representation that can be used by higher-level compilers to communicate with quantum hardware, and allows for the description of a wide range of quantum operations, as well as classical feed-forward flow control based on measurement outcomes. The language includes a mechanism for describing explicit timing of instructions, and allows for the attachment of low-level definitions to gates for tasks such as calibration. The language was first described in a paper published in July 2017, The language has similar qualities to traditional
hardware description languages such as
Verilog. OpenQASM defines its version at the head of a source file as a number, as in the declaration: OPENQASM 3; The level of OpenQASM's original published implementations is OpenQASM 2.0. Version 3.0 of the specification is the current one and can be viewed at the OpenQASM repository on
GitHub. == Examples ==