---
title: PassManagerConfig (latest version)
description: API reference for qiskit.transpiler.PassManagerConfig in the latest version of qiskit
source: https://quantum.cloud.ibm.com/docs/en/api/qiskit/qiskit.transpiler.PassManagerConfig
---

# PassManagerConfig

*class* `qiskit.transpiler.PassManagerConfig(initial_layout=None, basis_gates=None, coupling_map=None, layout_method=None, routing_method=None, translation_method=None, scheduling_method=None, instruction_durations=None, approximation_degree=None, seed_transpiler=None, timing_constraints=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, target=None, hls_config=None, init_method=None, optimization_method=None, qubits_initially_zero=True)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.5/qiskit/transpiler/passmanager_config.py#L26-L167)

Bases: [`object`](https://docs.python.org/3/library/functions.html#object)

Pass Manager Configuration.

Initialize a PassManagerConfig object

**Parameters**

- **initial\_layout** ([*Layout*](/docs/api/qiskit/qiskit.transpiler.Layout "qiskit.transpiler.Layout") *| None*) – Initial position of virtual qubits on physical qubits.
- **basis\_gates** ([*list*](https://docs.python.org/3/library/stdtypes.html#list)*\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str)*] | None*) – List of basis gate names to unroll to.
- **coupling\_map** ([*CouplingMap*](/docs/api/qiskit/qiskit.transpiler.CouplingMap "qiskit.transpiler.CouplingMap") *| None*) – Directed graph representing a coupling map.
- **layout\_method** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – the pass to use for choosing initial qubit placement. This will be the plugin name if an external layout stage plugin is being used.
- **routing\_method** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – the pass to use for routing qubits on the architecture. This will be a plugin name if an external routing stage plugin is being used.
- **translation\_method** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – the pass to use for translating gates to basis\_gates. This will be a plugin name if an external translation stage plugin is being used.
- **scheduling\_method** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – the pass to use for scheduling instructions. This will be a plugin name if an external scheduling stage plugin is being used.
- **instruction\_durations** ([*InstructionDurations*](/docs/api/qiskit/qiskit.transpiler.InstructionDurations "qiskit.transpiler.InstructionDurations") *| None*) – Dictionary of duration (in dt) for each instruction.
- **approximation\_degree** ([*float*](https://docs.python.org/3/library/functions.html#float) *| None*) – Heuristic dial used for circuit approximation, where `1.0` means no approximation (up to numerical tolerance) and `0.0` means the maximum approximation. If `target` is available, a value of `None` indicates that approximation is allowed up to the reported error rate for an operation in the target.
- **seed\_transpiler** ([*int*](https://docs.python.org/3/library/functions.html#int) *| None*) – Sets random seed for the stochastic parts of the transpiler.
- **timing\_constraints** (*TimingConstraints | None*) – Hardware time alignment restrictions.
- **unitary\_synthesis\_method** ([*str*](https://docs.python.org/3/library/stdtypes.html#str)) – The string method to use for the [`UnitarySynthesis`](/docs/api/qiskit/qiskit.transpiler.passes.UnitarySynthesis "qiskit.transpiler.passes.UnitarySynthesis") pass. Will search installed plugins for a valid method. You can see a list of installed plugins with [`unitary_synthesis_plugin_names()`](/docs/api/qiskit/qiskit.transpiler.passes.synthesis.plugin.unitary_synthesis_plugin_names "qiskit.transpiler.passes.synthesis.plugin.unitary_synthesis_plugin_names").
- **unitary\_synthesis\_plugin\_config** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict) *| None*) – The configuration dictionary that will be passed to the specified unitary synthesis plugin. Refer to the plugin documentation for how to use this.
- **target** ([*Target*](/docs/api/qiskit/qiskit.transpiler.Target "qiskit.transpiler.Target") *| None*) – The backend target
- **hls\_config** ([*HLSConfig*](/docs/api/qiskit/qiskit.transpiler.passes.HLSConfig "qiskit.transpiler.passes.HLSConfig") *| None*) – An optional configuration class to use for [`HighLevelSynthesis`](/docs/api/qiskit/qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis") pass. Specifies how to synthesize various high-level objects.
- **init\_method** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – The plugin name for the init stage plugin to use
- **optimization\_method** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – The plugin name for the optimization stage plugin to use.
- **qubits\_initially\_zero** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) – Indicates whether the input circuit is zero-initialized.

## Methods

### from\_backend

*classmethod* `from_backend(backend, _skip_target=False, **pass_manager_options)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.5/qiskit/transpiler/passmanager_config.py#L115-L145)

Construct a configuration based on a backend and user input.

This method automatically generates a PassManagerConfig object based on the backend’s features. User options can be used to overwrite the configuration.

**Parameters**

- **backend** ([*BackendV2*](/docs/api/qiskit/qiskit.providers.BackendV2 "qiskit.providers.BackendV2")) – The backend that provides the configuration.
- **pass\_manager\_options** – User-defined option-value pairs.

**Returns**

The configuration generated based on the arguments.

**Return type**

[PassManagerConfig](#qiskit.transpiler.PassManagerConfig "qiskit.transpiler.PassManagerConfig")

**Raises**

[**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError) – If the backend does not support a configuration() method.
