Frequently Asked Questions#

Q: How do I set negative numbers to a register?

A. Registers within the sequence processor store 32 bit numbers, which are interpreted as signed or unsigned depending on the specific Q1ASM instruction (for more details please see [Q1ASM Page](INSERT LINK HERE)). To represent signed integers (including negative numbers), you can use the concept of 2’s complement. In Q1ASM, you can achieve this by performing subtraction using the sub command. Here’s how:

  1. Initialize a register to zero using: move 0, R0.

  2. Use the sub command to subtract the desired value from the zero-initialized register. For example, to set -3 to a register R_dest, you can use: sub 3, R0, R_dest.

Q: What is the minimum delay for back-to-back acquisitions?

A. Acquisitions can be achieved back-to-back without any delay.

Q: What is the maximum rate of acquisitions?

A. The maximum sustained rate for back-to-back acquisitions depends on how many sequencers are used. When using at least one, three or five sequencers, the maximum sustained rate is one acquisition on each sequencer per 300, 600 or 900 ns, respectively. Due to the built-in buffer, it is possible to exceed the maximum sustained rate for up to 7 acquisitions on each sequencer.

Q: How many averages can you do in a single sequence for a particular bin?

A. The sequence processor accumulates the measured value in a 32-bit register before dividing it by the number of repetitions. For binning it is \(2^{16}\) with inputs at maximum amplitude and maximum integration time and up to \(2^{32}\) with inputs at lower amplitudes or shorter integration times, but the number of averages then depends on the input signal strength and integration time. If the maximum is exceeded, the sequencer will raise the ACQ_BINNING_OUT_OF_RANGE flag.

Q: How many averages can you do for scope acquisition?

A. \(2^{32}\).

Q: What is the total propagation delay contributed by the input and output path of a module?

A. For a baseband module this is around 149 ns whereas for RF modules this is around 153 ns (provided there are no RTP filters activated). One can accurately measure and compensate the total delay/time-of-flight during measurements using the steps outlined in the “TOF Calibration Section” in [rabi experiment tutorial](INSERT LINK HERE).

Q: What is the difference between reset_ph and set_ph 0?

A. The reset_ph instruction resets any phase that the NCO has accumulated. In contrast, set_ph 0 only sets the initial phase to 0, leaving any phase that has been accumulated during an experiment unaffected. For more detail, please refer to the “Parameter Operation Instructions” in Q1 Sequence Processor introduction.

Q: What is the minimum wait time in Q1ASM?

A. The minimum duration for the wait instruction, and for all [real-time instructions](INSERT LINK HERE), is 4 nanoseconds.

Q: What is the memory limit for instructions?

A. The maximum number of instructions per program depends on the module type. For QCM type modules, the limit is 16384 instructions. For QRM type modules, the limit is 12288 instructions. For QTM, the limit is 16384 instructions.

Q: What can cause an underflow error?

A. An underflow error can occur if the total wall-time of an experiment is shorter than the time required for the Q1 processor to latch the buffer containing Q1 instructions. The wall-time is determined by the duration arguments of real-time instructions (e.g., wait, upd_param, play, acquire). Thus, the sum of all duration arguments in a loop should be larger than or equal to the sum of processing time of all Q1 instructions. A simple solution to get rid of the underflow error is to increase the duration of real-time instructions or to add a wait instruction. You can find the Q1ASM instructions processing times [here](INSERT LINK HERE) and more explanation in the [Q1 Sequencer page](INSERT LINK HERE).

Q: How can I resolve an output overflow error?

A. An OUTPUT_OVERFLOW error indicates that the combined amplitude of the waveforms being played on a single output channel has exceeded the DAC’s maximum voltage range.

Q: How does channel mapping work?

A. The default state is the I quadrature of all sequencers is connected to all even inputs and outputs, and Q to odd inputs and outputs. This is so that the modules can always play a sequence in their default state. For most applications, only a small number of these connections is enabled. Therefore, there are convenience functions to clear the channel map:

  • To set all connect_out* parameters for all sequencers to ‘off’:

    instrument.disconnect_outputs()
    
  • To set all connect_acq* parameters for all sequencers to ‘off’:

    instrument.disconnect_inputs()
    

Then, we could do channel mapping independently via:

# QCM Baseband
instrument.sequencer{0..5}.connect_out{0..3}('I') # E.g: qcm.sequencer0.connect_out0("I")
instrument.sequencer{0..5}.connect_out{0..3}('Q') # E.g: qcm.sequencer0.connect_out1("Q")

# QRM baseband
instrument.sequencer{0..5}.connect_out{0,1}('I')
instrument.sequencer{0..5}.connect_out{0,1}('Q')
instrument.sequencer{0..5}.connect_acq_I('in0')
instrument.sequencer{0..5}.connect_acq_Q('in1')

# QCM-RF
instrument.sequencer{0..5}.connect_out{0,1}('IQ')

# QRM-RF
instrument.sequencer{0..5}.connect_out0('IQ')
instrument.sequencer{0..5}.connect_acq('in0')