Enfield is a source-to-source compiler that processes a quantum intermediate representation specified by IBM, called Open Quantum Assembly (OpenQASM). It performs qubit allocation, mapping logic qubits into physical qubits. Enfield has been used extensively in our CGO'18 paper (Qubit Allocation) and in our OOPSLA'19 paper (Qubit Allocation as a Combination of Subgraph Isomorphism and Token Swapping).
Qubit Allocation consists in mapping logical qubits to physical qubits, respecting the constraints imposed by the target architecture. To preserve the semantics of the original quantum circuit (i.e.: the interactions between the states of any two qubits must be executed), we may use some transformations, such as reversals; swaps; and bridges when mapping logical to physical qubits.
Enfield implements different qubit allocation methods: dynprog; wpm; bmt; wqubiter; qubiter; wpm_random; etc. This online interface supports two target architectures: ibmqx2 (5 qubits); and ibmqx3 (16 qubits). The standalone distribution of Enfield lets users specify different architectures in JSON format. You can download Enfield in a docker image (see below) or download our most recent version at our GitHub repository. Instructions are available in the README.md file.
In the interface on the right, you can paste your OpenQASM code, choose the target quantum architecture and the qubit allocation algorithm to be used (click here for more information). It will then process the given code into a QASM code that does not break any of the architecture coupling restrictions and the total cost needed to implement the algorithm. For more information on IBM's architectures, click here .