Frame - ZeeUTao/zi_labrad GitHub Wiki

Labrad-like frame

Why Labrad

Google,浙大,用DAC, ADC板卡系列的软件都是基于 Labrad 的框架雏形,经过十几年迭代,到目前的Scala-Labrad已经是趋于逻辑上最合理的模型

有 Delphi-Labrad,Java-Labrad,Scala-Labrad,Python-Labrad等,可方便的跨平台

之前我们板卡主要使用 Delphi-Labrad主控和图形界面 + Python-Labrad接口 + Java/Python 的仪器Servers

目前的状态

  • 基本框架

    因为直接参考Labrad成熟的框架,刚开始9,10月时的初版框架就已经能开始用来做实验了,

    后续我们主要是修复一些仪器设置上,代码上的一些bug

  • 多比特控制

    因为针对之前板卡的脚本进行了一些优化,所以做多比特实际体验,效率要比用板卡时更好

    基本的两三比特的测试都已经OK,陶子予准备做一些要用到,4到10比特的实验

  • 部分粗校准

    与比特状态无关的,存 Calibration 数据,实验中调用做 Correction

    与比特状态关联,敏感的,比如Z 线校准,作为比特对象的一个参数,经常的去更新

  • 校准 (细校准)

    实际 zero,IQ,的校准与很多参数有关,最好是根据实验当前状态,在fridge内部时再次细校准

    Z 线的拖尾等

  • 用户界面

    这个我们认为不影响正常实验,所以可以等中电科他们做,暂时还是用我们之前用的老版本的Registry,Grapher

Qubit object

general frame to scalable experiment

channel (dictionary)

Define a mapping from qubit channel to device.

  • Example:

    Z channel to the instrument with ID dev8334 and port 1

    XY_I channel to the instrument with ID dev8337 and port 3

pulse (object)

Define the abstract waveforms (function) used in the experiment.

q1.xy = wave1 + wave2 + 1.5*wave3
q2.z = wave_z
# regard as 
q1.xy = gate_U0 + gate_U1 + gate_U2
q2.z = gate_CZ

It will be converted into array before sent to instrument object.

wave_AWG = func2array(wave_func)
send_waveform(wave_AWG)
stateDiagram-v2
	[*] --> user
	user --> qubits

	state user {
	python --> pulses : waveforms
	python --> iteration_logic : muliplex/automate
    Registry --> parameters
    Registry --> channel
    }
    
	state qubits {
	[*] --> data_array : func2array
	data_array --> device : driver/API
    }