Quantum device simulation#
A backend supplies quantum-state evolution, measurement outcomes, or both.
ControlElectronics supplies physical times and commits operations in order.
All ports in a run share this backend state.
Connections#
Input: reset parameters, active drives over an interval, ideal-gate batches and measurement references.
Output: measurement bits and optional statevector or density-matrix inspection.
Interface:
IQuantumBackend, implemented natively or throughPythonBackend.
Calls at a physical boundary#
ControlElectronics commits the preceding evolution interval to BackendExecution
with all active drives. It then measures ending acquisitions and commits starting
gates.
BackendExecution collects operations across device boundaries. Measurement,
state inspection and the configured batch limit execute pending work. Each backend
receives the complete ordered batch through execute().
Backend calls are synchronous; their host time does not advance simulation time. Before successful completion, the simulator commits the remaining idle interval through the stop tick and executes the final batch.
Qubit 0 is the least significant statevector bit. Pulse amplitudes use radians per nanosecond; rotation-gate amplitudes use radians.
Objects and state#
Object or member |
Representation |
Role |
|---|---|---|
|
bounded operation batch |
Owns pending operations and decides when to execute them. |
|
replaceable interface |
Defines validation, reset, batch execution and state inspection. |
|
deterministic outcomes |
Returns configured measurement bits; no quantum statevector. |
|
optional bridge |
Calls a selected Python adapter with its validated configuration. Numerical packages are optional. |
|
drive source |
Provides the joint drive set for the preceding interval. |
Reset and errors#
Requested events are checked for backend support before timing control acceptance and again before device mutation. Numerical or adapter failures terminate the run. An adapter need not support every kind of event or statevector inspection.
Session reset discards pending operations and resets the backend with the configured qubit count and seed, creating the initial state for the new epoch.
Implementation and tests#
Source: backend.cpp, control_electronics.cpp, python_backend.cpp and backend.hpp.
CTest: backend.execution, systemc.bell.normal.
backend.execution checks batch capacity, operation order, measurement boundaries,
inspection, reset and failures without SystemC. The SystemC tests run complete
device sequences with the mock backend. Optional
numerical.* tests check numerical Aer evolution; python.plugin checks
loading and unchanged event timing across batch limits with an external adapter.
Optional numerical.final_state checks thermal relaxation through the stop tick
after the last device event.
Optional python.qutip checks analytic drive evolution, dissipation, measurement
collapse, and pulse and acquisition intervals passed through the native bridge.
Optional python.backend_configuration checks discovery, schema validation and
--check-config and backend selection in full-program execution.
Optional python.backend_semantics checks numerical evolution, noise,
measurement collapse, batch partitioning and validation for each enabled backend.