  Researchers manipulate and measure quantum processing units via the classical
electronics control system. We developed an open-source FPGA-based quantum bit
control system called QubiC for superconducting qubits. After a few years of
qubit calibration and testing experience on QubiC 1.0, we recognized the need
for mid-circuit measurements and feed-forward capabilities to implement
advanced quantum algorithms effectively. Moreover, following the development of
RFSoC technology, we upgraded the system to QubiC 2.0 on an Xilinx ZCU216
evaluation board and developed all these enriched features. The system uses
portable FPGA gateware with a simplified processor to handle commands
on-the-fly. For design simplicity and straightforward scaling, we adopted a
multi-core distributed architecture, assigning one processor core per qubit.
The actual pulses combine the unique pulse envelope and carrier information
specified in a command. Each pulse envelope is pre-stored on FPGA's block RAMs,
ensuring the speed and reusability during the whole circuit. The pulse
parameters including amplitude, phase, and frequency can be updated from pulse
to pulse. The software stack is developed in Python, running on both the FPGA's
ARM core and host computer via XML-RPC. The quantum circuit can be described in
a high-level language, which supports programming at both pulse-level and
native-gate level, and includes high-level control flow constructs. The QubiC
software stack compiles these quantum programs into binary commands that can be
loaded into the FPGA. With Qubic 2.0, we successfully achieved multi-FPGA
synchronization in bench tests and demonstrated simplified feed-forward
experiments on conditional circuits. The enhanced QubiC system represents a
significant step forward in quantum computing, providing researchers with
powerful tools to explore and implement advanced quantum algorithms and
applications.
