qrunch.quantum.circuits.synthesis.layout.creator

Main builder for layout synthesis.

Functions

layout_synthesizer_creator()

Begin creating a layout_synthesizer.

Classes

LayoutSynthesizerCreator

Class for creating layout synthesizers.

class LayoutSynthesizerCreator

Bases: object

Class for creating layout synthesizers.

static qubit_dependent() QubitDependentLayoutSynthesizerCreator

Create a qubit-dependent layout synthesizer that chooses between different layout synthesis strategies based on the number of qubits in the circuit.

This synthesizer uses the simple SAT-based layout synthesizer for circuits with a number of qubits less than or equal to a specified threshold. For circuits with a number of qubits exceeding this threshold, it employs the Sabre layout synthesizer. This approach allows for finding guaranteed optimal solutions for small circuits, while still being able to handle larger circuits efficiently when finding a guaranteed optimal solution becomes infeasible.

Return type:

QubitDependentLayoutSynthesizerCreator

static sabre() SabreLayoutSynthesizerCreator

Create a layout sabre layout synthesizer.

This synthesizer is based on Qiskit’s Sabre layout synthesizer. It is quite fast but unlike the simple layout synthesizer it does not guarantee to find the optimal solution.

Return type:

SabreLayoutSynthesizerCreator

static simple_sat() SimpleSatLayoutSynthesizerCreator

Create a simple boolean satisfiability (SAT) based layout synthesizer.

This synthesizer uses a one way encoding where the order of CNOT gates is encoded between the current and previous iteration. Additionally, the encoding is close to minimal and mostly only contains clauses necessary to find the correct solution.

This synthesizer guarantees to find the optimal solution with the given encoding, but can be quite slow for larger circuits.

Return type:

SimpleSatLayoutSynthesizerCreator

layout_synthesizer_creator() LayoutSynthesizerCreator

Begin creating a layout_synthesizer.

Layout synthesizers are used to transform a quantum circuit such that it conforms to the connectivity constraints of a given quantum hardware architecture. They are used by the different backends.

Return type:

LayoutSynthesizerCreator