qtcodes icon indicating copy to clipboard operation
qtcodes copied to clipboard

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

Open Phionx opened this issue 2 years ago • 0 comments

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

Phionx avatar Nov 28 '21 08:11 Phionx