fix: schedule time reference to support ALAP

Breaking Changes

  • Drops support of multiple timing constraints. This could be recovered by a check on the compatibility of multiple timing constraints. It has been chosen to keep that out of this MR to preserve a smaller scope.

Explanation of changes

Major refactor of _determine_absolute_timing_schedule to:

  • Pick the time root of a schedule as the first schedulable that is referenced by other schedulables, but does not reference any schedulables itself.
  • Calculate the relative timings of all schedulables in the schedule relative to the time root
  • Normalize the timings using _normalize_absolute_timing

Motivation of changes

For more information see #491 (closed)

_determine_absolute_timing_schedule loops through schedulables in the same order that they were added. Additionally, in ALAP scheduling, the ref_schedulable is the schedulable next in time of the schedulable being added. This leads to _get_start_time trying to access the abs_time key of a schedulable of which the abs_time has not been determined yet.


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 @deprecated and 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-developers channel to merge main back in or update local packages (or N/A).
  • Tested on hardware (or N/A).
  • CHANGELOG.md for breaking changes and AUTHORS.md have 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.

Edited by Tim Vroomans

Merge request reports

Loading