Skip to content

Additional issues during pulse playback on HDAWG #774

@maxbeer99

Description

@maxbeer99

This issue is a collection of pulse corruption I noticed. According to @Nomos11 these might not actually be cause by qupulse.

Example 1

from qupulse.pulses import *

default_params = {}

for ii in range(4):
    default_params[f't_read_{ii}'] = qupulse_inst.awg1.make_properly_quantized_time(int(4.5e06))

default_params = {**default_params,
    'V_read_0': 0,
    'V_read_1': 0,
    'V_read_2': 0,
    'V_read_3': 0,

    'f': 100e-9,
    }

shuttle_period = qupulse_inst.awg1.make_properly_quantized_time((1/(default_params["f"]*1e09)) * 1e09)
actual_frequency = 1 / shuttle_period

read_pls = PointPT([
    ('t_read_0', 'V_read_0'),
    ('t_read_1', 'V_read_1'),
    ('t_read_2', 'V_read_2'),
    ('t_read_3', 'V_read_3'),
    ], ["playback_channel_D"])

shuttle_out = FunctionPT(f'.75 * cos(2*pi*{actual_frequency}*t + pi/2)', duration_expression=shuttle_period, channel='playback_channel_D')

shuttle_and_read = shuttle_out @ read_pls

pulse_template = read_pls @ qupulse.pulses.RepetitionPT(shuttle_and_read, 15) @ read_pls

physical_pulse_template = pulse_template
_ = qupulse.pulses.plotting.plot(physical_pulse_template, default_params, sample_rate=500*(1/shuttle_period))

_.set_figwidth(50)
// program definitions
void renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_function() {
  var pos = 0;

  waitForSoftwareTrigger();
  playWaveIndexed(renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_0,renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_1,renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_2,renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_3, pos, 5744); pos = pos + 5744;
}

Sample rate: 24.41kHz (100M base)
image
image
image
image

The constant tail appears at random voltages from run to run.

Removing read_pls from both the start and end of pulse_template fixes it:

from qupulse.pulses import *

default_params = {}

for ii in range(4):
    default_params[f't_read_{ii}'] = qupulse_inst.awg1.make_properly_quantized_time(int(4.5e06))

default_params = {**default_params,
    'V_read_0': 0,
    'V_read_1': 0,
    'V_read_2': 0,
    'V_read_3': 0,

    'f': 100e-9,
    }

shuttle_period = qupulse_inst.awg1.make_properly_quantized_time((1/(default_params["f"]*1e09)) * 1e09)
actual_frequency = 1 / shuttle_period

read_pls = PointPT([
    ('t_read_0', 'V_read_0'),
    ('t_read_1', 'V_read_1'),
    ('t_read_2', 'V_read_2'),
    ('t_read_3', 'V_read_3'),
    ], ["playback_channel_D"])

shuttle_out = FunctionPT(f'.75 * cos(2*pi*{actual_frequency}*t + pi/2)', duration_expression=shuttle_period, channel='playback_channel_D')

shuttle_and_read = shuttle_out @ read_pls

pulse_template = qupulse.pulses.RepetitionPT(shuttle_and_read, 15)

physical_pulse_template = pulse_template
_ = qupulse.pulses.plotting.plot(physical_pulse_template, default_params, sample_rate=500*(1/shuttle_period))

_.set_figwidth(50)

image
image
This might be because it creates a repeat in seqc:

// program definitions
void renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_function() {
  var pos = 0;

  waitForSoftwareTrigger();
  repeat(15) {
    playWaveIndexed(renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_0,renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_1,renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_2,renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_3, pos, 368); // advance disabled do to parent repetition
  }
  pos = pos + 368;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions