progress.device
This module contains the quantum network device class. It is a ready-to-use quantum network device that can be used as a programmable repeater or end node of the network.
We show below the layered architecture of a quantum network device in our architectural model:

The device architecture is composed of the following layers (bottom-up):
Physical layer: The quantum hardware (quantum memory, processor, QNICs, etc.)
Link Layer Protocols: The clasical control protocols to generate robust entanglement over each QNIC.
Quantum Hardware Abstraction Layer: The QHAL (see
QHAL
). It abstracts the quantum hardware resources and provides a unified interface for the NET layer.NET layer: The NET layer is responsible for processing link-generated entanglement and delivering long-range entanglement to the applications. We implemented the NET layer as a programmable framework called PQ-NET (see
__init__
).
We point out that from the Link Layer up, all the processing and the information exchange is done via classical communication. The Physical layer is the only layer that is responsible for quantum computation. The NET layer can request quantum operations to the Physical layer through the API exposed by the QHAL.
- class progress.device.QNetworkDevice(device_id, num_qnics, num_cnics, num_qbits_qnic, qproc_params=None)[source]
Bases:
Node
A quantum network device that can be used as a programmable repeater or end node of the network.
- Parameters:
- device_idint
The ID of the device. Should be unique in the network.
- num_qnicsint
The number of QNICs.
- num_cnicsint
The number of classical NICs.
- num_qbits_qnicint
The number of memory qubits allocated to each QNIC.
- qproc_paramsdict[str, any] or None, optional
The parameters of the quantum processor of this device. See
get_processor()
for details. If None, a default processor is created. Defaults to None. The field num_positions can be omitted, as it is set to num_qnics * num_qbits_qnic.
Notes
- The device architecture is composed of the following layers (bottom-up):
Physical layer: The quantum hardware (quantum memory, processor, QNICs, etc.)
Link Layer Protocols: The clasical control protocols to generate robust entanglement over each QNIC.
Quantum Hardware Abstraction Layer: The QHAL (see
QHAL
). It abstracts the quantum hardware resources and provides a unified interface for the NET layer.NET layer: The NET layer is responsible for processing link-generated entanglement and delivering long-range entanglement to the applications. We implemented the NET layer as a programmable framework called PQ-NET (see
__init__
).
- Ports:
q_{i}: The i-th QNIC of this device.
c_{i}: The i-th classical NIC of this device.
controller: The controller port of this device. It is used for controller-device communication.
- Attributes:
- device_idint
The ID of the device.
- num_qnicsint
The number of QNICs of this device.
- num_cnicsint
The number of classical NICs of this device.
- qhardware
QHardware
The quantum hardware of this device.
- qhal
QHAL
The QHAL of this device.
- net_manager
NetManagerProtocol
The NET manager installed on this device.
- message_router
MessageRoutingService
The message router installed on this device.