Qubit - ZeeUTao/zi_labrad GitHub Wiki



 

Qubit object define the parameters used in experiment, such as, f10, piAmp, readout_amp, channels .

  • python: dictionary-like object

  • location: Registry\user.dir\sample.dir\qubit.dir, and we assign a dict to each qubit, q1, q2, ..., q1.dir,q2.dir...

In the scripts, we can load the dicts of all qubits as a list qubits, where qubits is [q1,q2,...], and do some stuff like

for qubit in qubits:
	do_some_thing(qubit)

 

channels

Define a mapping from the port of qubits (channel) to the experimental devices (AWG).

  • location: qubit['channels'], as an item of a qubit.

The wiring of AWG is defined in channels as an item of a qubit, qubit['channels'], with a structure of

[(channel,(device_name, device_index)),...]

such as

[('xy_I',('hd_1',1)),('xy_Q',('hd_1',2)),('dc',('hd_1',4)),('z',('hd_1',3))]

DC

If DC is in channels, such as ('dc',('hd_1',4), you should define the waveform of dc in qubit['dc'] and then the device hd_1 will send the waveform from the port 4.

If DC is not in channels, such as

[('xy_I',('hd_1',1)),('xy_Q',('hd_1',2)),('z',('hd_1',3))]

you should give the parameters qubit['bias'], for example qubits['bias'] = 0.2 V, and the device hd_1 will set the dc offset as 0.2 V in port 3.

Warning:

When the dc offset is sent in the fridge all the time, the fridge may be warmed up. To avoid it, we always set the offset as 0 automatically when the experiments stop.

microwave source

In XY or readout line, there is only one microwave source now, the frequency and power is only determined by the first qubit.

For example, your config is [q1, q2], then the frequency and power is only determined by q1.

In some cases, you may find q2 cannot be driven, which probably due to the different parameters of microwave source. That is, you change the parameters in q2 which is not the first master qubit, since all of the qubits share one source.

A solution is setting the frequency to be the same in your scripts, like below

for q in qubits:
	q['xy_mw_fc'] = q_ref['xy_mw_fc']

pulse length

  • awgs_pulse_len specify the maximum pulse length for experiment, the default value of is 1 us.

    If your pulse is not longer than awgs_pulse_len, the machine only reload the waveform of your pulse and fill zero points on the remaining parts. Otherwise, the machine should re-compile the waveform which is slow.

    We suggest you to add the maximum length in advance if you need to implement some long experiment exceeding the default value, such as T1 measurement

    for q in qubits:
    	q['awgs_pulse_len'] += np.max(sequence_time_of_your_exp)
    

    If you do not give it in advance, the machine will re-compile for each step in your measurement when the pulse length is overflow and still increasing.

  • experiment_length specify the pulse length of the present experiment, which must be given in your scripts.

    start = 0
    some_pulse(start, length)
    start += 50e-9
    some_pulse(start, length)
    start += 50e-9
    
    qubit['experiment_length'] = start
    # this is just one qubit
    # for multi-qubits, you should specify it on each qubit
    

Time ordering

# DC start
    # XY,Z pulses start
    # XY,Z pulses end
    # readout pulses start
		# demod start
		# demod end
    # readout pulses end
# DC end