This PR contains a lot of updates to the Multi Qubit Pulse Generator. The big idea is to move to storing the qubit algorithms in a gate sequence, which at the ends get compiled to waveforms. This will make it easier when we move to doing the sequencing on the AWG instead, as we can just send the gate list for each qubit to the respective AWG channel. The gate sequence also allows for adding composite gates.
Due to the way the sequence is now stored, each qubit needs a gate at each step in the sequence. If no gate is specified for a qubit, the I gate is automatically added. The time between each step is controlled by the dt parameter.
I maintain the current functionality of adding gates via add_single_gate and add_single_pulse using the absolute time t0 as a reference. However, I would recommend not to combine the old method with the new one, as it might lead to unexpected results.
Everything is not done yet, and it definitely needs more testing. I create this PR to collect all the information about what needs to be done in one place, and so that others can comment on its features (@simongus @mortenkjaergaard @mollieks).
Features:
[x] Move to sequences of gates instead of storing the gates in the waveforms.
[x] Different pulse shapes for the readout.
[x] Add the ability to define composite gates. I.e. gates consisting of multiple gates.
[x] Virtual Z gate, i.e. change the phase of all subsequent pulses.
[x] SSB mixing in the pulse class instead for each waveform individually.
[x] Non-uniform readout pulses.
[x] RB of composite gates, such as CZEcho.
[x] Use pulse spacing instead of pulse period.
[x] Plateau for cosine pulses.
[x] Z Gates for each qubit. Either real or virtual.
[x] Delay waveforms relative each other to compensate for delays in the fridge wiring etc.
[x] Add minus tomography pulses.
[x] Non-linear voltage to flux curves.
[x] Other composite gates such as CNOT etc.
[x] If no local XY control, separate pulses in time.
[x] Documentation.
[ ] Optimize the readout phases so that the maximum readout amplitude is kept at a minimum
[ ] Option to do two qubit gates on either XY (e.g. cross resonance) or Z (e.g. CPh).
This PR contains a lot of updates to the Multi Qubit Pulse Generator. The big idea is to move to storing the qubit algorithms in a gate sequence, which at the ends get compiled to waveforms. This will make it easier when we move to doing the sequencing on the AWG instead, as we can just send the gate list for each qubit to the respective AWG channel. The gate sequence also allows for adding composite gates.
Due to the way the sequence is now stored, each qubit needs a gate at each step in the sequence. If no gate is specified for a qubit, the I gate is automatically added. The time between each step is controlled by the dt parameter.
I maintain the current functionality of adding gates via add_single_gate and add_single_pulse using the absolute time t0 as a reference. However, I would recommend not to combine the old method with the new one, as it might lead to unexpected results.
Everything is not done yet, and it definitely needs more testing. I create this PR to collect all the information about what needs to be done in one place, and so that others can comment on its features (@simongus @mortenkjaergaard @mollieks).
Features:
[x] Move to sequences of gates instead of storing the gates in the waveforms.
[x] Different pulse shapes for the readout.
[x] Add the ability to define composite gates. I.e. gates consisting of multiple gates.
[x] Virtual Z gate, i.e. change the phase of all subsequent pulses.
[x] SSB mixing in the pulse class instead for each waveform individually.
[x] Non-uniform readout pulses.
[x] RB of composite gates, such as CZEcho.
[x] Use pulse spacing instead of pulse period.
[x] Plateau for cosine pulses.
[x] Z Gates for each qubit. Either real or virtual.
[x] Delay waveforms relative each other to compensate for delays in the fridge wiring etc.
[x] Add minus tomography pulses.
[x] Non-linear voltage to flux curves.
[x] Other composite gates such as CNOT etc.
[x] If no local XY control, separate pulses in time.
[x] Documentation.
[ ] Optimize the readout phases so that the maximum readout amplitude is kept at a minimum
[ ] Option to do two qubit gates on either XY (e.g. cross resonance) or Z (e.g. CPh).
[ ] Analytical drag pulses.