Labber-software / Drivers

Instrument drivers for Labber
http://labber.org
Other
54 stars 53 forks source link

Multi-Qubit Pulse Generator: Match main sequence waveform size option #112

Open eunjongkim opened 5 years ago

eunjongkim commented 5 years ago

Hi,

As far as I understand from the code and the tooltips, the "match main sequence waveform size" option in the "Readout" section is supposed to only change the number of points of the readout waveform to be identical to that of the main qubit pulse waveforms.

However, it seems to me that the start time of the readout pulse is affected by this option. I think this is due to the control flow in part of the sequency.py ,

                # get the range of indices in use
                if (pulse.pulse_type == PulseType.READOUT and not
                        self.readout_match_main_size):
                    # special case for readout if not matching main wave size
                    start = 0.0
                    middle = self._round(step.t_middle - step.t_start)
                    end = self._round(step.t_end - step.t_start)

resetting the start time of the readout pulse to zero when this option is unchecked. Is it supposed to be like this? I'm confused about what this option is supposed to do.

I think it's easier to work when the start of the readout pulse aligned to the end of all the qubit pulses by default but I don't think the option "match main sequence waveform size" describes that at all.

This is another issue, but the alignment behavior of readout pulse when the option "match main sequence waveform size" is checked seems to be unaffected by the delay of XY and Z pulses that we can specify in the "Waveform" section of GUI. I think this is an additional inconsistency which needs to be addressed. I know this is due to the part

                elif pulse.pulse_type == PulseType.READOUT:
                    waveform = self.readout_iq
                    delay = 0

in the sequence.py setting delay of the readout pulse to be unaffected by neither xy nor z pulse delays.

Thanks in advance, Eunjong

simongus commented 5 years ago

The reason for the "match main sequence waveform size" option is to allow waveform creation for older, multi-channel AWGs such as the Tektronix 5014, which requires all waveforms on all channels to be the same length. So in this mode, Labber will append zeros to the qubit control waveforms (where the readout waveform is on), and prepend zeros to the readout waveform (where the qubit control is on).

For newer AWGs without this restriction, the "match main sequence waveform size" option isn't really useful and should be turned off.

eunjongkim commented 5 years ago

Thanks for the answer, Simon. So for newer AWGs I guess it is desirable to turn this option off and manually define readout delay from channel relations?

I've been using this option with Keysight PXI AWG M3202A as a workaround because I have seen the AWG output for readout pulse having dc offsets for some amount of time before and after the pulse itself when I didn't check the "match main sequence waveform size" option. I've been using this option to specify zero before and after the pulse so that the spurious dc offset go away. Is there any drawbacks of using this option though?

simongus commented 5 years ago

the only major drawback is that it'll take slightly longer time to upload the longer waveforms (since they will contain zeros at the beginning/end). But it does simplify triggering (ie all wavefoms can be triggered at the same time)

eunjongkim commented 5 years ago

I see. Thanks for the reply.