Skip to content

[tcirc][CNOT] Implement protected CNOT gate between surface code qubits of the same type #67

@Phionx

Description

@Phionx

We leverage the parity measurement to implement a CNOT between surface code qubits, as shown below.

Screen Shot 2021-11-28 at 2 50 16 AM

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:

Screen Shot 2021-11-28 at 2 56 28 AM

Here are some concrete steps towards completing this task:

  • Implement a ZZ parity measurement between two RotatedQubit qubits of the same type and same size using the top rows of each qubit.
    • This may involve defining an abstract method ToplogicalQubit.zz and implementing at the level of XXZZQubit (circuits/xxzz.py) and XZZXQubit (circuits/xzzx.py). Since the repetition code extends XXZZQubit, it does not need to be changed.
  • Do the same as above for a XX parity measurement, using the left-most columns of each qubit.
  • Deprecate the 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.
  • Update the tcirc notebook(s) accordingly to demo your changes.

Refs:
[1] https://arxiv.org/pdf/1709.02318.pdf

Metadata

Metadata

Labels

bugSomething isn't workingenhancementNew feature or requesthackathon-worthyWorthy to pursue over a hackathon period.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions