quantify_scheduler.backends.qblox_backend

Compiler backend for Qblox hardware.

Module Contents

Functions

_get_square_pulses_to_replace(→ Dict[str, List[int]])

Generate a dict referring to long square pulses to replace in the schedule.

_replace_long_square_pulses(→ quantify_scheduler.Schedule)

Replace any square pulses indicated by pulse_idx_map by a long_square_pulse.

compile_long_square_pulses_to_awg_offsets(...)

Replace square pulses in the schedule with long square pulses.

hardware_compile(→ quantify_scheduler.CompiledSchedule)

Generate qblox hardware instructions for executing the schedule.

_get_square_pulses_to_replace(schedule: quantify_scheduler.Schedule) Dict[str, List[int]][source]

Generate a dict referring to long square pulses to replace in the schedule.

This function generates a mapping (dict) from the keys in the operations() dict to a list of indices, which refer to entries in the “pulse_info” list that describe a square pulse.

Parameters

schedule (Schedule) – A Schedule, possibly containing long square pulses.

Returns

square_pulse_idx_map – The mapping from operation_repr to "pulse_info" indices to be replaced.

Return type

Dict[str, List[int]]

_replace_long_square_pulses(schedule: quantify_scheduler.Schedule, pulse_idx_map: Dict[str, List[int]]) quantify_scheduler.Schedule[source]

Replace any square pulses indicated by pulse_idx_map by a long_square_pulse.

Parameters
  • schedule (Schedule) – A Schedule, possibly containing long square pulses.

  • pulse_idx_map (Dict[str, List[int]]) – A mapping from the keys in the operations() dict to a list of indices, which refer to entries in the “pulse_info” list that describe a square pulse.

Returns

The schedule with square pulses longer than PULSE_STITCHING_DURATION replaced by long_square_pulse(). If no replacements were done, this is the original unmodified schedule.

Return type

Schedule

compile_long_square_pulses_to_awg_offsets(schedule: quantify_scheduler.Schedule, **_: Any) quantify_scheduler.Schedule[source]

Replace square pulses in the schedule with long square pulses.

Introspects operations in the schedule to find square pulses with a duration longer than PULSE_STITCHING_DURATION. Any of these square pulses are converted to long_square_pulse(), which consist of AWG voltage offsets.

If any operations are to be replaced, a deepcopy will be made of the schedule, which is returned by this function. Otherwise the original unmodified schedule will be returned.

Parameters

schedule (Schedule) – A Schedule, possibly containing long square pulses.

Returns

schedule – The schedule with square pulses longer than PULSE_STITCHING_DURATION replaced by long_square_pulse(). If no replacements were done, this is the original unmodified schedule.

Return type

Schedule

hardware_compile(schedule: quantify_scheduler.Schedule, config: quantify_scheduler.backends.graph_compilation.CompilationConfig | Dict[str, Any] | None = None, *, hardware_cfg: Optional[Dict[str, Any]] = None) quantify_scheduler.CompiledSchedule[source]

Generate qblox hardware instructions for executing the schedule.

The principle behind the overall compilation is as follows:

For every instrument in the hardware configuration, we instantiate a compiler object. Then we assign all the pulses/acquisitions that need to be played by that instrument to the compiler, which then compiles for each instrument individually.

This function then returns all the compiled programs bundled together in a dictionary with the QCoDeS name of the instrument as key.

Parameters
  • schedule – The schedule to compile. It is assumed the pulse and acquisition info is already added to the operation. Otherwise an exception is raised.

  • config – Compilation config for QuantifyCompiler, of which only the CompilationConfig.connectivity is currently extracted in this compilation step.

  • hardware_cfg – (deprecated) The hardware configuration of the setup. Pass a full compilation config instead using config argument.

Returns

The compiled schedule.

Raises

ValueError – When both config and hardware_cfg are supplied.