At first glance, Quantum Error Correction appears straightforward: group physical qubits into a logical qubit, apply a method to maintain consistency among them, and then operate quantum circuits using these logical qubits.
Image source: RiverlaneBut in practice, this very first step is actually far from being obvious. How does one create and maintain those logical qubits? For example, from a Quantum Control System (QCS) perspective (like ZI’s ZQCS or Qblox Q1 Cluster), what does it take to “operate” or “orchestrate” the logical qubit? And once this logical qubit is “ready” to be operated, what does it take to use it to perform quantum computation, via the quantum circuits composed of 1- and 2-qubit gates? This simple question is not just about the hardware control system but also about the software stack, especially the compilers: Do we now have multiple compilers, one for the physical qubits, and one for the logical qubits? And when it comes to scale, what does it take for the compilers to cope with the scaling complexity when handling 10,000 physical qubits in a heterogenous environement composed of hybrid GPU/QPU and QCS? Those are simple questions, with non trival answers!
This memo is the first in a series on quantum error correction from the perspective of quantum control systems. This first short memo introduces the basic concepts needed to “create” a consistent logical qubit at the physical layer.
Forming Logical Qubits Link to heading
What defines a “Logical Qubit”? Creating logical qubits begins by grouping physical qubits, each assigned a specific role. Some serve as ancilla or helper qubits, while others function as data or principal qubits.
This grouping is often represented by the diagram on the right, which shows a “Surface code 17 based on distance 3” (image credit: Irréversible Inc).

Here’s the basic structure, applicable for surface codes:
The data qubits (white circles) hold the quantum information. The surface 17 contains 9 data qubits.
The ancilla qubits (black circles) perform non-destructive parity checks. The surface 17 contains 8 ancilla qubits.
QEC as a protocol Link to heading
The interaction between the data and ancilla qubits is specific to each “plaquette”:
The plaquettes (green & pink faces) define the error checking typological relation between the ancilla qubit in the middle and its neighbour data qubits.
The stabilizer: Each ancilla qubit is used to measure one Pauli operator, or stabilizer: Surface codes have two stabilizers: Z-type detect bit-flip (X) errors, while X-type detect phase-flip (Z) errors.
The stabilizer measurement is the measurement of a single stabilizer, implemented by sequentially coupling an ancilla qubit to the neighbouring data qubits and then measuring the ancilla.

The syndrome bits are to the outcome of measuring the parity-check stabilizer operator. Syndrome bits are produced one for each measurement cycle.
The syndrome extraction is the complete process of performing all stabilizer measurements in an error-correction cycle to obtain the full error syndrome.
A little quiz: Who is the qubit culprit? Link to heading
With this context, consider the diagram below (credit: Laurent Prost from Alice & Bob). Z1Z2 and Z2Z3 represent joint parity check (stabiliser) measurements between Qubit 1 and Qubit 2, and between Qubit 2 and Qubit 3, respectively. Unlike the previous two-dimensional plaquettes, this diagram assumes each physical qubit is linked to only one other qubit, indicating a one-dimensional repetition code.

In the diagram on the left (case A), it appears the error is on data qubit 3, but it actually indicates errors on data qubits 1 and 2. The red horizontal line shows that the error occurs only in Z2Z3. If the error were on qubit 3, Z3Z4 would also flip. Therefore, Z1Z2 represents a Byzantine error, meaning both Q1 and Q2 have flipped. The diagram on the right (case B) shows the expected result if the error were on Qubit 3.
Behind the scenes: The QEC “magic” Link to heading
This second section is a bit heavier, but it is important for understanding the subsequent memos on the orchestration of physical qubits within a logical group. I try to keep it as light as possible, without getting into the gory mathematical details that my colleagues in QEC would be much better at explaining!
Domain Walls and Degenerate Errors Link to heading
The Q1+Q2 Bizantine error is actually an common challenge called a Degenerate Error. To be specific, it refers to a situation in which two or more physically distinct errors produce the exact same syndrome bit, in which case it becomes impossible to distinguish the errors.
But this is not an issue in QEC: The stabilisers are not used to detect errors directly. Instead stabilisers are used to identify the physical qubit boundaries (aka domain walls) in which an error syndromes reacts. Then, by increasing redundancy to overlap boundaries, one can nail down individual errors (or alternatively, use GoogleAI’s time-dynamic surface code as shown on the right diagram)
Engineering this redundancy in quantum systems is fundamentally complex and requires a heavy mathematical background. To understand the high-level concept, we need to get back to the basics: How is the parity check actually working?
How is the parity check actually working? Link to heading
At first, it may seem unclear how the parity check operates, since determining parity requires knowledge of the expected syndrome bit, which depends on the data qubit state. However, knowing the data qubit state in advance would defeat the purpose of quantum computation. In other words:
To solve this challenge, the key is to refer to the same trick used for the “zero knowledge” proof used in the Alibaba cave experiment: One only needs to ask specific questions whose answers are known regardless of what the encoded quantum information is (image credits: dailycoin)
These specific questions correspond to the Pauli stabiliser operators. The syndrome bit, or measurement outcome, can be viewed as path A or B. In QEC, path A represents the valid state, while path B indicates an error. What the QEC “engine” needs to is to construct the quantum circuit that operates on the logicial qubit in a way that preserves this constraint, also called “protected state”.
Encoding Protected States Link to heading
This is where the engineering becomes critical. To ensure the syndrome measurement always returns path A when there is no error, and B otherwise, the multi-qubit parity information must be encoded in a way such that the relationships between qubits are fixed for every valid encoded state.
This is the function of the encoding circuit. Its purpose is to map a simple, uncorrupted input state (such as a single physical qubit \(|ψ> = α|0> + β|1>\) with blank ancillas \(|00...0>\) into a highly entangled logical qubit state \(|ψ_L>\) protected by quantum error correction.

I will discuss the encoding circuit in more detail in a later memo. For now, one can consider the encoding circuit as an engineered and specialised quantum circuit used to initialise, or bootstrap, the logical qubit in the protected state.
Distance Code Link to heading
To fix the degenerate errors (i.e. the “byzantine” Q1 + Q2 syndromes), it is possible to increase the redundancy by increasing what is called the code distance \( d \). At a glance, one could say that the code distance \( d \) defines how robust the error protection is.

If the code distance is \( d=3 \), flipping 2 adjacent qubits destroys the information, and QEC fails to correct the logical qubit, i.e. fails to maintain the logical qubit in the protected state. With larger code distance, eg \( d=5 \), the QEC decoder can ensure that even if Q1 and Q2 flip and mask each other from the Z1Z2 check, then the increase stabilizer measurement will give the decoder enough context to identify Q1 and Q2 as a double fault. From a mathematical perspective, this can be written as:
The Threshold Theorem Link to heading
If redundancy solves the problem, why not just use surface code with larger dimensions? The challenge is that, for each additional physical qubit (to increase redundancy), more stabilisers need to be measured. And more measurements mean more hazards (for physical errors to happen).
Which leads to the so-called Threshold Theorem
In simple terms, the threshold theorem means that as long as the physical qubits’ error rate \(p\) is below a threshold \(p_{th}\), then it is possible to add more physical qubits to improve the error correction, and that the number of the increased qubits is in \(N.log(N)\) complexity .
Why is this important? Because it says that even if the qubits “do not behave” all the time, provided it does not happen too often, then it is possible to get a larger set of qubits to behave better than the sum of the individual qubits, thus enabling the door for post-NISQ, ie. the FTQC, or Fault-Tolerant Quantum Computing, era.
Of course, the essential question here is what this threshold \ (p _ {th} ) is. They are in the order of 0.1% to 1%, and although it may seem low, this is not a problem since modern qubits can already achieve fidelities of 99.9% (for one-qubit gates).

Conclusion Link to heading
Voilà, this short memo lays the foundation for the concepts used in Quantum Error Correction.

The next two memos will be more hands-on. The second one will analyse what it concretely means for the Quantum Control System (and error decoder) to operate the physical qubit into a logical qubit, in terms of control, readout and sequencing. The third memo will focus on the decoding system, as well as low latency and real-time “link” between the decoder and control system.
This memo is actually the first of a series. The next QEC memos will focus on the following topics:
- Orchestation the syndrome extraction from the Quantum Control System perspective
- Real-time Error Decoding: Ultra low latency Asic, GPU, and neural networks.
- Co-Designed Smart Qubits: The case of Alice & Bob error protected qubits
- Surface code compilers at scale: maximize fault-tolerance for billions of physical operations
- Hierarchical Decoding Architectures: locality principle & mutli layer processing
- Logical Qubit Orchestration: Lattice Surgery & Braiding
- Beyond surface codes: The Shift to qLDPC Codes
- Magic State Distillation & Analog Rotations
Looks like this is going to keep me busy for the next 6 months!
References:
- Real-time Surface-Code Error Correction Using an FPGA-based Neural-Network Decoder
- Real-Time Quantum Error Correction System Stack: Architecture, Algorithms, and Engineering Practice
- Reinforcement learning control of quantum error correction
- Riverlane Deltaflow: The Quantum Error Correction Stack
- Quantum Machine: QEC decoding
- How IQM is tackling quantum error correction
- Q-CTRL: Towards practical Quantum Error Correction
- Building logical qubits in a superconducting quantum computing system
- The Quantum Leap That Needs Error Correction
- Error budgeting for quantum error correction
- How Space and Time Could Be a Quantum Error-Correcting Code
- Quantum error correction in the presence of biased noise
- What Makes a “Logical Qubit” Actually Logical?
- Hybrid Multiplexing with Dynamic Qubit Grouping for Low-cost and Scalable Quantum Wiring
- Defining the Logical Qubit: Five Criteria to Benchmark Logical Qubit Claims
- Real-Time Decoding for Fault-Tolerant Quantum Computing: Progress, Challenges and Outlook
- Why do quantum computers need QEC?
- To reset, or not to reset—that is the question
- A memristive neural decoder for cryogenic fault-tolerant quantum error correction
- Decoupling AI for Quantum Control and Calibration
- A high performance compiler for very large surface code computations
- All about quantum error correction: distillation, mitigation, self-correction and beyond
- StreamingQEC: Streaming Quantum Error Correction in Tightly Integrated Quantum-Classical Systems via Certified Recurrence
- A real-time, scalable, fast and highly resource efficient decoder for a quantum computer
- Constraint-Optimal Driven Allocation for Scalable QEC Decoder Scheduling
- Comparison of spin-qubit architectures for quantum error-correcting codes
DrawIO diagrams used in this memo:





