iqm.qiskit_iqm.iqm_naive_move_pass.transpile_to_IQM#
- iqm.qiskit_iqm.iqm_naive_move_pass.transpile_to_IQM(circuit: QuantumCircuit, backend: IQMBackendBase, target: IQMTarget | None = None, initial_layout: Layout | dict | list | None = None, perform_move_routing: bool = True, optimize_single_qubits: bool = True, ignore_barriers: bool = False, remove_final_rzs: bool = True, existing_moves_handling: ExistingMoveHandlingOptions | None = None, restrict_to_qubits: list[int] | list[str] | None = None, **qiskit_transpiler_kwargs) QuantumCircuit #
Customized transpilation to IQM backends.
Works with both the Crystal and Star architectures.
Note: When transpiling a circuit with MOVE gates, you might need to set the optimization_level lower. If the optimization_level is set too high, the transpiler might add single qubit gates onto the resonator, which is not supported by the IQM Star architectures. If this in undesired, it is best to have the transpiler add the MOVE gates automatically, rather than manually adding them to the circuit.
- Parameters:
circuit (QuantumCircuit) – The circuit to be transpiled without MOVE gates.
backend (IQMBackendBase) – The target backend to compile to. Does not require a resonator.
target (IQMTarget | None) – An alternative target to compile to than the backend, using this option requires intimate knowledge of the transpiler and thus it is not recommended to use.
initial_layout (Layout | dict | list | None) – The initial layout to use for the transpilation, same as
transpile()
.perform_move_routing (bool) – Whether to perform MOVE gate routing.
optimize_single_qubits (bool) – Whether to optimize single qubit gates away.
ignore_barriers (bool) – Whether to ignore barriers when optimizing single qubit gates away.
remove_final_rzs (bool) – Whether to remove the final z rotations. It is recommended always to set this to true as the final RZ gates do no change the measurement outcomes of the circuit.
existing_moves_handling (ExistingMoveHandlingOptions | None) – How to handle existing MOVE gates in the circuit, required if the circuit contains MOVE gates.
restrict_to_qubits (list[int] | list[str] | None) – Restrict the transpilation to only use these specific physical qubits. Note that you will have to pass this information to the
backend.run
method as well as a dictionary.qiskit_transpiler_kwargs – Arguments to be passed to the Qiskit transpiler.
- Returns:
Transpiled circuit ready for running on the backend.
- Return type: