From 29f5468f2365da6adfefab4b068c77b2cc882e26 Mon Sep 17 00:00:00 2001 From: ShellyGarion Date: Wed, 5 Mar 2025 01:42:17 -0600 Subject: [PATCH] minor fix to consolidate blocks with RZZ and CZ gates --- .../passes/optimization/consolidate_blocks.py | 10 +++++----- test/python/transpiler/test_consolidate_blocks.py | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/qiskit/transpiler/passes/optimization/consolidate_blocks.py b/qiskit/transpiler/passes/optimization/consolidate_blocks.py index c0a9800059c2..aa6a70263c24 100644 --- a/qiskit/transpiler/passes/optimization/consolidate_blocks.py +++ b/qiskit/transpiler/passes/optimization/consolidate_blocks.py @@ -100,14 +100,14 @@ def __init__( elif basis_gates is not None: kak_gates = KAK_GATE_NAMES.keys() & (basis_gates or []) kak_param_gates = KAK_GATE_PARAM_NAMES.keys() & (basis_gates or []) - if kak_gates: - self.decomposer = TwoQubitBasisDecomposer( - KAK_GATE_NAMES[list(kak_gates)[0]], basis_fidelity=approximation_degree or 1.0 - ) - elif kak_param_gates: + if kak_param_gates: self.decomposer = TwoQubitControlledUDecomposer( KAK_GATE_PARAM_NAMES[list(kak_param_gates)[0]] ) + elif kak_gates: + self.decomposer = TwoQubitBasisDecomposer( + KAK_GATE_NAMES[list(kak_gates)[0]], basis_fidelity=approximation_degree or 1.0 + ) else: self.decomposer = None else: diff --git a/test/python/transpiler/test_consolidate_blocks.py b/test/python/transpiler/test_consolidate_blocks.py index 64961b429988..8483da086762 100644 --- a/test/python/transpiler/test_consolidate_blocks.py +++ b/test/python/transpiler/test_consolidate_blocks.py @@ -654,12 +654,13 @@ def test_non_cx_target(self): self.assertEqual({"unitary": 1}, res.count_ops()) self.assertEqual(Operator.from_circuit(qc), Operator(res.data[0].operation.params[0])) - def test_collect_rzz(self): + @data(["rzz", "rx", "rz"], ["rzz", "rx", "rz", "cz"]) + def test_collect_rzz(self, basis_gates): """Collect blocks with RZZ gates.""" qc = QuantumCircuit(2) qc.rzz(0.1, 0, 1) qc.rzz(0.2, 0, 1) - consolidate_pass = ConsolidateBlocks(basis_gates=["rzz", "rx", "rz"]) + consolidate_pass = ConsolidateBlocks(basis_gates=basis_gates) res = consolidate_pass(qc) self.assertEqual({"unitary": 1}, res.count_ops()) self.assertEqual(Operator.from_circuit(qc), Operator(res.data[0].operation.params[0]))