-
Notifications
You must be signed in to change notification settings - Fork 31
Architecture Proposal
#Overview The following figure shows a first draft of a division of the software into packages / components. The arrows indicate usage, i.e. if an arrow points from A to B, A uses (parts of) B. Layering and increased abstraction of components is indicated by vertical positioning. The higher "up" a component is, the more it abstracts from the actual hardware.
#Component Roles This chapter very briefly describes the intended roles of packages. These are subject to change as the design gets more and more refined. ##Quantum Circuits Contains classes to represent quantum circuits in the software, such as Qubits, Gates, etc. Does not contain any logic operating on these. Depending on the actual use case, the represented quantum circuit can then either be simulated or executed on the hardware using the corresponding components. ##Simulation Framework A component that can be used to simulate the behavior of a quantum circuit. Most likely a (wrapper for) an existing software (e.g. QuTiP). ##QC Runtime A component that can be used to execute a quantum circuit on real qubit hardware. It will configure timestreams with pulses and measurements corresponding to quantum circuit gates start their execution. ##Timestreams Set up complex execution paths. Sequences of pulses with flow controls (branching, looping) possibly depending on measured hardware behavior, feedback loops, etc. Association between output and input (pulses and measurements). ##Pulses A component to define pulses (control signals) or templates for pulses on different levels of sophistication: Directly as a waveform, as a sequence of important points with interpolation in between (pulse table (pulsetab)) with ability to nest pulses to construct more complex pulses out of existing, simple ones. ##Measurement Logic to configure data acquisition and analysis: Masks, post-processing, etc.. ##Hardware Abstraction Abstracts from the real hardware: Hardware qubits are controlled using voltage signals and their behavior is measured as such. These signals are generated/measured by dedicated hardware devices, i.e., arbitrary waveform generators (AWGs) and data acquisition devices/cards (DAQs). A variety of such devices from multiple manufacturers exist. Hardware abstraction should, first, abstract from the specifics of a device and, second, from the hardware setup (which single device is connected to which qubit) and offer only a uniform set of input and output channels to layers above as well as means to configure devices through a common interface.