Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
PulserConstraints class.
Each scalar parameter is an ScalarConstraints object defined in cor.util.interfaces.
Essentially it contains min/max values as well as min step size, default value and unit of
the parameter.
PulserConstraints.activation_config differs, since it contain the channel
configuration/activation information of the form:
{: ,
: ,
...}
If the constraints cannot be set in the pulsing hardware (e.g. because it might have no
sequence mode) just leave it out so that the default is used (only zeros).
"""
constraints = PulserConstraints()
# The compatible file formats are hardware specific.
constraints.waveform_format = ['bin']
constraints.dac_resolution = {'min': 12, 'max': 14, 'step': 2,
'unit': 'bit'}
if self._MODEL != 'M8190A':
self.log.error('This driver is for Keysight M8190A only, but detected: {}'.format(
self._MODEL
))
if self._dac_resolution == 12:
constraints.sample_rate.min = 125e6/self._sample_rate_div
constraints.sample_rate.max = 12e9/self._sample_rate_div
constraints.sample_rate.step = 1.0e7
constraints.sample_rate.default = 12e9/self._sample_rate_div
PulserConstraints class.
Each scalar parameter is an ScalarConstraints object defined in cor.util.interfaces.
Essentially it contains min/max values as well as min step size, default value and unit of
the parameter.
PulserConstraints.activation_config differs, since it contain the channel
configuration/activation information of the form:
{: ,
: ,
...}
If the constraints cannot be set in the pulsing hardware (e.g. because it might have no
sequence mode) just leave it out so that the default is used (only zeros).
"""
constraints = PulserConstraints()
# The file formats are hardware specific.
constraints.waveform_format = ['wfm']
constraints.sequence_format = ['seq']
constraints.sample_rate.min = 10.0e6
constraints.sample_rate.max = 600.0e6
constraints.sample_rate.step = 1.0e6
constraints.sample_rate.default = 600.0e6
constraints.a_ch_amplitude.min = 0.02
constraints.a_ch_amplitude.max = 4.5
constraints.a_ch_amplitude.step = 0.001
constraints.a_ch_amplitude.default = 4.5
constraints.a_ch_offset.min = -2.25
Each scalar parameter is an ScalarConstraints object defined in cor.util.interfaces.
Essentially it contains min/max values as well as min step size, default value and unit of
the parameter.
PulserConstraints.activation_config differs, since it contain the channel
configuration/activation information of the form:
{: ,
: ,
...}
If the constraints cannot be set in the pulsing hardware (e.g. because it might have no
sequence mode) just leave it out so that the default is used (only zeros).
"""
# Example for configuration with default values:
constraints = PulserConstraints()
constraints.sample_rate.min = 50e3
constraints.sample_rate.max = 3.35e9
constraints.sample_rate.step = 1e3
constraints.sample_rate.default = 12.0e9
constraints.a_ch_amplitude.min = 0.0
constraints.a_ch_amplitude.max = 0.0
constraints.a_ch_amplitude.step = 0.0
constraints.a_ch_amplitude.default = 0.0
constraints.a_ch_offset.min = 0.0
constraints.a_ch_offset.max = 0.0
constraints.a_ch_offset.step = 0.0
constraints.a_ch_offset.default = 0.0
self.analog_offsets = {}
# loaded sequence
self.last_sequence = None
# loaded waveforms, channel -> waveform name
self.loaded_waveforms = {}
# uploaded waveforms, waveform name -> instrument wfm number
self.written_waveforms = {}
self.chcfg = {
'a_ch1': M3202ChannelCfg(),
'a_ch2': M3202ChannelCfg(),
'a_ch3': M3202ChannelCfg(),
'a_ch4': M3202ChannelCfg(),
}
constraints = PulserConstraints()
constraints.sample_rate.min = 4e8
constraints.sample_rate.max = 1e9
constraints.sample_rate.step = 1.0
constraints.sample_rate.default = 1e9
constraints.a_ch_amplitude.min = 0
constraints.a_ch_amplitude.max = 1.5
constraints.a_ch_amplitude.step = 0.01
constraints.a_ch_amplitude.default = 1.5
constraints.a_ch_offset.min = 0
constraints.a_ch_offset.max = 1.5
constraints.a_ch_offset.step = 0.01
constraints.a_ch_offset.default = 0.0
# FIXME: Enter the proper digital channel low constraints:
constraints.d_ch_low.min = 0.0
Each scalar parameter is an ScalarConstraints object defined in cor.util.interfaces.
Essentially it contains min/max values as well as min step size, default value and unit of
the parameter.
PulserConstraints.activation_config differs, since it contain the channel
configuration/activation information of the form:
{: ,
: ,
...}
If the constraints cannot be set in the pulsing hardware (e.g. because it might have no
sequence mode) just leave it out so that the default is used (only zeros).
"""
# TODO: Check values for AWG7122c
constraints = PulserConstraints()
if self.model == 'AWG7122C':
if self.get_interleave():
constraints.sample_rate.min = 12.0e9
constraints.sample_rate.max = 24.0e9
constraints.sample_rate.step = 5.0e2
constraints.sample_rate.default = 24.0e9
else:
constraints.sample_rate.min = 10.0e6
constraints.sample_rate.max = 12.0e9
constraints.sample_rate.step = 10.0e6
constraints.sample_rate.default = 12.0e9
elif self.model == 'AWG7082C':
if self.get_interleave():
constraints.sample_rate.min = 8.0e9