Logo UniNA Logo Quasar

Clifford Synthesis

Choose how to start
📚 What are Clifford operators and why synthesize them? ▼

A Clifford operator is a quantum operation that maps Pauli operators (I, X, Y, Z and their tensor products) to Pauli operators under conjugation. The Clifford group is generated by just three gates: H, S, and CX.

Why are they important? Clifford operators appear everywhere in quantum computing: quantum error correction codes are built from Clifford circuits, the stabilizer formalism uses them for efficient classical simulation (Gottesman-Knill theorem), and many quantum algorithms contain large Clifford sub-circuits that can be optimized separately.

What is synthesis? Given a Clifford operator (described by its tableau), synthesis finds a quantum circuit that implements it. The challenge is finding a short circuit, especially one that respects the connectivity constraints of the target hardware (topology-aware synthesis).

From an operator to an executable circuit: A quantum operator describes the transformation to perform and can represent, for example, a quantum algorithm or one of its components. Synthesis constructs a quantum circuit whose gates implement exactly that operator.
Main synthesis goal: The synthesized circuit should respect the selected hardware constraints, including qubit connectivity and the supported native gate set. It should also use as few gates and layers as possible, especially minimizing 2-qubit gates such as CX, to reduce the errors accumulated during execution.
What do depth and CX depth mean? Circuit depth is the number of sequential operation layers: gates acting on independent qubits can run in parallel in the same layer, while gates sharing qubits must run in different layers. CX depth counts only the sequential layers of CX gates. Lower depth generally means a shorter execution time and less exposure to noise, while lower CX depth specifically reduces the impact of costly 2-qubit operations.

๐Ÿ”— Further reading: IBM Quantum Learning | Wikipedia: Clifford gates | Aaronson-Gottesman (2004)

You can either build/load a Clifford circuit, or load a Clifford operator (tableau) and synthesize it.
To load a Clifford operator, upload a Clifford circuit (QASM) or a NumPy file (.npy or .npz) containing a tableau matrix of shape (2n, 2n+1) with boolean or 0/1 entries.