Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
5 tasks
Phionx opened this issue Nov 28, 2021 · 0 comments
Assignees
Labels
bug Something isn't working enhancement New feature or request hackathon-worthy Worthy to pursue over a hackathon period.
Milestone

Comments

@Phionx
Copy link
Member

Phionx commented Nov 28, 2021

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 Phionx added enhancement New feature or request bug Something isn't working labels Nov 28, 2021
@Phionx Phionx added this to the 0.2.0 milestone Nov 28, 2021
@Phionx Phionx self-assigned this Dec 25, 2021
@Phionx Phionx added the hackathon-worthy Worthy to pursue over a hackathon period. label Mar 25, 2022
@Phionx Phionx modified the milestones: 0.2.0, 0.2.1 Mar 25, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request hackathon-worthy Worthy to pursue over a hackathon period.
Projects
None yet
Development

No branches or pull requests

2 participants