Changelog¶
Warning
This is the documentation for the old Vivace API. For the newer API compatible with both the Vivace and the Presto microwave platforms, see here.
Version 1.4.4¶
pulsed module: vivace.pulsed
¶
Pulsed class: vivace.pulsed.Pulsed
¶
Fix a bug in
setup_long_drive
that caused a crash when using the output_marker parameter.
Version 1.4.3¶
pulsed module: vivace.pulsed
¶
Pulsed class: vivace.pulsed.Pulsed
¶
Partially revert a change to
perform_measurement
that allowed for “infinite” template-matching data (match
), as that limited the functionality of having averaged data (store
) at the same time.
Version 1.4.2¶
pulsed module: vivace.pulsed
¶
Pulsed class: vivace.pulsed.Pulsed
¶
It is now possible to run
perform_measurement
without anystore
, i.e. with onlymatch
. Raise error when requesting more averaged data (store) than supported.Reverted in later release: increased the amount to template-matching data (match) to potentially infinite, as long as the host computer has enough memory and the network connection can keep up.
lockin module: vivace.lockin
¶
MixLockin class: vivace.lockin.MixLockin
¶
Simplify and clarify usage of
configure_mixer
. New method signature!
Version 1.4.1¶
pulsed module: vivace.pulsed
¶
Pulsed class: vivace.pulsed.Pulsed
¶
To abort a measurement started with
perform_measurement
, simply hit Ctrl + C.Method
setup_long_drive
checks for validity of rise_time and fall_time and raises aValueError
exception if needed.Fix bug in
update_flat_duration
.
lockin module: vivace.lockin
¶
MixLockin class: vivace.lockin.MixLockin
¶
Fix bug in
configure_mixer
when setting an even Nyquist zone.
Version 1.4.0¶
pulsed module: vivace.pulsed
¶
Pulsed class: vivace.pulsed.Pulsed
¶
New method
output_digital_marker
allows the user to program the digital output ports during the experiment to mark some event.setup_long_drive
andsetup_template
have a new optional argument output_marker. Use it to output a marker from a digital output any time the pulse is output from an RF port.
lockin module: vivace.lockin
¶
MixLockin class: vivace.lockin.MixLockin
¶
New method
configure_mixer
replacesset_mixer_frequency
andset_nyquist_zone
(now deprecated). The new method correctly handles changes in the up/downconverted spectrum due to operation in different Nyquist bands.
Version 1.3.0¶
General remarks¶
The input- and output-port numbers in the API have been reversed. They now match the numbers printed on the new front panel of Vivace.
It is now possible to specify the server port number, in addition to address, for
Pulsed
,DirectLockin
andMixLockin
. Useful when accessing multiple Vivace behind a NAT.
lockin module: vivace.lockin
¶
MixLockin class: vivace.lockin.MixLockin
¶
It is now possible to run the DAC at 6.0 GSamples/s: set the dac_freq parameter in the class constructor to 6.0. The previous settings of 5.0 (default) and 4.0 are still available.
Version 1.2.0¶
pulsed module: vivace.pulsed
¶
Pulsed class: vivace.pulsed.Pulsed
¶
The class constructor will check the firmware
version
is compatible with the APIversion
, and raise aRuntimeError
otherwise.Method
setup_template_matching_pair
:It is now possible to compare the match of a pair of templates either from the same port or from two adjacent ports.
Modified functionality of comparison between the two matches: a matching comparison is considered True (i.e. the trigger is active) if the first match result plus the second match result if greater or equal than the threshold. Previously the comparison was True if the first match minus the second was greater or equal than zero. To obtain the same behavior as before, set the threshold to zero (default) and invert the sign of template2.
New optional argument threshold.
New optional argument compare_next_port.
Extended docstring to include description of new arguments.
Method
setup_condition
:It is now possible to output a template when a matching condition is unsuccessful. Combined with the previous behavior, this enables to output different pulses based on whether the outcome of a single matching comparison was above or below threshold.
Parameters output_templates renamed to output_templates_true.
New optional parameter output_templates_false.
New method
setup_HL_readout
to conveniently set up a high/low sideband measurement across a pair of input ports.Method
enable_output()
renamed toblank_output
, the first argument is changed from state to blank, with opposite meaning.
lockin module: vivace.lockin
¶
DirectLockin class: vivace.lockin.DirectLockin
¶
The class constructor will check the firmware
version
is compatible with the APIversion
, and raise aRuntimeError
otherwise.Method
enable_output()
renamed toblank_output
, the first argument is changed from state to blank, with opposite meaning.
utils module: vivace.utils
¶
New method
templates_for_IQ_readout
to conveniently create a pair of input templates for IQ demodulation.
Version 1.1.0¶
version module: vivace.version
¶
New module to obtain version information. The vivace package now also has the __version__ attribute.
pulsed module: vivace.pulsed
¶
Pulsed class: vivace.pulsed.Pulsed
¶
Method removed
output_carrier
.All carriers for all channels are now automatically started at the beginning of a measurement, and they are free running. The user does not need to start and stop them manually to match the output envelopes. The carriers are free running, so they will remain phase coherent until the user sets a particular frequency/phase with
select_frequency
ornext_frequency
.New methods:
enable_output
(renamed toblank_output
in a later release)
lockin module: vivace.lockin
¶
DirectLockin class: vivace.lockin.DirectLockin
¶
New methods:
enable_output
(renamed toblank_output
in a later release)
utils module: vivace.utils
¶
New methods for easier SSH access through Python. OBS: require third-party package Fabric.
Version 1.0.2¶
pulsed module: vivace.pulsed
¶
Pulsed class: vivace.pulsed.Pulsed
¶
Method
perform_measurement
Bug fix setting up carrier for templates
LongDrive class: vivace.pulsed.LongDrive
¶
Class constructor
__init__
Bug fix assertion when use_scale
Version 1.0.1¶
pulsed module: vivace.pulsed
¶
New features:
Each output channel now has two sine-wave generators.
It is now possible to jump to a given location of the frequency and scale look-up tables, rather than just stepping sequentially.
Pulsed class: vivace.pulsed.Pulsed
¶
Class constructor
__init__
added optional parameter address to specify the IP address or hostname of the Vivace to connect to.
Method
setup_freq_lut
new required parameter carrier.
Method
setup_long_drive
new required parameter carrier.
Method
setup_template
type of parameter envelope changed to
int
, default to 0; this parameter now controls which of the two carriers should be used for the template.
Method
perform_measurement
return two empty
numpy.ndarray
in case dry_run is True.
New methods:
Version 1.0.0¶
General remarks¶
The API is now in its own package called
vivace
. If you install the package with pip/pip3, you can import it from anywhere withimport vivace
, no moresys.path.append
nonsense!The classes
Pulsed
,DirectLockin
andMixLockin
configure the clocking circuits and the firmware on the hardware when initialized, no need to do it manually through SSH or add-hoc scripts anymore!When designing an experiment sequence with the class
Pulsed
, you can now start from time zero. No need to manually add some safety dead time at the start of your sequence!
vivace package: vivace
¶
The module simpleq is renamed to pulsed.
The modules simple_lockin and mix45_lockin are merged into lockin.
New module vivace.utils.
Modules rflockin, generate_lockin_stimuli and generate_quantum_stimuli are made private and should not be accessed by API users.
pulsed module: vivace.pulsed
¶
The class SimpleQ is renamed to Pulsed.
New classes TrigEvent and LongDrive used as return types by methods of Pulsed.
Pulsed class: vivace.pulsed.Pulsed
¶
Class constructor
__init__
configures the clocking circuits and the firmware on the hardware when initialized;
new optional parameters ext_ref_clk and force_reload.
Method
setup_freq_lut
the frequency LUT can be configured for multiple ports at the same time by passing a list to output_ports.
parameter output_index renamed to output_ports;
parameter frequency_lut renamed to frequencies;
parameter phase_lut renamed to phases;
parameter repeat_count is now optional;
Method
setup_scale_lut
the scale LUT can be configured for multiple ports at the same time by passing a list to output_ports.
parameter output_index renamed to output_ports;
parameter scale renamed to scales;
parameter repeat_count is now optional;
Method
setup_long_drive
the beginning and end of the pulse can now be smoothed using rise_time and fall_time;
parameter template_amp renamed to amplitude;
new optional parameters rise_time and fall_time;
new return type:
LongDrive
, use its methods to change the length of the pulse.
Method
setup_template
raises an exception when the template is out of scale, rather than printing a warning to stdout;
new return type: list of
TrigEvent
.
Method
perform_measurement
automatically adds some set time at the start of the sequence to account for FPGA reset (~20 ns);
prints also data tranfer time;
raises exceptions when period is too short or too long.
Method
output_pulse
can now take either a single pulse or a list of pulses to be output at the same time;
parameter templates renamed to pulse_info.
Method
output_carrier
parameter port_list renamed to output_ports.
Method
set_store_ports
parameter store_ports renamed to input_ports.
Method
next_frequency
parameter out_port_list renamed to output_ports.
Method
next_scale
parameter out_port_list renamed to output_ports.
New methods: