Skip to content

need phase-correct synthesis #3669

@ajavadia

Description

@ajavadia

Current synthesis algorithms do not respect global phase, which can lead to unexpected errors when the synthesis result is processed further (e.g. controlled).

Example:

import numpy as np
from qiskit import QuantumCircuit, QuantumRegister
from qiskit.transpiler import PassManager
from qiskit.transpiler.passes import *
from qiskit.quantum_info import Operator

qr = QuantumRegister(2, 'qr')
circuit = QuantumCircuit(qr)

circuit.cx(qr[0], qr[1])
circuit.u1(0.1, qr[0])
circuit.z(qr[1])
circuit.cx(qr[0], qr[1])
circuit.cx(qr[0], qr[1])
circuit.rz(0.1 * np.pi, qr[0]) 

passes = [Unroller(['u1', 'u2', 'u3', 'cx']), Collect2qBlocks(), ConsolidateBlocks(), Unroller(['u1', 'u2', 'u3', 'cx'])]
pm = PassManager(passes)

new_circuit = pm.run(circuit)

Operator(circuit) == Operator(new_circuit)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions