silq.instrument_interfaces package¶
Subpackages¶
- silq.instrument_interfaces.AlazarTech package
- silq.instrument_interfaces.Tektronix package
- silq.instrument_interfaces.keysight package
- Subpackages
- Submodules
- silq.instrument_interfaces.keysight.E8267D_interface module
- silq.instrument_interfaces.keysight.Keysight_81180A_interface module
- silq.instrument_interfaces.keysight.Keysight_SD_AWG_interface module
- silq.instrument_interfaces.keysight.Keysight_SD_DIG_interface module
- Module contents
- silq.instrument_interfaces.lecroy package
- silq.instrument_interfaces.rohde_schwarz package
- silq.instrument_interfaces.spincore package
Submodules¶
silq.instrument_interfaces.chip_interface module¶
-
class
silq.instrument_interfaces.chip_interface.
ChipInterface
(instrument_name, **kwargs)[source]¶ Bases:
silq.instrument_interfaces.interface.InstrumentInterface
Interface for the Chip meta-instrument.
The Chip and its interface don’t have real functionality, but are used for connections that lead to/from the chip.
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
Note
- For a given instrument, its associated interface can be found using
-
class
silq.instrument_interfaces.chip_interface.
MeasurementPulseImplementation
(pulse_requirements=[])[source]¶ Bases:
silq.pulses.pulse_modules.PulseImplementation
-
implement
(instrument, sampling_rates, threshold)[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
¶
-
silq.instrument_interfaces.interface module¶
-
class
silq.instrument_interfaces.interface.
Channel
(instrument_name, name, id=None, input=False, output=False, input_trigger=False, input_TTL=False, output_TTL=False, invert=False)[source]¶ Bases:
object
Instrument channel, specified in
InstrumentInterface
A channel usually corresponds to a physical channel in the instrument, such as an input/output channel, triggering channel, etc.
- Parameters
instrument_name (
str
) – Name of instrument.name (
str
) – Channel name, usually specified on the instrument.input (
bool
) – Channel is an input channel.output (
bool
) – Channel is an output channel.input_trigger (
bool
) – Channel is used as instrument trigger.input_TTL (
bool
) – Channel input signal must be TTLoutput_TTL (
Tuple
[float
,float
]) – Channel output signal is TTL with (low, high) voltageinvert (
bool
) – Channel signal is inverted: on is low signal, off is high signal
-
class
silq.instrument_interfaces.interface.
InstrumentInterface
(instrument_name, **kwargs)[source]¶ Bases:
qcodes.instrument.base.Instrument
Interface between the
Layout
and instrumentsWhen 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 (
str
) – name of instrument for which this is an interface
Note
- For a given instrument, its associated interface can be found using
get_instrument_interface()
-
get_additional_pulses
(connections)[source]¶ Additional pulses needed by instrument after targeting of main pulses
-
get_pulse_implementation
(pulse, connections=None)[source]¶ Get a target implementation of a pulse if it exists.
If no implementation can be found for the pulse, or if the pulse properties are out of the implementation’s bounds, None is returned.
-
initialize
()[source]¶ This method gets called at the start of targeting a pulse sequence :returns: None
-
setup
(samples=None, input_connections=[], output_connections=[], repeat=True, **kwargs)[source]¶ Set up instrument after layout has been targeted by pulse sequence.
Needs to be implemented in subclass.
- Parameters
samples (
Optional
[int
]) – Number of acquisition samples. If None, it will use the previously set value.input_connections (
list
) – InputConnection
list of instrument, needed by some interfaces to setup the instrument.output_connections (
list
) – OutputConnection
list of instrument, needed by some interfaces to setup the instrument.repeat (
bool
) – Repeat the pulse sequence indefinitely. If False, callingLayout.start()
will only run the pulse sequence once.**kwargs – Additional interface-specific kwarg.
- Return type
- Returns
setup flags (see
Layout.flags
)