Change duration of various operations to not be Qblox-specific and remove Qblox references entirely from `operations` (SE-358)
Explanation of changes
List of changes:
NCO operations:
- The durations of
ShiftClockPhase
andSetClockFrequency
are now 0.0, instead of 8 ns. -
NcoPhaseShiftStrategy
andNcoSetClockFrequencyStrategy
no longer insertupd_param
. That is now handled bySequencer._insert_update_parameters
andUpdateParameterStrategy
. - 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 extraGRID_TIME
duration. -
MarkerPulseStrategy
now also no longer insertsupd_param
instructions by itself.
Acquisitions:
-
NumericalSeparatedWeightedIntegration
andNumericalWeightedIntegration
no longer depend onSAMPLING_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 mergemain
back in or update local packages (or N/A). -
Tested on hardware (or N/A). -
CHANGELOG.md
andAUTHORS.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.