|
60 | 60 | import warnings
|
61 | 61 |
|
62 | 62 | from qiskit.transpiler.passmanager_config import PassManagerConfig
|
63 |
| -from qiskit.transpiler.target import target_to_backend_properties |
| 63 | +from qiskit.transpiler.target import target_to_backend_properties, Target |
| 64 | +from qiskit.providers.backend import Backend |
64 | 65 | from qiskit.transpiler import CouplingMap
|
65 | 66 |
|
66 | 67 | from .level0 import level_0_pass_manager
|
|
70 | 71 |
|
71 | 72 |
|
72 | 73 | def generate_preset_pass_manager(
|
73 |
| - optimization_level, |
| 74 | + optimization_level=2, |
74 | 75 | backend=None,
|
75 | 76 | target=None,
|
76 | 77 | basis_gates=None,
|
@@ -104,9 +105,10 @@ def generate_preset_pass_manager(
|
104 | 105 |
|
105 | 106 | Args:
|
106 | 107 | optimization_level (int): The optimization level to generate a
|
107 |
| - :class:`~.PassManager` for. This can be 0, 1, 2, or 3. Higher |
108 |
| - levels generate more optimized circuits, at the expense of |
109 |
| - longer transpilation time: |
| 108 | + :class:`~.StagedPassManager` for. By default optimization level 2 |
| 109 | + is used if this is not specified. This can be 0, 1, 2, or 3. Higher |
| 110 | + levels generate potentially more optimized circuits, at the expense |
| 111 | + of longer transpilation time: |
110 | 112 |
|
111 | 113 | * 0: no optimization
|
112 | 114 | * 1: light optimization
|
@@ -205,6 +207,16 @@ def generate_preset_pass_manager(
|
205 | 207 | ValueError: if an invalid value for ``optimization_level`` is passed in.
|
206 | 208 | """
|
207 | 209 |
|
| 210 | + # Handle positional arguments for target and backend. This enables the usage |
| 211 | + # pattern `generate_preset_pass_manager(backend.target)` to generate a default |
| 212 | + # pass manager for a given target. |
| 213 | + if isinstance(optimization_level, Target): |
| 214 | + target = optimization_level |
| 215 | + optimization_level = 2 |
| 216 | + elif isinstance(optimization_level, Backend): |
| 217 | + backend = optimization_level |
| 218 | + optimization_level = 2 |
| 219 | + |
208 | 220 | if coupling_map is not None and not isinstance(coupling_map, CouplingMap):
|
209 | 221 | coupling_map = CouplingMap(coupling_map)
|
210 | 222 |
|
|
0 commit comments