pulses#

Classes for handling pulses.

Module Contents#

Classes#

PulseStrategyPartial

Contains the logic shared between all the pulses.

GenericPulseStrategy

Default class for handling pulses.

DigitalOutputStrategy

Interface class for MarkerPulseStrategy and DigitalPulseStrategy.

MarkerPulseStrategy

If this strategy is used a digital pulse is played on the corresponding marker.

DigitalPulseStrategy

If this strategy is used a digital pulse is played on the corresponding digital output channel.

Attributes#

logger[source]#
class PulseStrategyPartial(operation_info: quantify_scheduler.backends.types.qblox.OpInfo, channel_name: str)[source]#

Bases: quantify_scheduler.backends.qblox.operation_handling.base.IOperationStrategy

Contains the logic shared between all the pulses.

Parameters:
  • operation_info – The operation info that corresponds to this pulse.

  • channel_name – Specifies the channel identifier of the hardware config (e.g. complex_output_0).

_amplitude_path_I: float | None[source]#
_amplitude_path_Q: float | None[source]#
_pulse_info: quantify_scheduler.backends.types.qblox.OpInfo[source]#
channel_name[source]#
property operation_info: quantify_scheduler.backends.types.qblox.OpInfo[source]#

Property for retrieving the operation info.

class GenericPulseStrategy(operation_info: quantify_scheduler.backends.types.qblox.OpInfo, channel_name: str)[source]#

Bases: PulseStrategyPartial

Default class for handling pulses.

No assumptions are made with regards to the pulse shape and no optimizations are done.

Parameters:
  • operation_info – The operation info that corresponds to this pulse.

  • channel_name – Specifies the channel identifier of the hardware config (e.g. complex_output_0).

_amplitude_path_I: float | None = None[source]#
_amplitude_path_Q: float | None = None[source]#
_waveform_index0: int | None = None[source]#
_waveform_index1: int | None = None[source]#
_waveform_len: int | None = None[source]#
generate_data(wf_dict: Dict[str, Any])[source]#

Generates the data and adds them to the wf_dict (if not already present).

In complex mode (e.g. complex_output_0), the NCO produces real-valued data (IIF) on sequencer path_I and imaginary data (QIF) on sequencer path_Q.

[cosωtsinωtsinωtcosωt]NCO[IQ]=[IcosωtQsinωtIsinωt+Qcosωt] (path_I) (path_Q)=[IIFQIF]

In real mode (e.g. real_output_0), the NCO produces IIF on path_I

[cosωtsinωtsinωtcosωt]NCO[IQ]=[IcosωtQsinωt] (path_I) (path_Q)=[IIF]

Note that the fields marked with - represent waveforms that are not relevant for the mode.

Parameters:

wf_dict – The dictionary to add the waveform to. N.B. the dictionary is modified in function.

Raises:

ValueError – Data is complex (has an imaginary component), but the channel_name is not set as complex (e.g. complex_output_0).

insert_qasm(qasm_program: quantify_scheduler.backends.qblox.qasm_program.QASMProgram)[source]#

Add the assembly instructions for the Q1 sequence processor that corresponds to this pulse.

Parameters:

qasm_program – The QASMProgram to add the assembly instructions to.

class DigitalOutputStrategy(operation_info: quantify_scheduler.backends.types.qblox.OpInfo, channel_name: str)[source]#

Bases: PulseStrategyPartial

Interface class for MarkerPulseStrategy and DigitalPulseStrategy.

Both classes work very similarly, since they are both strategy classes for the ~quantify_scheduler.operations.pulse_library.MarkerPulse. The MarkerPulseStrategy is for the QCM/QRM modules, and the DigitalPulseStrategy for the QTM.

generate_data(wf_dict: Dict[str, Any])[source]#

Returns None as no waveforms are generated in this strategy.

class MarkerPulseStrategy(operation_info: quantify_scheduler.backends.types.qblox.OpInfo, channel_name: str)[source]#

Bases: DigitalOutputStrategy

If this strategy is used a digital pulse is played on the corresponding marker.

insert_qasm(qasm_program: quantify_scheduler.backends.qblox.qasm_program.QASMProgram)[source]#

Inserts the QASM instructions to play the marker pulse. Note that for RF modules the first two bits of set_mrk are used as switches for the RF outputs.

Parameters:

qasm_program – The QASMProgram to add the assembly instructions to.

static _fix_marker_bit_output_addressing_qcm_rf(qasm_program: quantify_scheduler.backends.qblox.qasm_program.QASMProgram, marker_bit_index: int)[source]#

Fix for the swapped marker bit output addressing of the QCM-RF.

class DigitalPulseStrategy(operation_info: quantify_scheduler.backends.types.qblox.OpInfo, channel_name: str)[source]#

Bases: DigitalOutputStrategy

If this strategy is used a digital pulse is played on the corresponding digital output channel.

insert_qasm(qasm_program: quantify_scheduler.backends.qblox.qasm_program.QASMProgram)[source]#

Inserts the QASM instructions to play the marker pulse. Note that for RF modules the first two bits of set_mrk are used as switches for the RF outputs.

Parameters:

qasm_program – The QASMProgram to add the assembly instructions to.