diff --git a/docs/tutorials/basic_example.rst b/docs/tutorials/basic_example.rst index 4c09bada5d37e97663d67a501f10fef5a119a030..1d48d198d79c98753c98f8a81f1fedf9eb4d531b 100644 --- a/docs/tutorials/basic_example.rst +++ b/docs/tutorials/basic_example.rst @@ -11,8 +11,11 @@ Configure pulse_lib Create a pulse_lib object with gates for voltage pulses and 2 qubit channels for MW pulses. .. code-block:: python + from pulse_lib.base_pulse import pulselib + from pulse_lib.virtual_channel_constructors import IQ_channel_constructor - pl = pulse_lib(backend='Keysight') + pl = pulse_lib(backend='Qblox') + pl.configure_digitizer = True # add AWGs and digitizers pl.add_awg(awg1) @@ -49,7 +52,7 @@ A sequence is made of one or more segments. Here we use a single segment. .. code-block:: python - seg = pl.create_segment() + seg = pl.mk_segment() Initialize the qubit with a voltage pulse on the gates. After the pulse the voltage returns to (0.0, 0.0) @@ -93,8 +96,12 @@ The acquired data can be retrieved with the acquisition parameter. This is a qco .. code-block:: python - seq = pl.make_sequence([seg]) - acq_param = seq.get_acquisition_param() + seq = pl.mk_sequence([seg]) + + # NOTE: A hardware schedule must be set for Keysight and Tektronix. See below. + # sequence.set_hw_schedule(hw_schedule) + + measurement_param = seq.get_measurement_param() # upload sequence data to AWG seq.upload() @@ -102,5 +109,65 @@ The acquired data can be retrieved with the acquisition parameter. This is a qco seq.play() # retrieve measurement data - data = acq_param() + data = measurement_param() + + +Hardware schedule +----------------- + +Pulselib needs a hardware schedule to properly configure the digitizer triggers +and loops on the Tektronix and Keysight AWGs. + +Keysight +//////// +For Keysight you need HVI2 scripts with a license to use Pathwave TestSyncExecutive. +There is a set of scripts available in core-tools. + +.. code-block:: python + + from core_tools.HVI2.hvi2_schedule_loader import Hvi2ScheduleLoader + + seq = pl.mk_sequence([seg]) + + hw_schedule = Hvi2ScheduleLoader(pl, 'SingleShot', digitizer) + sequence.set_hw_schedule(hw_schedule) + + +Tektronix + M4i hardware schedule +///////////////////////////////// + +.. code-block:: python + + from pulse_lib.schedule.tektronix_schedule import TektronixSchedule + + seq = pl.mk_sequence([seg]) + + hw_schedule = TektronixSchedule(pl) + sequence.set_hw_schedule(hw_schedule) + +Tektronix + ATS hardware schedule +///////////////////////////////// + +.. code-block:: python + + from pulse_lib.schedule.tektronix_schedule import TektronixAtsSchedule + + seq = pl.mk_sequence([seg]) + + hw_schedule = TektronixAtsSchedule(pl, acquisition_controller) + sequence.set_hw_schedule(hw_schedule) + + +Tektronix + ATS hardware schedule +///////////////////////////////// + +.. code-block:: python + + from pulse_lib.schedule.tektronix_schedule import TektronixUHFLISchedule + + seq = pl.mk_sequence([seg]) + + hw_schedule = TektronixUHFLISchedule(pl, lockin, seq.n_reps) + sequence.set_hw_schedule(hw_schedule) +