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
}