Verify Compilation¶
QCEC provides a dedicated verify_compilation()
method for verifying that a quantum circuit has been compiled correctly based on the methods proposed in [9].
- verify_compilation(original_circuit, compiled_circuit, optimization_level=1, ancilla_mode=AncillaMode.NO_ANCILLA, configuration=None, **kwargs)[source]¶
Verify compilation flow results.
Similar to
verify
, but uses a dedicated compilation flow profile to guide the equivalence checking process. The compilation flow profile is determined by theoptimization_level
andancilla_mode
arguments.There are two (non-exclusive) ways of configuring the equivalence checking process:
Pass a
Configuration
instance as theconfiguration
argument.2. Pass keyword arguments to this function. These are directly incorporated into the
Configuration
. Any existing configuration is overridden by keyword arguments.
- Parameters:
original_circuit (
QuantumCircuit
|str
) – The original circuit.compiled_circuit (
QuantumCircuit
|str
) – The compiled circuit.optimization_level (
int
) – The optimization level used for compiling the circuit (0, 1, 2, or 3). Defaults to 1.ancilla_mode (
AncillaMode
) – The ancilla mode <.AncillaMode> used for realizing multi-controlled Toffoli gates, as available in Qiskit. Defaults toAncillaMode.NO_ANCILLA
.configuration (
Configuration
|None
) – The configuration to use for the equivalence checking process.**kwargs (
Unpack
[ConfigurationOptions
]) – Keyword arguments to configure the equivalence checking process.- Returns:
Results
– The results of the equivalence checking process.
Note
It is essential to include measurements at the end of the circuit, since the equivalence checker uses the measurements to determine the final location of the logical qubits in the compiled circuit. Failing to do so may result in incorrect results because the checker will then simply assume that the logical qubits are mapped to the physical qubits in the same order as they appear in the circuit. Make sure to insert measurements before the circuit is compiled to the target architecture.
Compilation Flow Profile Generation¶
QCEC provides dedicated compilation flow profiles for IBM Qiskit which can be used to efficiently verify the results of compilation flow results [9].
These profiles are generated from IBM Qiskit using the generate_profile()
method.
- generate_profile(optimization_level=1, mode=AncillaMode.NO_ANCILLA, filepath=None)[source]¶
Generate a compilation flow profile for the given optimization level and ancilla mode.
- Parameters:
optimization_level (
int
) – The IBM Qiskit optimization level to use for the profile (0, 1, 2, or 3). Defaults to 1.mode (
AncillaMode
) – The ancilla mode <.AncillaMode> used for realizing multi-controlled Toffoli gates, as available in Qiskit. Defaults toAncillaMode.NO_ANCILLA
.filepath (
Path
|None
) – The path to the directory where the profile should be stored. Defaults to theprofiles
directory in themqt.qcec
package.- Return type: