[tcirc][CNOT] Implement protected CNOT gate between surface code qubits of the same type #67
Labels
bug
Something isn't working
enhancement
New feature or request
hackathon-worthy
Worthy to pursue over a hackathon period.
Milestone
We leverage the parity measurement to implement a CNOT between surface code qubits, as shown below.
While we use a surface code ancilla, our parity measurements are not topologically protected. For example, we use CNOTs conditioned by data (physical) qubits in the top rows of two surface code qubits and targeting a single external physical qubit. Then, we measure the external physical qubit to perform a logical ZZ parity measurement between two surface code qubits. This external physical qubit is not topologically protected and could, however, undergo bit flip errors.
Instead, let's follow Ref. [1] and implement a parity measurement of the form:
Here are some concrete steps towards completing this task:
RotatedQubit
qubits of the same type and same size using the top rows of each qubit.ToplogicalQubit.zz
and implementing at the level ofXXZZQubit
(circuits/xxzz.py
) andXZZXQubit
(circuits/xzzx.py
). Since the repetition code extendsXXZZQubit
, it does not need to be changed.TopologicalQubit.cx
method and all of its implementations, as this unprotected CNOT uses a single external qubit as a control (target) on a surface code target (control) qubit. With the new protected CNOT gates, we should not need this method at all.tcirc
notebook(s) accordingly to demo your changes.Refs:
[1] https://arxiv.org/pdf/1709.02318.pdf
The text was updated successfully, but these errors were encountered: