Perform an upd_param instruction instead of a wait when amplitude of a pulse is too low
Explanation of changes
If both indices in a GenericPulseStrategy
are zero, it means the amplitude of the given pulse is too low and would have resulted in an awg_gain
of 0. Previously it would just wait for the duration of the pulse instead. However previous instructions might have some lingering awg_offset
instructions which would have been set with the play
instruction. Placing an upd_param
instruction ensures these offsets are still set.
2 tests had to be changed. One of them had a 200 line q1asm program in a json file. I've formatted that json file to be readable.
This commit shows the changes made in that q1asm program due to the change.
Motivation of changes
The StichedPulse would add only waits if the amplitude for each (sub)ramp was too low, the offsets places were never updated.
This has now been fixed. Effectively turning the long ramp pulse in a staircase pulse for low amplitudes.
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
for breaking changes andAUTHORS.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.