[backend] Realtime modulation
Description
This issue is to capture how to deal with realtime modulation for the backends.
What is meant with realtime modulation in this context is that the API offers functionality to change waveforms that will be uploaded to the AWG(s) without recompiling the sequencer programs.
Since the hardware backends are stateless and should not have any knowledge of the actual instrument(s) it is not possible to skip the compilation step unless some state is known about the previous run in order to efficiently change waveforms. Secondly, the ZI backend is able to move the start of a waveform inside the waveform numerical array in order to increase timing accuracy of the waveform start, ultimately making it hard to bypass the compilation step of the backend.
Zhinst
Zhinst AWG(s) allow uploading of waveforms without recompiling the seqc program.
Feature is provided via daq.setVector which will set a vector to the specified node.
Qblox
- tbd
Proposal
For the ZI backend it is easiest to compare the seqc program on the Instrument with the compiled version returned from the hardware backend. Somewhere inside :class:ZISettings the node of the sequencer program must be queried before calling compile_and_uploaded