Skip to content

Commit

Permalink
Improved code for selection of measurement start
Browse files Browse the repository at this point in the history
  • Loading branch information
GabrielePalazzo committed Nov 13, 2023
1 parent c95797c commit bdbb03e
Showing 1 changed file with 10 additions and 30 deletions.
40 changes: 10 additions & 30 deletions src/qibolab/instruments/zhinst.py
Original file line number Diff line number Diff line change
Expand Up @@ -892,39 +892,16 @@ def measure_relax(self, exp, qubits, relaxation_time, acquisition_type):
"""qubit readout pulse, data acquisition and qubit relaxation"""
play_after = None

# TODO: This need to be simplified !!!
if len(self.sequence_qibo.qf_pulses) != 0 and len(self.sequence_qibo.qd_pulses) != 0:
play_after = (
self.play_after_set(self.sequence_qibo.qf_pulses, "bias")
if self.sequence_qibo.qf_pulses.finish > self.sequence_qibo.qd_pulses.finish
else self.play_after_set(self.sequence_qibo.qd_pulses, "drive")
)
if len(self.sequence_qibo.cf_pulses) != 0 and len(self.sequence_qibo.qd_pulses) != 0:
play_after = (
self.play_after_set(self.sequence_qibo.cf_pulses, "bias_coupler")
if self.sequence_qibo.cf_pulses.finish > self.sequence_qibo.qd_pulses.finish
else self.play_after_set(self.sequence_qibo.qd_pulses, "drive")
)
qf_finish = self.sequence_qibo.qf_pulses.finish
qd_finish = self.sequence_qibo.qd_pulses.finish
cf_finish = self.sequence_qibo.cf_pulses.finish

elif len(self.sequence_qibo.qf_pulses) != 0:
if qf_finish > qd_finish and qf_finish > cf_finish:
play_after = self.play_after_set(self.sequence_qibo.qf_pulses, "bias")
elif len(self.sequence_qibo.qd_pulses) != 0:
elif qd_finish > qf_finish and qd_finish > cf_finish:
play_after = self.play_after_set(self.sequence_qibo.qd_pulses, "drive")
elif (
len(self.sequence_qibo.qf_pulses) != 0
and len(self.sequence_qibo.qd_pulses) != 0
and len(self.sequence_qibo.cf_pulses) != 0
):
seq_qf = self.sequence_qibo.qf_pulses.finish
seq_qd = self.sequence_qibo.qd_pulses.finish
seq_cf = self.sequence_qibo.cf_pulses.finish
# add here for flux coupler pulses
if seq_qf > seq_qd and seq_qf > seq_cf:
play_after = self.play_after_set(self.sequence_qibo.qf_pulses, "bias")
elif seq_qd > seq_qf and seq_qd > seq_cf:
play_after = self.play_after_set(self.sequence_qibo.qd_pulses, "drive")
elif seq_cf > seq_qf and seq_cf > seq_qd:
play_after = self.play_after_set(self.sequence_qibo.cf_pulse, "bias_coupler")
elif cf_finish > qf_finish and cf_finish > qd_finish:
play_after = self.play_after_set(self.sequence_qibo.cf_pulses, "bias_coupler")

readout_schedule = defaultdict(list)
qubit_readout_schedule = defaultdict(list)
Expand All @@ -948,6 +925,9 @@ def measure_relax(self, exp, qubits, relaxation_time, acquisition_type):
for pulse, q, iq_angle in zip(pulses, qubits, iq_angles):
pulse.zhpulse.uid += str(i)

# TODO: if the measure sequence starts after the last pulse, add a delay
# if the delay is too large (i.e. 5us),
# throw an exception / no delay / maximum delay possible
if play_after is None:
exp.delay(
signal=f"measure{q}",
Expand Down

0 comments on commit bdbb03e

Please sign in to comment.