silq.instrument_interfaces.spincore package¶
Submodules¶
silq.instrument_interfaces.spincore.PulseBlasterDDS_interface module¶
-
class
silq.instrument_interfaces.spincore.PulseBlasterDDS_interface.
PulseBlasterDDSInterface
(instrument_name, **kwargs)[source]¶ Bases:
silq.instrument_interfaces.interface.InstrumentInterface
Interface for the Pulseblaster DDS
When a
PulseSequence
is targeted in theLayout
, the pulses are directed to the appropriate interface. Each interface is responsible for translating all pulses directed to it into instrument commands. During the actual measurement, the instrument’s operations will correspond to that required by the pulse sequence.One important issue with the DDS is that it requires an inverted trigger, i.e. high voltage is the default, and a low voltage indicates a trigger. Not every interface has been programmed to handle this (so far only the PulseBlaster ESRPRO has).
The interface also contains a list of all available channels in the instrument.
- Parameters
instrument_name – name of instrument for which this is an interface
Note
- For a given instrument, its associated interface can be found using
-
get_additional_pulses
(connections)[source]¶ Additional pulses needed by instrument after targeting of main pulses
-
setup
(repeat=True, **kwargs)[source]¶ Set up instrument after layout has been targeted by pulse sequence.
- Parameters
repeat (
bool
) – Repeat the pulse sequence indefinitely. If False, callingLayout.start
will only run the pulse sequence once.**kwargs – Ignored kwargs passed by layout.
- Returns
setup flags (see
Layout.flags
)
-
class
silq.instrument_interfaces.spincore.PulseBlasterDDS_interface.
SinePulseImplementation
(pulse_requirements=[])[source]¶ Bases:
silq.pulses.pulse_modules.PulseImplementation
-
implement
(frequencies, phases, amplitudes)[source]¶ Implements a targeted pulse for an InstrumentInterface.
This method is called during
InstrumentInterface.setup
.Implementation of a targeted pulse is very dependent on the interface. For an AWG, this method may return a list of waveform points. For a triggering source, this method may return the triggering time. In very simple cases, this method may not even be necessary.
- Parameters
*args – Interface-specific args to use
**kwargs – Interface-specific kwargs to use
- Returns
Instrument-specific return values.
See also
Other interface source codes may serve as a guide for this method.
-
pulse_class
¶ alias of
silq.pulses.pulse_types.SinePulse
-
silq.instrument_interfaces.spincore.PulseBlasterESRPRO_interface module¶
-
class
silq.instrument_interfaces.spincore.PulseBlasterESRPRO_interface.
MarkerPulseImplementation
(pulse_requirements=[])[source]¶ Bases:
silq.pulses.pulse_modules.PulseImplementation
-
implement
(t)[source]¶ Implements a targeted pulse for an InstrumentInterface.
This method is called during
InstrumentInterface.setup
.Implementation of a targeted pulse is very dependent on the interface. For an AWG, this method may return a list of waveform points. For a triggering source, this method may return the triggering time. In very simple cases, this method may not even be necessary.
- Parameters
*args – Interface-specific args to use
**kwargs – Interface-specific kwargs to use
- Returns
Instrument-specific return values.
See also
Other interface source codes may serve as a guide for this method.
-
pulse_class
¶ alias of
silq.pulses.pulse_types.MarkerPulse
-
target_pulse
(pulse, interface, **kwargs)[source]¶ Tailors a PulseImplementation to a specific pulse.
Targeting happens in three stages:
Both the pulse and pulse implementation are copied.
PulseImplementation
of the copied pulse is set to the copied pulse implementation, andPulseImplementation
.pulse is set to the copied pulse. This way, they can both reference each other.The targeted pulse is returned
- Parameters
pulse (Pulse) – Pulse to be targeted.
interface (InstrumentInterface) – PulseImplementation belongs.
connections (List[Connection]) – All connections in
Layout
.**kwargs – Additional unused kwargs
- Raises
TypeError – Pulse class does not match
PulseImplementation
.pulse_class
-
-
class
silq.instrument_interfaces.spincore.PulseBlasterESRPRO_interface.
PulseBlasterESRPROInterface
(instrument_name, channels=(1, 2, 3, 4), **kwargs)[source]¶ Bases:
silq.instrument_interfaces.interface.InstrumentInterface
Interface for the Pulseblaster ESR PRO
When a
PulseSequence
is targeted in theLayout
, the pulses are directed to the appropriate interface. Each interface is responsible for translating all pulses directed to it into instrument commands. During the actual measurement, the instrument’s operations will correspond to that required by the pulse sequence.The interface also contains a list of all available channels in the instrument.
- Parameters
instrument_name – name of instrument for which this is an interface
channels – List of channel indices. Default is (1, 2, 3, 4) corresponding to the BNC output connections. Additional channels are available on the board, requiring external connectors.
Note
- For a given instrument, its associated interface can be found using
Todo
Check if interface works if it is not the primary instrument.
-
setup
(repeat=True, output_connections=[], **kwargs)[source]¶ Set up instrument after layout has been targeted by pulse sequence.
- Parameters
- Returns
- setup flags (see
Layout.flags
). the
post_start_actions
flag is set to[self.start]
if there are connections that need to havehigh
voltage in the inactive state. This signifies that the pulse blaster should be started last, which ensures that other instrument have the right voltage.
- setup flags (see
-
class
silq.instrument_interfaces.spincore.PulseBlasterESRPRO_interface.
TriggerPulseImplementation
(pulse_requirements=[])[source]¶ Bases:
silq.pulses.pulse_modules.PulseImplementation
-
implement
(t)[source]¶ Implements a targeted pulse for an InstrumentInterface.
This method is called during
InstrumentInterface.setup
.Implementation of a targeted pulse is very dependent on the interface. For an AWG, this method may return a list of waveform points. For a triggering source, this method may return the triggering time. In very simple cases, this method may not even be necessary.
- Parameters
*args – Interface-specific args to use
**kwargs – Interface-specific kwargs to use
- Returns
Instrument-specific return values.
See also
Other interface source codes may serve as a guide for this method.
-
pulse_class
¶ alias of
silq.pulses.pulse_types.TriggerPulse
-
target_pulse
(pulse, interface, **kwargs)[source]¶ Tailors a PulseImplementation to a specific pulse.
Targeting happens in three stages:
Both the pulse and pulse implementation are copied.
PulseImplementation
of the copied pulse is set to the copied pulse implementation, andPulseImplementation
.pulse is set to the copied pulse. This way, they can both reference each other.The targeted pulse is returned
- Parameters
pulse (Pulse) – Pulse to be targeted.
interface (InstrumentInterface) – PulseImplementation belongs.
connections (List[Connection]) – All connections in
Layout
.**kwargs – Additional unused kwargs
- Raises
TypeError – Pulse class does not match
PulseImplementation
.pulse_class
-