Merge subsequent phase shifts
Explanation of changes
Phase shifts that are scheduled one after the other are now merged into one instead of raising an error. That includes rz gates and ShiftClockPhase.
rz merging has been removed and now uses this new logic further down the compilation.
Motivation of changes
For some qubit types Z gates shouldn't be prematurely merged if the engineer intends to have two of them after each other. Circuit optimisation is higher level's responsibility.
Merge checklist
See also merge request guidelines
- Merge request has been reviewed (in-depth by a knowledgeable contributor), and is approved by a project maintainer.
- New code is covered by unit tests (or N/A).
- New code is documented and docstrings use numpydoc format (or N/A).
- New functionality: considered making private instead of extending public API (or N/A).
- Public API changed: added
@deprecatedand entry in deprecated code suggestions (or N/A). - Newly added/adjusted documentation and docstrings render properly (or N/A).
- Pipeline fix or dependency update: post in
#software-for-developerschannel to mergemainback in or update local packages (or N/A). - Tested on hardware (or N/A).
-
CHANGELOG.mdfor breaking changes andAUTHORS.mdhave been updated (or N/A). - Update Hardware backends documentation if backend interface change or N/A
- Check whether performance is significantly affected by looking at the Performance metrics results.
- Windows tests in CI pipeline pass (manually triggered by maintainers before merging).
- Maintainers do not hit Auto-merge, we need to actively check as manual tests do not block pipeline
For reference, the issues workflow is described in the contribution guidelines.