Skip to content

Change duration of various operations to not be Qblox-specific and remove Qblox references entirely from `operations` (SE-358)

Thomas Middelburg requested to merge remove-qblox-ref-operations into main

Explanation of changes

List of changes:

NCO operations:

  • The durations of ShiftClockPhase and SetClockFrequency are now 0.0, instead of 8 ns.
  • NcoPhaseShiftStrategy and NcoSetClockFrequencyStrategy no longer insert upd_param. That is now handled by Sequencer._insert_update_parameters and UpdateParameterStrategy.
  • A check is performed during compilation (Sequencer._check_nco_operation_timing) to ensure enough time is left between successive frequency or phase updates.
  • NCO_SET_PH_DELTA_WAIT constant has been corrected to 4 ns (confirmed by Qblox ESE)

MarkerPulse:

  • Add a step during compilation that splits MarkerPulse operations into a "setting" and "resetting" operation: Sequencer._split_marker_pulses().
  • The duration of MarkerPulse is now equal to the user-specified duration, instead of having an extra GRID_TIME duration.
  • MarkerPulseStrategy now also no longer inserts upd_param instructions by itself.

Acquisitions:

  • NumericalSeparatedWeightedIntegration and NumericalWeightedIntegration no longer depend on SAMPLING_RATE from the Qblox backend.

Motivation of changes

The original motivation for the changes is that the pulse_library and acquisition_library contained imports from the Qblox backend, which was hindering the split-off of that backend.

Some operations had very Qblox-specific attributes (mostly durations) and quirks (extra "hidden" duration in MarkerPulse), so I took the opportunity to address this too.

Instead of Qblox-specific durations, ShiftClockPhase and SetClockFrequency now have duration 0, as do ResetClockPhase and VoltageOffset which already had that previously. It is the responsibility of the backends to enforce limitations in timing.


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 and AUTHORS.md have been updated (or N/A).
  • Update Hardware backends documentation if backend interface change or N/A
  • Performance tests: if changes can affect performance, trigger CI manually and evaluate results (or N/A).
  • 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 Gábor Oszkár Dénes

Merge request reports