diff --git a/cirq-core/cirq/transformers/optimize_for_target_gateset.py b/cirq-core/cirq/transformers/optimize_for_target_gateset.py index d90b35e6ba5..62fbf537720 100644 --- a/cirq-core/cirq/transformers/optimize_for_target_gateset.py +++ b/cirq-core/cirq/transformers/optimize_for_target_gateset.py @@ -103,7 +103,6 @@ def optimize_for_target_gateset( gateset: Optional['cirq.CompilationTargetGateset'] = None, ignore_failures: bool = True, max_num_passes: Union[int, None] = 1, - preserve_moment_structure: bool = True, ) -> 'cirq.Circuit': """Transforms the given circuit into an equivalent circuit using gates accepted by `gateset`. @@ -126,7 +125,6 @@ def optimize_for_target_gateset( conversion failures raise a ValueError. max_num_passes: The maximum number of passes to do. A value of `None` means to keep iterating until no further improvements can be made. - preserve_moment_structure: Whether to preserve moment structure or not. Returns: An equivalent circuit containing gates accepted by `gateset`. @@ -160,11 +158,6 @@ def _outerloop(): for transformer in gateset.postprocess_transformers: circuit = transformer(circuit, context=context) - if not preserve_moment_structure: - circuit = circuits.Circuit( - op for op in circuit.all_operations() - ) # Contract the moments. - num_moments, num_ops = len(circuit), len(tuple(circuit.all_operations())) if (num_moments, num_ops) == (initial_num_moments, initial_num_ops): # Stop early. No further optimizations can be done. diff --git a/cirq-core/cirq/transformers/optimize_for_target_gateset_test.py b/cirq-core/cirq/transformers/optimize_for_target_gateset_test.py index db2bb1a28ad..9753c62553b 100644 --- a/cirq-core/cirq/transformers/optimize_for_target_gateset_test.py +++ b/cirq-core/cirq/transformers/optimize_for_target_gateset_test.py @@ -284,37 +284,43 @@ def test_optimize_for_target_gateset_multiple_passes(max_num_passes: Union[int, ] ) - desired_circuit = cirq.Circuit( - cirq.PhasedXZGate(axis_phase_exponent=0.5, x_exponent=-0.5, z_exponent=1.0).on( - cirq.LineQubit(4) - ), - cirq.PhasedXZGate(axis_phase_exponent=-1.0, x_exponent=1, z_exponent=0).on( - cirq.LineQubit(1) + desired_circuit = cirq.Circuit.from_moments( + cirq.Moment( + cirq.PhasedXZGate(axis_phase_exponent=0.5, x_exponent=-0.5, z_exponent=1.0).on( + cirq.LineQubit(4) + ) ), - cirq.PhasedXZGate(axis_phase_exponent=-0.5, x_exponent=0.5, z_exponent=0.0).on( - cirq.LineQubit(2) + cirq.Moment(cirq.CZ(cirq.LineQubit(4), cirq.LineQubit(5))), + cirq.Moment( + cirq.PhasedXZGate(axis_phase_exponent=-1.0, x_exponent=1, z_exponent=0).on( + cirq.LineQubit(1) + ), + cirq.PhasedXZGate(axis_phase_exponent=0.5, x_exponent=-0.5, z_exponent=1.0).on( + cirq.LineQubit(0) + ), + cirq.PhasedXZGate(axis_phase_exponent=-1.0, x_exponent=1, z_exponent=0).on( + cirq.LineQubit(3) + ), + cirq.PhasedXZGate(axis_phase_exponent=-0.5, x_exponent=0.5, z_exponent=0.0).on( + cirq.LineQubit(2) + ), ), - cirq.PhasedXZGate(axis_phase_exponent=0.5, x_exponent=-0.5, z_exponent=1.0).on( - cirq.LineQubit(0) + cirq.Moment( + cirq.CZ(cirq.LineQubit(0), cirq.LineQubit(1)), + cirq.CZ(cirq.LineQubit(2), cirq.LineQubit(3)), ), - cirq.PhasedXZGate(axis_phase_exponent=-1.0, x_exponent=1, z_exponent=0).on( - cirq.LineQubit(3) + cirq.Moment( + cirq.CZ(cirq.LineQubit(2), cirq.LineQubit(1)), + cirq.CZ(cirq.LineQubit(4), cirq.LineQubit(3)), ), - cirq.PhasedXZGate(axis_phase_exponent=-0.5, x_exponent=0.5, z_exponent=0.0).on( - cirq.LineQubit(6) + cirq.Moment( + cirq.PhasedXZGate(axis_phase_exponent=-0.5, x_exponent=0.5, z_exponent=0.0).on( + cirq.LineQubit(6) + ) ), - cirq.CZ(cirq.LineQubit(4), cirq.LineQubit(5)), - cirq.CZ(cirq.LineQubit(0), cirq.LineQubit(1)), - cirq.CZ(cirq.LineQubit(2), cirq.LineQubit(3)), - cirq.CZ(cirq.LineQubit(2), cirq.LineQubit(1)), - cirq.CZ(cirq.LineQubit(4), cirq.LineQubit(3)), - cirq.CZ(cirq.LineQubit(6), cirq.LineQubit(5)), + cirq.Moment(cirq.CZ(cirq.LineQubit(6), cirq.LineQubit(5))), ) - got = cirq.optimize_for_target_gateset( - input_circuit, - gateset=gateset, - max_num_passes=max_num_passes, - preserve_moment_structure=False, + input_circuit, gateset=gateset, max_num_passes=max_num_passes ) assert got == desired_circuit