Run a buffered sweep with the Basel DAC

The Basel LNHR DAC can play a sweep from its internal AWGs. Once programmed, the DAC advances at hardware speed instead of waiting for Python at every setpoint. This is the simplest example of a buffered sweep tree: one root node generates the sweep.

Describe the sweep

from qcdrivers.buffered.basel import NodeBaselDAC

gate1_sweep = Sweep(gate1, 0, 1, num=5, start_delay=0, delay=0.03e-3)

buffered_sweep = {
    "instrument": NodeBaselDAC(inst=dac),
    "sweeps": [gate1_sweep],
}

measure.run([buffered_sweep], dependents=[], **run_dict)

NodeBaselDAC translates the Qanary Sweep into an AWG waveform. The delay is the requested interval between points; start_delay is not used by this buffered driver.

For a two-dimensional scan, add a second Sweep to "sweeps". The first sweep is the outer axis and the second is the inner axis. The node assigns the two axes to separate AWGs and returns data with the corresponding two-dimensional shape.

Note

For a two-dimensional scan, place the gates on separate DAC boards—one low and one high—and cross-connect their synchronization signals. Enable high bandwidth on the swept channels before requesting short point delays.

Add acquiring instruments as child nodes when moving from this timing check to a real measurement; the MFLI and UHFLI tutorials show that pattern.

Full example: basel_dac_sweep.py