Home
The qubic
module contains the core software tools for compiling and running QubiC programs, as well as conducting simple data analysis such as state classification.
- circuit compilation: qubic.toolchain wraps the core qubic compiler tools from the distributed processor repo. Compilation + assembling lowers the QubiC high-level program representation to distributed processor assembly code.
- infrastructure for running circuits (see the Getting Started Guide for how to set this up):
- From a user standpoint, the lowest-level interface you will interact with is defined by the AbstractCircuitRunner class, which allows you to run compiled QubiC programs and receive the resulting raw data from hardware (in the form of ADC traces or integrated I/Q data). Depending on the implementation, the AbstractCircuitRunner can be accessed on the ZCU216 (CircuitRunner) or on a client machine (CircuitRunnerClient).
- The JobManager is a higher-level interface, which wraps compilation, execution, and (optionally) state classification
- Job servers can be configured using qubic.soc_rpc_server and/or qubic.job_rpc_server to allow compiled circuits to be submitted from a remote machine
- analysis tools: qubic.state_discrimination for qudit state classification using a Gaussian-mixture model (GMM).
- interfaces to TrueQ (qubic.trueq) and PyGSTi (qubic.pygsti)
Helpful Links for Getting Started
- Getting Started Guide for configuring the ZCU216 to run QubiC
- Understanding Channel Configuration for the channel layout of the current gateware, and the gateware -> hardware channel mapping.
- demo notebooks for writing and running simple qubic programs
- more advanced examples can be found in the repo for our IEEE Quantum Week 2023 Tutorial
- language references: