qiskit 1.4.0__cp39-abi3-macosx_11_0_arm64.whl → 2.0.0rc1__cp39-abi3-macosx_11_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +2 -5
  3. qiskit/_accelerate.abi3.so +0 -0
  4. qiskit/circuit/__init__.py +24 -5
  5. qiskit/circuit/{add_control.py → _add_control.py} +32 -12
  6. qiskit/circuit/_classical_resource_map.py +5 -3
  7. qiskit/circuit/barrier.py +3 -7
  8. qiskit/circuit/classical/expr/__init__.py +31 -3
  9. qiskit/circuit/classical/expr/constructors.py +248 -28
  10. qiskit/circuit/classical/expr/expr.py +104 -3
  11. qiskit/circuit/classical/expr/visitors.py +75 -0
  12. qiskit/circuit/classical/types/__init__.py +12 -8
  13. qiskit/circuit/classical/types/ordering.py +14 -7
  14. qiskit/circuit/classical/types/types.py +36 -0
  15. qiskit/circuit/commutation_checker.py +34 -7
  16. qiskit/circuit/controlflow/__init__.py +32 -1
  17. qiskit/circuit/controlflow/_builder_utils.py +9 -5
  18. qiskit/circuit/controlflow/box.py +163 -0
  19. qiskit/circuit/controlflow/break_loop.py +1 -1
  20. qiskit/circuit/controlflow/builder.py +139 -39
  21. qiskit/circuit/controlflow/continue_loop.py +1 -3
  22. qiskit/circuit/controlflow/control_flow.py +10 -0
  23. qiskit/circuit/controlflow/for_loop.py +2 -1
  24. qiskit/circuit/controlflow/if_else.py +3 -16
  25. qiskit/circuit/controlflow/switch_case.py +2 -8
  26. qiskit/circuit/controlflow/while_loop.py +2 -7
  27. qiskit/circuit/controlledgate.py +2 -4
  28. qiskit/circuit/delay.py +40 -11
  29. qiskit/circuit/duration.py +0 -15
  30. qiskit/circuit/gate.py +2 -4
  31. qiskit/circuit/instruction.py +7 -140
  32. qiskit/circuit/instructionset.py +7 -54
  33. qiskit/circuit/library/__init__.py +34 -5
  34. qiskit/circuit/library/arithmetic/__init__.py +16 -10
  35. qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  36. qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +2 -2
  37. qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +1 -1
  38. qiskit/circuit/library/arithmetic/exact_reciprocal.py +64 -21
  39. qiskit/circuit/library/arithmetic/integer_comparator.py +37 -80
  40. qiskit/circuit/library/arithmetic/linear_amplitude_function.py +169 -2
  41. qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +59 -5
  42. qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +154 -6
  43. qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py +114 -4
  44. qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py +191 -15
  45. qiskit/circuit/library/arithmetic/polynomial_pauli_rotations.py +93 -39
  46. qiskit/circuit/library/arithmetic/quadratic_form.py +168 -2
  47. qiskit/circuit/library/arithmetic/weighted_adder.py +73 -1
  48. qiskit/circuit/library/bit_flip_oracle.py +130 -0
  49. qiskit/circuit/library/blueprintcircuit.py +52 -16
  50. qiskit/circuit/library/data_preparation/initializer.py +1 -1
  51. qiskit/circuit/library/data_preparation/pauli_feature_map.py +4 -4
  52. qiskit/circuit/library/data_preparation/state_preparation.py +1 -1
  53. qiskit/circuit/library/generalized_gates/gms.py +1 -1
  54. qiskit/circuit/library/generalized_gates/isometry.py +1 -1
  55. qiskit/circuit/library/generalized_gates/pauli.py +1 -2
  56. qiskit/circuit/library/generalized_gates/uc.py +97 -7
  57. qiskit/circuit/library/generalized_gates/uc_pauli_rot.py +1 -1
  58. qiskit/circuit/library/generalized_gates/unitary.py +4 -2
  59. qiskit/circuit/library/hamiltonian_gate.py +1 -1
  60. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
  61. qiskit/circuit/library/n_local/n_local.py +1 -1
  62. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -1
  63. qiskit/circuit/library/overlap.py +2 -2
  64. qiskit/circuit/library/pauli_evolution.py +39 -24
  65. qiskit/circuit/library/phase_oracle.py +130 -51
  66. qiskit/circuit/library/standard_gates/__init__.py +0 -1
  67. qiskit/circuit/library/standard_gates/dcx.py +3 -4
  68. qiskit/circuit/library/standard_gates/ecr.py +3 -4
  69. qiskit/circuit/library/standard_gates/global_phase.py +5 -6
  70. qiskit/circuit/library/standard_gates/h.py +4 -9
  71. qiskit/circuit/library/standard_gates/i.py +2 -2
  72. qiskit/circuit/library/standard_gates/iswap.py +3 -4
  73. qiskit/circuit/library/standard_gates/p.py +15 -34
  74. qiskit/circuit/library/standard_gates/r.py +2 -6
  75. qiskit/circuit/library/standard_gates/rx.py +5 -15
  76. qiskit/circuit/library/standard_gates/rxx.py +3 -6
  77. qiskit/circuit/library/standard_gates/ry.py +5 -17
  78. qiskit/circuit/library/standard_gates/ryy.py +3 -6
  79. qiskit/circuit/library/standard_gates/rz.py +5 -17
  80. qiskit/circuit/library/standard_gates/rzx.py +3 -6
  81. qiskit/circuit/library/standard_gates/rzz.py +3 -6
  82. qiskit/circuit/library/standard_gates/s.py +6 -15
  83. qiskit/circuit/library/standard_gates/swap.py +4 -11
  84. qiskit/circuit/library/standard_gates/sx.py +7 -12
  85. qiskit/circuit/library/standard_gates/t.py +6 -7
  86. qiskit/circuit/library/standard_gates/u.py +2 -10
  87. qiskit/circuit/library/standard_gates/u1.py +5 -16
  88. qiskit/circuit/library/standard_gates/u2.py +2 -6
  89. qiskit/circuit/library/standard_gates/u3.py +3 -11
  90. qiskit/circuit/library/standard_gates/x.py +13 -60
  91. qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -5
  92. qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -5
  93. qiskit/circuit/library/standard_gates/y.py +4 -9
  94. qiskit/circuit/library/standard_gates/z.py +5 -15
  95. qiskit/circuit/measure.py +11 -2
  96. qiskit/circuit/parameterexpression.py +4 -0
  97. qiskit/circuit/quantumcircuit.py +881 -555
  98. qiskit/circuit/random/utils.py +12 -6
  99. qiskit/circuit/reset.py +5 -2
  100. qiskit/circuit/singleton.py +5 -11
  101. qiskit/circuit/store.py +0 -8
  102. qiskit/compiler/__init__.py +1 -7
  103. qiskit/compiler/transpiler.py +38 -196
  104. qiskit/converters/circuit_to_dag.py +4 -2
  105. qiskit/converters/circuit_to_dagdependency.py +0 -2
  106. qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
  107. qiskit/converters/circuit_to_gate.py +1 -1
  108. qiskit/converters/circuit_to_instruction.py +16 -29
  109. qiskit/converters/dag_to_circuit.py +5 -5
  110. qiskit/converters/dag_to_dagdependency.py +0 -1
  111. qiskit/converters/dag_to_dagdependency_v2.py +0 -1
  112. qiskit/converters/dagdependency_to_circuit.py +0 -6
  113. qiskit/converters/dagdependency_to_dag.py +0 -6
  114. qiskit/dagcircuit/collect_blocks.py +32 -20
  115. qiskit/dagcircuit/dagdependency.py +3 -37
  116. qiskit/dagcircuit/dagdependency_v2.py +2 -80
  117. qiskit/dagcircuit/dagnode.py +14 -2
  118. qiskit/passmanager/__init__.py +24 -6
  119. qiskit/passmanager/passmanager.py +26 -24
  120. qiskit/primitives/__init__.py +44 -35
  121. qiskit/primitives/backend_estimator_v2.py +102 -23
  122. qiskit/primitives/backend_sampler_v2.py +5 -20
  123. qiskit/primitives/base/__init__.py +4 -4
  124. qiskit/primitives/base/base_estimator.py +77 -82
  125. qiskit/primitives/base/base_primitive_job.py +2 -2
  126. qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
  127. qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
  128. qiskit/primitives/base/base_sampler.py +52 -60
  129. qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
  130. qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
  131. qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
  132. qiskit/primitives/containers/bindings_array.py +3 -1
  133. qiskit/primitives/containers/bit_array.py +23 -0
  134. qiskit/primitives/containers/data_bin.py +3 -1
  135. qiskit/primitives/containers/observables_array.py +19 -2
  136. qiskit/primitives/statevector_sampler.py +6 -8
  137. qiskit/primitives/utils.py +14 -189
  138. qiskit/providers/__init__.py +4 -130
  139. qiskit/providers/backend.py +11 -314
  140. qiskit/providers/basic_provider/__init__.py +3 -1
  141. qiskit/providers/basic_provider/basic_provider.py +29 -9
  142. qiskit/providers/basic_provider/basic_simulator.py +158 -298
  143. qiskit/providers/exceptions.py +0 -33
  144. qiskit/providers/fake_provider/__init__.py +0 -37
  145. qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
  146. qiskit/qasm2/__init__.py +21 -6
  147. qiskit/qasm2/export.py +2 -10
  148. qiskit/qasm2/parse.py +11 -25
  149. qiskit/qasm3/__init__.py +5 -1
  150. qiskit/qasm3/ast.py +44 -0
  151. qiskit/qasm3/exporter.py +65 -27
  152. qiskit/qasm3/printer.py +35 -4
  153. qiskit/qpy/__init__.py +141 -19
  154. qiskit/qpy/binary_io/__init__.py +0 -1
  155. qiskit/qpy/binary_io/circuits.py +91 -116
  156. qiskit/qpy/binary_io/schedules.py +61 -388
  157. qiskit/qpy/binary_io/value.py +168 -28
  158. qiskit/qpy/common.py +10 -7
  159. qiskit/qpy/formats.py +41 -0
  160. qiskit/qpy/interface.py +29 -62
  161. qiskit/qpy/type_keys.py +58 -221
  162. qiskit/quantum_info/analysis/distance.py +3 -1
  163. qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
  164. qiskit/quantum_info/operators/operator.py +6 -2
  165. qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
  166. qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
  167. qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
  168. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
  169. qiskit/quantum_info/states/densitymatrix.py +16 -6
  170. qiskit/quantum_info/states/stabilizerstate.py +35 -4
  171. qiskit/quantum_info/states/statevector.py +16 -6
  172. qiskit/result/__init__.py +5 -17
  173. qiskit/result/models.py +18 -10
  174. qiskit/result/result.py +28 -126
  175. qiskit/result/sampled_expval.py +1 -2
  176. qiskit/result/utils.py +3 -4
  177. qiskit/synthesis/__init__.py +21 -1
  178. qiskit/synthesis/arithmetic/__init__.py +3 -1
  179. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  180. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
  181. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
  182. qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
  183. qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
  184. qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
  185. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
  186. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
  187. qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
  188. qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
  189. qiskit/synthesis/boolean/boolean_expression.py +231 -0
  190. qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
  191. qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
  192. qiskit/synthesis/discrete_basis/generate_basis_approximations.py +2 -0
  193. qiskit/synthesis/evolution/lie_trotter.py +10 -7
  194. qiskit/synthesis/evolution/product_formula.py +44 -35
  195. qiskit/synthesis/evolution/qdrift.py +17 -24
  196. qiskit/synthesis/evolution/suzuki_trotter.py +20 -27
  197. qiskit/synthesis/linear/linear_depth_lnn.py +6 -221
  198. qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +4 -205
  199. qiskit/synthesis/multi_controlled/__init__.py +1 -0
  200. qiskit/synthesis/multi_controlled/mcx_synthesis.py +5 -2
  201. qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +206 -0
  202. qiskit/synthesis/one_qubit/one_qubit_decompose.py +1 -1
  203. qiskit/synthesis/two_qubit/__init__.py +1 -0
  204. qiskit/synthesis/two_qubit/two_qubit_decompose.py +28 -145
  205. qiskit/transpiler/__init__.py +32 -232
  206. qiskit/transpiler/basepasses.py +20 -51
  207. qiskit/transpiler/layout.py +1 -1
  208. qiskit/transpiler/passes/__init__.py +2 -40
  209. qiskit/transpiler/passes/basis/basis_translator.py +4 -3
  210. qiskit/transpiler/passes/basis/decompose.py +1 -15
  211. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -5
  212. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +3 -2
  213. qiskit/transpiler/passes/layout/apply_layout.py +5 -0
  214. qiskit/transpiler/passes/layout/dense_layout.py +2 -39
  215. qiskit/transpiler/passes/layout/full_ancilla_allocation.py +4 -4
  216. qiskit/transpiler/passes/layout/sabre_layout.py +7 -3
  217. qiskit/transpiler/passes/layout/vf2_layout.py +2 -20
  218. qiskit/transpiler/passes/layout/vf2_post_layout.py +60 -125
  219. qiskit/transpiler/passes/layout/vf2_utils.py +2 -26
  220. qiskit/transpiler/passes/optimization/__init__.py +1 -3
  221. qiskit/transpiler/passes/optimization/collect_and_collapse.py +2 -0
  222. qiskit/transpiler/passes/optimization/collect_cliffords.py +5 -0
  223. qiskit/transpiler/passes/optimization/collect_linear_functions.py +5 -0
  224. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +16 -1
  225. qiskit/transpiler/passes/optimization/commutation_analysis.py +3 -3
  226. qiskit/transpiler/passes/optimization/consolidate_blocks.py +41 -19
  227. qiskit/transpiler/passes/optimization/contract_idle_wires_in_control_flow.py +104 -0
  228. qiskit/transpiler/passes/optimization/light_cone.py +135 -0
  229. qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +0 -1
  230. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +18 -22
  231. qiskit/transpiler/passes/optimization/optimize_annotated.py +3 -2
  232. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +6 -4
  233. qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +5 -2
  234. qiskit/transpiler/passes/optimization/split_2q_unitaries.py +26 -3
  235. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +1 -0
  236. qiskit/transpiler/passes/routing/__init__.py +0 -1
  237. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -1
  238. qiskit/transpiler/passes/routing/sabre_swap.py +14 -6
  239. qiskit/transpiler/passes/routing/star_prerouting.py +1 -1
  240. qiskit/transpiler/passes/scheduling/__init__.py +1 -7
  241. qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -4
  242. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -9
  243. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +17 -16
  244. qiskit/transpiler/passes/scheduling/padding/base_padding.py +30 -2
  245. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +20 -58
  246. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +11 -3
  247. qiskit/transpiler/passes/scheduling/scheduling/alap.py +5 -39
  248. qiskit/transpiler/passes/scheduling/scheduling/asap.py +4 -35
  249. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +10 -16
  250. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +127 -59
  251. qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py +653 -0
  252. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +176 -601
  253. qiskit/transpiler/passes/synthesis/hls_plugins.py +294 -1
  254. qiskit/transpiler/passes/synthesis/plugin.py +4 -0
  255. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +16 -10
  256. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -697
  257. qiskit/transpiler/passes/utils/__init__.py +0 -1
  258. qiskit/transpiler/passes/utils/check_gate_direction.py +13 -5
  259. qiskit/transpiler/passes/utils/control_flow.py +2 -6
  260. qiskit/transpiler/passes/utils/gate_direction.py +7 -0
  261. qiskit/transpiler/passes/utils/remove_final_measurements.py +40 -33
  262. qiskit/transpiler/passmanager.py +13 -0
  263. qiskit/transpiler/passmanager_config.py +5 -81
  264. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +225 -344
  265. qiskit/transpiler/preset_passmanagers/common.py +140 -167
  266. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +101 -322
  267. qiskit/transpiler/preset_passmanagers/level0.py +2 -11
  268. qiskit/transpiler/preset_passmanagers/level1.py +2 -14
  269. qiskit/transpiler/preset_passmanagers/level2.py +2 -12
  270. qiskit/transpiler/preset_passmanagers/level3.py +2 -11
  271. qiskit/transpiler/preset_passmanagers/plugin.py +5 -3
  272. qiskit/transpiler/target.py +67 -524
  273. qiskit/user_config.py +8 -4
  274. qiskit/utils/__init__.py +13 -12
  275. qiskit/utils/deprecation.py +4 -112
  276. qiskit/utils/optionals.py +11 -4
  277. qiskit/utils/parallel.py +214 -87
  278. qiskit/utils/units.py +4 -1
  279. qiskit/visualization/__init__.py +3 -7
  280. qiskit/visualization/array.py +4 -1
  281. qiskit/visualization/bloch.py +1 -1
  282. qiskit/visualization/circuit/_utils.py +19 -19
  283. qiskit/visualization/circuit/circuit_visualization.py +11 -4
  284. qiskit/visualization/circuit/matplotlib.py +13 -23
  285. qiskit/visualization/circuit/text.py +7 -3
  286. qiskit/visualization/dag_visualization.py +2 -1
  287. qiskit/visualization/gate_map.py +39 -154
  288. qiskit/visualization/pass_manager_visualization.py +6 -2
  289. qiskit/visualization/state_visualization.py +6 -0
  290. qiskit/visualization/timeline/core.py +27 -12
  291. qiskit/visualization/timeline/interface.py +23 -18
  292. {qiskit-1.4.0.dist-info → qiskit-2.0.0rc1.dist-info}/METADATA +2 -2
  293. {qiskit-1.4.0.dist-info → qiskit-2.0.0rc1.dist-info}/RECORD +297 -444
  294. {qiskit-1.4.0.dist-info → qiskit-2.0.0rc1.dist-info}/WHEEL +2 -1
  295. {qiskit-1.4.0.dist-info → qiskit-2.0.0rc1.dist-info}/entry_points.txt +8 -2
  296. qiskit/assembler/__init__.py +0 -42
  297. qiskit/assembler/assemble_circuits.py +0 -451
  298. qiskit/assembler/assemble_schedules.py +0 -367
  299. qiskit/assembler/disassemble.py +0 -310
  300. qiskit/assembler/run_config.py +0 -77
  301. qiskit/circuit/bit.py +0 -106
  302. qiskit/circuit/classicalfunction/__init__.py +0 -152
  303. qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
  304. qiskit/circuit/classicalfunction/classical_element.py +0 -54
  305. qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
  306. qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
  307. qiskit/circuit/classicalfunction/exceptions.py +0 -41
  308. qiskit/circuit/classicalfunction/types.py +0 -18
  309. qiskit/circuit/classicalfunction/utils.py +0 -91
  310. qiskit/circuit/classicalregister.py +0 -57
  311. qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
  312. qiskit/circuit/quantumregister.py +0 -75
  313. qiskit/circuit/register.py +0 -246
  314. qiskit/compiler/assembler.py +0 -689
  315. qiskit/compiler/scheduler.py +0 -109
  316. qiskit/compiler/sequencer.py +0 -71
  317. qiskit/primitives/backend_estimator.py +0 -486
  318. qiskit/primitives/backend_sampler.py +0 -222
  319. qiskit/primitives/estimator.py +0 -172
  320. qiskit/primitives/sampler.py +0 -162
  321. qiskit/providers/backend_compat.py +0 -507
  322. qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
  323. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
  324. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
  325. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
  326. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
  327. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
  328. qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
  329. qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
  330. qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
  331. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
  332. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
  333. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
  334. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
  335. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
  336. qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
  337. qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
  338. qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
  339. qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
  340. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
  341. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
  342. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
  343. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
  344. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
  345. qiskit/providers/fake_provider/fake_1q.py +0 -91
  346. qiskit/providers/fake_provider/fake_backend.py +0 -165
  347. qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
  348. qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
  349. qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
  350. qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
  351. qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
  352. qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
  353. qiskit/providers/models/__init__.py +0 -89
  354. qiskit/providers/models/backendconfiguration.py +0 -1040
  355. qiskit/providers/models/backendproperties.py +0 -535
  356. qiskit/providers/models/backendstatus.py +0 -104
  357. qiskit/providers/models/jobstatus.py +0 -77
  358. qiskit/providers/models/pulsedefaults.py +0 -305
  359. qiskit/providers/provider.py +0 -95
  360. qiskit/pulse/__init__.py +0 -158
  361. qiskit/pulse/builder.py +0 -2262
  362. qiskit/pulse/calibration_entries.py +0 -381
  363. qiskit/pulse/channels.py +0 -227
  364. qiskit/pulse/configuration.py +0 -245
  365. qiskit/pulse/exceptions.py +0 -45
  366. qiskit/pulse/filters.py +0 -309
  367. qiskit/pulse/instruction_schedule_map.py +0 -424
  368. qiskit/pulse/instructions/__init__.py +0 -67
  369. qiskit/pulse/instructions/acquire.py +0 -150
  370. qiskit/pulse/instructions/delay.py +0 -71
  371. qiskit/pulse/instructions/directives.py +0 -154
  372. qiskit/pulse/instructions/frequency.py +0 -135
  373. qiskit/pulse/instructions/instruction.py +0 -270
  374. qiskit/pulse/instructions/phase.py +0 -152
  375. qiskit/pulse/instructions/play.py +0 -99
  376. qiskit/pulse/instructions/reference.py +0 -100
  377. qiskit/pulse/instructions/snapshot.py +0 -82
  378. qiskit/pulse/library/__init__.py +0 -97
  379. qiskit/pulse/library/continuous.py +0 -430
  380. qiskit/pulse/library/pulse.py +0 -148
  381. qiskit/pulse/library/samplers/__init__.py +0 -15
  382. qiskit/pulse/library/samplers/decorators.py +0 -295
  383. qiskit/pulse/library/samplers/strategies.py +0 -71
  384. qiskit/pulse/library/symbolic_pulses.py +0 -1989
  385. qiskit/pulse/library/waveform.py +0 -136
  386. qiskit/pulse/macros.py +0 -262
  387. qiskit/pulse/parameter_manager.py +0 -445
  388. qiskit/pulse/parser.py +0 -314
  389. qiskit/pulse/reference_manager.py +0 -58
  390. qiskit/pulse/schedule.py +0 -1854
  391. qiskit/pulse/transforms/__init__.py +0 -106
  392. qiskit/pulse/transforms/alignments.py +0 -406
  393. qiskit/pulse/transforms/base_transforms.py +0 -71
  394. qiskit/pulse/transforms/canonicalization.py +0 -498
  395. qiskit/pulse/transforms/dag.py +0 -122
  396. qiskit/pulse/utils.py +0 -149
  397. qiskit/qobj/__init__.py +0 -75
  398. qiskit/qobj/common.py +0 -81
  399. qiskit/qobj/converters/__init__.py +0 -18
  400. qiskit/qobj/converters/lo_config.py +0 -177
  401. qiskit/qobj/converters/pulse_instruction.py +0 -897
  402. qiskit/qobj/pulse_qobj.py +0 -709
  403. qiskit/qobj/qasm_qobj.py +0 -708
  404. qiskit/qobj/utils.py +0 -46
  405. qiskit/result/mitigation/base_readout_mitigator.py +0 -79
  406. qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
  407. qiskit/result/mitigation/local_readout_mitigator.py +0 -328
  408. qiskit/result/mitigation/utils.py +0 -217
  409. qiskit/scheduler/__init__.py +0 -40
  410. qiskit/scheduler/config.py +0 -37
  411. qiskit/scheduler/lowering.py +0 -187
  412. qiskit/scheduler/methods/__init__.py +0 -15
  413. qiskit/scheduler/methods/basic.py +0 -140
  414. qiskit/scheduler/schedule_circuit.py +0 -69
  415. qiskit/scheduler/sequence.py +0 -104
  416. qiskit/transpiler/passes/calibration/__init__.py +0 -17
  417. qiskit/transpiler/passes/calibration/base_builder.py +0 -79
  418. qiskit/transpiler/passes/calibration/builders.py +0 -20
  419. qiskit/transpiler/passes/calibration/exceptions.py +0 -22
  420. qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
  421. qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
  422. qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
  423. qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
  424. qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
  425. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
  426. qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
  427. qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
  428. qiskit/transpiler/passes/scheduling/alap.py +0 -153
  429. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
  430. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
  431. qiskit/transpiler/passes/scheduling/asap.py +0 -175
  432. qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
  433. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
  434. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
  435. qiskit/utils/deprecate_pulse.py +0 -119
  436. qiskit/utils/multiprocessing.py +0 -56
  437. qiskit/visualization/pulse_v2/__init__.py +0 -21
  438. qiskit/visualization/pulse_v2/core.py +0 -901
  439. qiskit/visualization/pulse_v2/device_info.py +0 -173
  440. qiskit/visualization/pulse_v2/drawings.py +0 -253
  441. qiskit/visualization/pulse_v2/events.py +0 -254
  442. qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
  443. qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
  444. qiskit/visualization/pulse_v2/generators/chart.py +0 -208
  445. qiskit/visualization/pulse_v2/generators/frame.py +0 -436
  446. qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
  447. qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
  448. qiskit/visualization/pulse_v2/interface.py +0 -459
  449. qiskit/visualization/pulse_v2/layouts.py +0 -387
  450. qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
  451. qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
  452. qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
  453. qiskit/visualization/pulse_v2/stylesheet.py +0 -312
  454. qiskit/visualization/pulse_v2/types.py +0 -242
  455. {qiskit-1.4.0.dist-info → qiskit-2.0.0rc1.dist-info}/LICENSE.txt +0 -0
  456. {qiskit-1.4.0.dist-info → qiskit-2.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -13,14 +13,12 @@
13
13
  """Built-in transpiler stage plugins for preset pass managers."""
14
14
 
15
15
  import os
16
- import warnings
17
16
 
18
17
  from qiskit.transpiler.passes.optimization.split_2q_unitaries import Split2QUnitaries
19
18
  from qiskit.transpiler.passmanager import PassManager
20
19
  from qiskit.transpiler.exceptions import TranspilerError
21
20
  from qiskit.transpiler.passes import BasicSwap
22
21
  from qiskit.transpiler.passes import LookaheadSwap
23
- from qiskit.transpiler.passes import StochasticSwap
24
22
  from qiskit.transpiler.passes import SabreSwap
25
23
  from qiskit.transpiler.passes import Error
26
24
  from qiskit.transpiler.passes import SetLayout
@@ -43,6 +41,7 @@ from qiskit.transpiler.passes.optimization import (
43
41
  ConsolidateBlocks,
44
42
  InverseCancellation,
45
43
  RemoveIdentityEquivalent,
44
+ ContractIdleWiresInControlFlow,
46
45
  )
47
46
  from qiskit.transpiler.passes import Depth, Size, FixedPoint, MinimumPoint
48
47
  from qiskit.transpiler.passes.utils.gates_basis import GatesInBasis
@@ -67,7 +66,7 @@ from qiskit.circuit.library.standard_gates import (
67
66
  SXGate,
68
67
  SXdgGate,
69
68
  )
70
- from qiskit.utils.parallel import CPU_COUNT
69
+ from qiskit.utils import default_num_processes
71
70
  from qiskit import user_config
72
71
 
73
72
  CONFIG = user_config.get_config()
@@ -126,22 +125,25 @@ class DefaultInitPassManager(PassManagerStagePlugin):
126
125
  pass_manager_config.qubits_initially_zero,
127
126
  )
128
127
  init.append(
129
- InverseCancellation(
130
- [
131
- CXGate(),
132
- ECRGate(),
133
- CZGate(),
134
- CYGate(),
135
- XGate(),
136
- YGate(),
137
- ZGate(),
138
- HGate(),
139
- SwapGate(),
140
- (TGate(), TdgGate()),
141
- (SGate(), SdgGate()),
142
- (SXGate(), SXdgGate()),
143
- ]
144
- )
128
+ [
129
+ InverseCancellation(
130
+ [
131
+ CXGate(),
132
+ ECRGate(),
133
+ CZGate(),
134
+ CYGate(),
135
+ XGate(),
136
+ YGate(),
137
+ ZGate(),
138
+ HGate(),
139
+ SwapGate(),
140
+ (TGate(), TdgGate()),
141
+ (SGate(), SdgGate()),
142
+ (SXGate(), SXdgGate()),
143
+ ]
144
+ ),
145
+ ContractIdleWiresInControlFlow(),
146
+ ]
145
147
  )
146
148
 
147
149
  elif optimization_level in {2, 3}:
@@ -156,31 +158,32 @@ class DefaultInitPassManager(PassManagerStagePlugin):
156
158
  )
157
159
  if pass_manager_config.routing_method != "none":
158
160
  init.append(ElidePermutations())
159
- init.append(RemoveDiagonalGatesBeforeMeasure())
160
- # Target not set on RemoveIdentityEquivalent because we haven't applied a Layout
161
- # yet so doing anything relative to an error rate in the target is not valid.
162
- init.append(
163
- RemoveIdentityEquivalent(
164
- approximation_degree=pass_manager_config.approximation_degree
165
- )
166
- )
167
161
  init.append(
168
- InverseCancellation(
169
- [
170
- CXGate(),
171
- ECRGate(),
172
- CZGate(),
173
- CYGate(),
174
- XGate(),
175
- YGate(),
176
- ZGate(),
177
- HGate(),
178
- SwapGate(),
179
- (TGate(), TdgGate()),
180
- (SGate(), SdgGate()),
181
- (SXGate(), SXdgGate()),
182
- ]
183
- )
162
+ [
163
+ RemoveDiagonalGatesBeforeMeasure(),
164
+ # Target not set on RemoveIdentityEquivalent because we haven't applied a Layout
165
+ # yet so doing anything relative to an error rate in the target is not valid.
166
+ RemoveIdentityEquivalent(
167
+ approximation_degree=pass_manager_config.approximation_degree
168
+ ),
169
+ InverseCancellation(
170
+ [
171
+ CXGate(),
172
+ ECRGate(),
173
+ CZGate(),
174
+ CYGate(),
175
+ XGate(),
176
+ YGate(),
177
+ ZGate(),
178
+ HGate(),
179
+ SwapGate(),
180
+ (TGate(), TdgGate()),
181
+ (SGate(), SdgGate()),
182
+ (SXGate(), SXdgGate()),
183
+ ]
184
+ ),
185
+ ContractIdleWiresInControlFlow(),
186
+ ]
184
187
  )
185
188
  init.append(CommutativeCancellation())
186
189
  init.append(ConsolidateBlocks())
@@ -188,42 +191,52 @@ class DefaultInitPassManager(PassManagerStagePlugin):
188
191
  # error rates in the target. However, in the init stage we don't yet know the target
189
192
  # qubits being used to figure out the fidelity so just use the default fidelity parameter
190
193
  # in this case.
194
+ split_2q_unitaries_swap = False
195
+ if pass_manager_config.routing_method != "none":
196
+ split_2q_unitaries_swap = True
191
197
  if pass_manager_config.approximation_degree is not None:
192
- init.append(Split2QUnitaries(pass_manager_config.approximation_degree))
198
+ init.append(
199
+ Split2QUnitaries(
200
+ pass_manager_config.approximation_degree, split_swap=split_2q_unitaries_swap
201
+ )
202
+ )
193
203
  else:
194
- init.append(Split2QUnitaries())
204
+ init.append(Split2QUnitaries(split_swap=split_2q_unitaries_swap))
195
205
  else:
196
206
  raise TranspilerError(f"Invalid optimization level {optimization_level}")
197
207
  return init
198
208
 
199
209
 
210
+ class DefaultTranslationPassManager(PassManagerStagePlugin):
211
+ """Plugin class for the default-method translation stage."""
212
+
213
+ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassManager:
214
+ # For now, this is just a wrapper around the `BasisTranslator`. It might expand in the
215
+ # future if we want to change the default method to do more context-aware switching, or to
216
+ # start transitioning the default method without breaking the semantics of the default
217
+ # string referring to the `BasisTranslator`.
218
+ return BasisTranslatorPassManager().pass_manager(pass_manager_config, optimization_level)
219
+
220
+
200
221
  class BasisTranslatorPassManager(PassManagerStagePlugin):
201
222
  """Plugin class for translation stage with :class:`~.BasisTranslator`"""
202
223
 
203
224
  def pass_manager(self, pass_manager_config, optimization_level=None) -> PassManager:
204
- with warnings.catch_warnings():
205
- warnings.filterwarnings(
206
- "ignore",
207
- category=DeprecationWarning,
208
- message=".*argument ``backend_properties`` is deprecated as of Qiskit 1.4",
209
- module="qiskit",
210
- )
211
- return common.generate_translation_passmanager(
212
- pass_manager_config.target,
213
- basis_gates=pass_manager_config.basis_gates,
214
- method="translator",
215
- approximation_degree=pass_manager_config.approximation_degree,
216
- coupling_map=pass_manager_config.coupling_map,
217
- backend_props=pass_manager_config.backend_properties,
218
- unitary_synthesis_method=pass_manager_config.unitary_synthesis_method,
219
- unitary_synthesis_plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
220
- hls_config=pass_manager_config.hls_config,
221
- qubits_initially_zero=pass_manager_config.qubits_initially_zero,
222
- )
225
+ return common.generate_translation_passmanager(
226
+ pass_manager_config.target,
227
+ basis_gates=pass_manager_config.basis_gates,
228
+ method="translator",
229
+ approximation_degree=pass_manager_config.approximation_degree,
230
+ coupling_map=pass_manager_config.coupling_map,
231
+ unitary_synthesis_method=pass_manager_config.unitary_synthesis_method,
232
+ unitary_synthesis_plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
233
+ hls_config=pass_manager_config.hls_config,
234
+ qubits_initially_zero=pass_manager_config.qubits_initially_zero,
235
+ )
223
236
 
224
237
 
225
238
  class UnitarySynthesisPassManager(PassManagerStagePlugin):
226
- """Plugin class for translation stage with :class:`~.BasisTranslator`"""
239
+ """Plugin class for translation stage with :class:`~.UnitarySynthesis`"""
227
240
 
228
241
  def pass_manager(self, pass_manager_config, optimization_level=None) -> PassManager:
229
242
  return common.generate_translation_passmanager(
@@ -232,7 +245,6 @@ class UnitarySynthesisPassManager(PassManagerStagePlugin):
232
245
  method="synthesis",
233
246
  approximation_degree=pass_manager_config.approximation_degree,
234
247
  coupling_map=pass_manager_config.coupling_map,
235
- backend_props=pass_manager_config.backend_properties,
236
248
  unitary_synthesis_method=pass_manager_config.unitary_synthesis_method,
237
249
  unitary_synthesis_plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
238
250
  hls_config=pass_manager_config.hls_config,
@@ -240,6 +252,17 @@ class UnitarySynthesisPassManager(PassManagerStagePlugin):
240
252
  )
241
253
 
242
254
 
255
+ class DefaultRoutingPassManager(PassManagerStagePlugin):
256
+ """Plugin class for the "default" routing stage implementation."""
257
+
258
+ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassManager:
259
+ # The Sabre-based PM is the default implementation currently, but semantically the "default"
260
+ # plugin has more scope to change its logic than one called "sabre". In practice, we don't
261
+ # run the actually `SabreSwap` logic from this pass most of the time, because we do that
262
+ # during default layout; we're looking for the VF2PostLayout stuff mostly.
263
+ return SabreSwapPassManager().pass_manager(pass_manager_config, optimization_level)
264
+
265
+
243
266
  class BasicSwapPassManager(PassManagerStagePlugin):
244
267
  """Plugin class for routing stage with :class:`~.BasicSwap`"""
245
268
 
@@ -247,7 +270,6 @@ class BasicSwapPassManager(PassManagerStagePlugin):
247
270
  """Build routing stage PassManager."""
248
271
  target = pass_manager_config.target
249
272
  coupling_map = pass_manager_config.coupling_map
250
- backend_properties = pass_manager_config.backend_properties
251
273
  if target is None:
252
274
  routing_pass = BasicSwap(coupling_map)
253
275
  else:
@@ -273,7 +295,6 @@ class BasicSwapPassManager(PassManagerStagePlugin):
273
295
  coupling_map,
274
296
  vf2_call_limit=vf2_call_limit,
275
297
  vf2_max_trials=vf2_max_trials,
276
- backend_properties=backend_properties,
277
298
  seed_transpiler=-1,
278
299
  check_trivial=True,
279
300
  use_barrier_before_measurement=True,
@@ -285,7 +306,6 @@ class BasicSwapPassManager(PassManagerStagePlugin):
285
306
  coupling_map=coupling_map,
286
307
  vf2_call_limit=vf2_call_limit,
287
308
  vf2_max_trials=vf2_max_trials,
288
- backend_properties=backend_properties,
289
309
  seed_transpiler=-1,
290
310
  use_barrier_before_measurement=True,
291
311
  )
@@ -296,63 +316,6 @@ class BasicSwapPassManager(PassManagerStagePlugin):
296
316
  coupling_map=coupling_map,
297
317
  vf2_call_limit=vf2_call_limit,
298
318
  vf2_max_trials=vf2_max_trials,
299
- backend_properties=backend_properties,
300
- seed_transpiler=-1,
301
- use_barrier_before_measurement=True,
302
- )
303
- raise TranspilerError(f"Invalid optimization level specified: {optimization_level}")
304
-
305
-
306
- class StochasticSwapPassManager(PassManagerStagePlugin):
307
- """Plugin class for routing stage with :class:`~.StochasticSwap`"""
308
-
309
- def pass_manager(self, pass_manager_config, optimization_level=None) -> PassManager:
310
- """Build routing stage PassManager."""
311
- seed_transpiler = pass_manager_config.seed_transpiler
312
- target = pass_manager_config.target
313
- coupling_map = pass_manager_config.coupling_map
314
- coupling_map_routing = target
315
- if coupling_map_routing is None:
316
- coupling_map_routing = coupling_map
317
- backend_properties = pass_manager_config.backend_properties
318
- vf2_call_limit, vf2_max_trials = common.get_vf2_limits(
319
- optimization_level,
320
- pass_manager_config.layout_method,
321
- pass_manager_config.initial_layout,
322
- )
323
- if optimization_level == 3:
324
- routing_pass = StochasticSwap(coupling_map_routing, trials=200, seed=seed_transpiler)
325
- else:
326
- routing_pass = StochasticSwap(coupling_map_routing, trials=20, seed=seed_transpiler)
327
-
328
- if optimization_level == 0:
329
- return common.generate_routing_passmanager(
330
- routing_pass,
331
- target,
332
- coupling_map=coupling_map,
333
- seed_transpiler=-1,
334
- use_barrier_before_measurement=True,
335
- )
336
- if optimization_level == 1:
337
- return common.generate_routing_passmanager(
338
- routing_pass,
339
- target,
340
- coupling_map,
341
- vf2_call_limit=vf2_call_limit,
342
- vf2_max_trials=vf2_max_trials,
343
- backend_properties=backend_properties,
344
- seed_transpiler=-1,
345
- check_trivial=True,
346
- use_barrier_before_measurement=True,
347
- )
348
- if optimization_level in {2, 3}:
349
- return common.generate_routing_passmanager(
350
- routing_pass,
351
- target,
352
- coupling_map=coupling_map,
353
- vf2_call_limit=vf2_call_limit,
354
- vf2_max_trials=vf2_max_trials,
355
- backend_properties=backend_properties,
356
319
  seed_transpiler=-1,
357
320
  use_barrier_before_measurement=True,
358
321
  )
@@ -369,7 +332,6 @@ class LookaheadSwapPassManager(PassManagerStagePlugin):
369
332
  coupling_map_routing = target
370
333
  if coupling_map_routing is None:
371
334
  coupling_map_routing = coupling_map
372
- backend_properties = pass_manager_config.backend_properties
373
335
  vf2_call_limit, vf2_max_trials = common.get_vf2_limits(
374
336
  optimization_level,
375
337
  pass_manager_config.layout_method,
@@ -392,7 +354,6 @@ class LookaheadSwapPassManager(PassManagerStagePlugin):
392
354
  coupling_map,
393
355
  vf2_call_limit=vf2_call_limit,
394
356
  vf2_max_trials=vf2_max_trials,
395
- backend_properties=backend_properties,
396
357
  seed_transpiler=-1,
397
358
  check_trivial=True,
398
359
  use_barrier_before_measurement=True,
@@ -405,7 +366,6 @@ class LookaheadSwapPassManager(PassManagerStagePlugin):
405
366
  coupling_map=coupling_map,
406
367
  vf2_call_limit=vf2_call_limit,
407
368
  vf2_max_trials=vf2_max_trials,
408
- backend_properties=backend_properties,
409
369
  seed_transpiler=-1,
410
370
  use_barrier_before_measurement=True,
411
371
  )
@@ -417,7 +377,6 @@ class LookaheadSwapPassManager(PassManagerStagePlugin):
417
377
  coupling_map=coupling_map,
418
378
  vf2_call_limit=vf2_call_limit,
419
379
  vf2_max_trials=vf2_max_trials,
420
- backend_properties=backend_properties,
421
380
  seed_transpiler=-1,
422
381
  use_barrier_before_measurement=True,
423
382
  )
@@ -435,7 +394,6 @@ class SabreSwapPassManager(PassManagerStagePlugin):
435
394
  coupling_map_routing = target
436
395
  if coupling_map_routing is None:
437
396
  coupling_map_routing = coupling_map
438
- backend_properties = pass_manager_config.backend_properties
439
397
  vf2_call_limit, vf2_max_trials = common.get_vf2_limits(
440
398
  optimization_level,
441
399
  pass_manager_config.layout_method,
@@ -464,24 +422,16 @@ class SabreSwapPassManager(PassManagerStagePlugin):
464
422
  seed=seed_transpiler,
465
423
  trials=trial_count,
466
424
  )
467
- with warnings.catch_warnings():
468
- warnings.filterwarnings(
469
- "ignore",
470
- category=DeprecationWarning,
471
- message=".*argument ``backend_properties`` is deprecated as of Qiskit 1.4",
472
- module="qiskit",
473
- )
474
- return common.generate_routing_passmanager(
475
- routing_pass,
476
- target,
477
- coupling_map,
478
- vf2_call_limit=vf2_call_limit,
479
- vf2_max_trials=vf2_max_trials,
480
- backend_properties=backend_properties,
481
- seed_transpiler=-1,
482
- check_trivial=True,
483
- use_barrier_before_measurement=True,
484
- )
425
+ return common.generate_routing_passmanager(
426
+ routing_pass,
427
+ target,
428
+ coupling_map,
429
+ vf2_call_limit=vf2_call_limit,
430
+ vf2_max_trials=vf2_max_trials,
431
+ seed_transpiler=-1,
432
+ check_trivial=True,
433
+ use_barrier_before_measurement=True,
434
+ )
485
435
  if optimization_level == 2:
486
436
  trial_count = _get_trial_count(20)
487
437
 
@@ -491,23 +441,15 @@ class SabreSwapPassManager(PassManagerStagePlugin):
491
441
  seed=seed_transpiler,
492
442
  trials=trial_count,
493
443
  )
494
- with warnings.catch_warnings():
495
- warnings.filterwarnings(
496
- "ignore",
497
- category=DeprecationWarning,
498
- message=".*argument ``backend_properties`` is deprecated as of Qiskit 1.4",
499
- module="qiskit",
500
- )
501
- return common.generate_routing_passmanager(
502
- routing_pass,
503
- target,
504
- coupling_map=coupling_map,
505
- vf2_call_limit=vf2_call_limit,
506
- vf2_max_trials=vf2_max_trials,
507
- backend_properties=backend_properties,
508
- seed_transpiler=-1,
509
- use_barrier_before_measurement=True,
510
- )
444
+ return common.generate_routing_passmanager(
445
+ routing_pass,
446
+ target,
447
+ coupling_map=coupling_map,
448
+ vf2_call_limit=vf2_call_limit,
449
+ vf2_max_trials=vf2_max_trials,
450
+ seed_transpiler=-1,
451
+ use_barrier_before_measurement=True,
452
+ )
511
453
  if optimization_level == 3:
512
454
  trial_count = _get_trial_count(20)
513
455
  routing_pass = SabreSwap(
@@ -516,23 +458,15 @@ class SabreSwapPassManager(PassManagerStagePlugin):
516
458
  seed=seed_transpiler,
517
459
  trials=trial_count,
518
460
  )
519
- with warnings.catch_warnings():
520
- warnings.filterwarnings(
521
- "ignore",
522
- category=DeprecationWarning,
523
- message=".*argument ``backend_properties`` is deprecated as of Qiskit 1.4",
524
- module="qiskit",
525
- )
526
- return common.generate_routing_passmanager(
527
- routing_pass,
528
- target,
529
- coupling_map=coupling_map,
530
- vf2_call_limit=vf2_call_limit,
531
- vf2_max_trials=vf2_max_trials,
532
- backend_properties=backend_properties,
533
- seed_transpiler=-1,
534
- use_barrier_before_measurement=True,
535
- )
461
+ return common.generate_routing_passmanager(
462
+ routing_pass,
463
+ target,
464
+ coupling_map=coupling_map,
465
+ vf2_call_limit=vf2_call_limit,
466
+ vf2_max_trials=vf2_max_trials,
467
+ seed_transpiler=-1,
468
+ use_barrier_before_measurement=True,
469
+ )
536
470
  raise TranspilerError(f"Invalid optimization level specified: {optimization_level}")
537
471
 
538
472
 
@@ -563,7 +497,7 @@ class OptimizationPassManager(PassManagerStagePlugin):
563
497
  def pass_manager(self, pass_manager_config, optimization_level=None) -> PassManager:
564
498
  """Build pass manager for optimization stage."""
565
499
  # Obtain the translation method required for this pass to work
566
- translation_method = pass_manager_config.translation_method or "translator"
500
+ translation_method = pass_manager_config.translation_method or "default"
567
501
  optimization = PassManager()
568
502
  if optimization_level != 0:
569
503
  plugin_manager = PassManagerStagePluginManager()
@@ -587,8 +521,12 @@ class OptimizationPassManager(PassManagerStagePlugin):
587
521
  pass_manager_config,
588
522
  optimization_level=optimization_level,
589
523
  )
524
+
525
+ # Basic steps for optimization level 1:
526
+ # 1. Optimize1qGatesDecomposition
527
+ # 2. InverseCancellation
590
528
  if optimization_level == 1:
591
- # Steps for optimization level 1
529
+
592
530
  _opt = [
593
531
  Optimize1qGatesDecomposition(
594
532
  basis=pass_manager_config.basis_gates, target=pass_manager_config.target
@@ -609,8 +547,13 @@ class OptimizationPassManager(PassManagerStagePlugin):
609
547
  (SXGate(), SXdgGate()),
610
548
  ]
611
549
  ),
550
+ ContractIdleWiresInControlFlow(),
612
551
  ]
613
552
 
553
+ # Basic steps for optimization level 2:
554
+ # 1. RemoveIdentityEquivalent
555
+ # 2. Optimize1qGatesDecomposition
556
+ # 3. CommutativeCancellation
614
557
  elif optimization_level == 2:
615
558
  _opt = [
616
559
  RemoveIdentityEquivalent(
@@ -621,40 +564,40 @@ class OptimizationPassManager(PassManagerStagePlugin):
621
564
  basis=pass_manager_config.basis_gates, target=pass_manager_config.target
622
565
  ),
623
566
  CommutativeCancellation(target=pass_manager_config.target),
567
+ ContractIdleWiresInControlFlow(),
624
568
  ]
569
+
570
+ # Basic steps for optimization level 3:
571
+ # 1. ConsolidateBlocks
572
+ # 2. UnitarySynthesis
573
+ # 3. RemoveIdentityEquivalent
574
+ # 4. Optimize1qGatesDecomposition
575
+ # 5. CommutativeCancellation
625
576
  elif optimization_level == 3:
626
- # Steps for optimization level 3
627
- with warnings.catch_warnings():
628
- warnings.filterwarnings(
629
- "ignore",
630
- category=DeprecationWarning,
631
- message=".*argument ``backend_props`` is deprecated as of Qiskit 1.4",
632
- module="qiskit",
633
- )
634
- _opt = [
635
- ConsolidateBlocks(
636
- basis_gates=pass_manager_config.basis_gates,
637
- target=pass_manager_config.target,
638
- approximation_degree=pass_manager_config.approximation_degree,
639
- ),
640
- UnitarySynthesis(
641
- pass_manager_config.basis_gates,
642
- approximation_degree=pass_manager_config.approximation_degree,
643
- coupling_map=pass_manager_config.coupling_map,
644
- backend_props=pass_manager_config.backend_properties,
645
- method=pass_manager_config.unitary_synthesis_method,
646
- plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
647
- target=pass_manager_config.target,
648
- ),
649
- RemoveIdentityEquivalent(
650
- approximation_degree=pass_manager_config.approximation_degree,
651
- target=pass_manager_config.target,
652
- ),
653
- Optimize1qGatesDecomposition(
654
- basis=pass_manager_config.basis_gates, target=pass_manager_config.target
655
- ),
656
- CommutativeCancellation(target=pass_manager_config.target),
657
- ]
577
+ _opt = [
578
+ ConsolidateBlocks(
579
+ basis_gates=pass_manager_config.basis_gates,
580
+ target=pass_manager_config.target,
581
+ approximation_degree=pass_manager_config.approximation_degree,
582
+ ),
583
+ UnitarySynthesis(
584
+ pass_manager_config.basis_gates,
585
+ approximation_degree=pass_manager_config.approximation_degree,
586
+ coupling_map=pass_manager_config.coupling_map,
587
+ method=pass_manager_config.unitary_synthesis_method,
588
+ plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
589
+ target=pass_manager_config.target,
590
+ ),
591
+ RemoveIdentityEquivalent(
592
+ approximation_degree=pass_manager_config.approximation_degree,
593
+ target=pass_manager_config.target,
594
+ ),
595
+ Optimize1qGatesDecomposition(
596
+ basis=pass_manager_config.basis_gates, target=pass_manager_config.target
597
+ ),
598
+ CommutativeCancellation(target=pass_manager_config.target),
599
+ ContractIdleWiresInControlFlow(),
600
+ ]
658
601
 
659
602
  def _opt_control(property_set):
660
603
  return not property_set["optimization_loop_minimum_point"]
@@ -664,11 +607,11 @@ class OptimizationPassManager(PassManagerStagePlugin):
664
607
 
665
608
  unroll = translation.to_flow_controller()
666
609
 
667
- # Build nested Flow controllers
610
+ # Build nested flow controllers
668
611
  def _unroll_condition(property_set):
669
612
  return not property_set["all_gates_in_basis"]
670
613
 
671
- # Check if any gate is not in the basis, and if so, run unroll passes
614
+ # Check if any gate is not in the basis, and if so, run unroll/translation passes
672
615
  _unroll_if_out_of_basis = [
673
616
  GatesInBasis(pass_manager_config.basis_gates, target=pass_manager_config.target),
674
617
  ConditionalController(unroll, condition=_unroll_condition),
@@ -677,31 +620,23 @@ class OptimizationPassManager(PassManagerStagePlugin):
677
620
  if optimization_level == 3:
678
621
  optimization.append(_minimum_point_check)
679
622
  elif optimization_level == 2:
680
- with warnings.catch_warnings():
681
- warnings.filterwarnings(
682
- "ignore",
683
- category=DeprecationWarning,
684
- message=".*argument ``backend_props`` is deprecated as of Qiskit 1.4",
685
- module="qiskit",
686
- )
687
- optimization.append(
688
- [
689
- ConsolidateBlocks(
690
- basis_gates=pass_manager_config.basis_gates,
691
- target=pass_manager_config.target,
692
- approximation_degree=pass_manager_config.approximation_degree,
693
- ),
694
- UnitarySynthesis(
695
- pass_manager_config.basis_gates,
696
- approximation_degree=pass_manager_config.approximation_degree,
697
- coupling_map=pass_manager_config.coupling_map,
698
- backend_props=pass_manager_config.backend_properties,
699
- method=pass_manager_config.unitary_synthesis_method,
700
- plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
701
- target=pass_manager_config.target,
702
- ),
703
- ]
704
- )
623
+ optimization.append(
624
+ [
625
+ ConsolidateBlocks(
626
+ basis_gates=pass_manager_config.basis_gates,
627
+ target=pass_manager_config.target,
628
+ approximation_degree=pass_manager_config.approximation_degree,
629
+ ),
630
+ UnitarySynthesis(
631
+ pass_manager_config.basis_gates,
632
+ approximation_degree=pass_manager_config.approximation_degree,
633
+ coupling_map=pass_manager_config.coupling_map,
634
+ method=pass_manager_config.unitary_synthesis_method,
635
+ plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
636
+ target=pass_manager_config.target,
637
+ ),
638
+ ]
639
+ )
705
640
  optimization.append(_depth_check + _size_check)
706
641
  else:
707
642
  optimization.append(_depth_check + _size_check)
@@ -725,16 +660,11 @@ class AlapSchedulingPassManager(PassManagerStagePlugin):
725
660
  instruction_durations = pass_manager_config.instruction_durations
726
661
  scheduling_method = pass_manager_config.scheduling_method
727
662
  timing_constraints = pass_manager_config.timing_constraints
728
- inst_map = pass_manager_config.inst_map
729
663
  target = pass_manager_config.target
730
664
 
731
- with warnings.catch_warnings():
732
- warnings.simplefilter(action="ignore", category=DeprecationWarning)
733
- # Passing `inst_map` to `generate_scheduling` is deprecated in Qiskit 1.3
734
- # so filtering these warning when building pass managers
735
- return common.generate_scheduling(
736
- instruction_durations, scheduling_method, timing_constraints, inst_map, target
737
- )
665
+ return common.generate_scheduling(
666
+ instruction_durations, scheduling_method, timing_constraints, target
667
+ )
738
668
 
739
669
 
740
670
  class AsapSchedulingPassManager(PassManagerStagePlugin):
@@ -746,16 +676,11 @@ class AsapSchedulingPassManager(PassManagerStagePlugin):
746
676
  instruction_durations = pass_manager_config.instruction_durations
747
677
  scheduling_method = pass_manager_config.scheduling_method
748
678
  timing_constraints = pass_manager_config.timing_constraints
749
- inst_map = pass_manager_config.inst_map
750
679
  target = pass_manager_config.target
751
680
 
752
- with warnings.catch_warnings():
753
- warnings.simplefilter(action="ignore", category=DeprecationWarning)
754
- # Passing `inst_map` to `generate_scheduling` is deprecated in Qiskit 1.3
755
- # so filtering these warning when building pass managers
756
- return common.generate_scheduling(
757
- instruction_durations, scheduling_method, timing_constraints, inst_map, target
758
- )
681
+ return common.generate_scheduling(
682
+ instruction_durations, scheduling_method, timing_constraints, target
683
+ )
759
684
 
760
685
 
761
686
  class DefaultSchedulingPassManager(PassManagerStagePlugin):
@@ -767,16 +692,11 @@ class DefaultSchedulingPassManager(PassManagerStagePlugin):
767
692
  instruction_durations = pass_manager_config.instruction_durations
768
693
  scheduling_method = None
769
694
  timing_constraints = pass_manager_config.timing_constraints or TimingConstraints()
770
- inst_map = pass_manager_config.inst_map
771
695
  target = pass_manager_config.target
772
696
 
773
- with warnings.catch_warnings():
774
- warnings.simplefilter(action="ignore", category=DeprecationWarning)
775
- # Passing `inst_map` to `generate_scheduling` is deprecated in Qiskit 1.3
776
- # so filtering these warning when building pass managers
777
- return common.generate_scheduling(
778
- instruction_durations, scheduling_method, timing_constraints, inst_map, target
779
- )
697
+ return common.generate_scheduling(
698
+ instruction_durations, scheduling_method, timing_constraints, target
699
+ )
780
700
 
781
701
 
782
702
  class DefaultLayoutPassManager(PassManagerStagePlugin):
@@ -830,21 +750,13 @@ class DefaultLayoutPassManager(PassManagerStagePlugin):
830
750
  condition=_choose_layout_condition,
831
751
  )
832
752
  )
833
- with warnings.catch_warnings():
834
- warnings.filterwarnings(
835
- "ignore",
836
- category=DeprecationWarning,
837
- message=".*argument ``properties`` is deprecated as of Qiskit 1.4",
838
- module="qiskit",
839
- )
840
- choose_layout_1 = VF2Layout(
841
- coupling_map=pass_manager_config.coupling_map,
842
- seed=-1,
843
- call_limit=int(5e4), # Set call limit to ~100ms with rustworkx 0.10.2
844
- properties=pass_manager_config.backend_properties,
845
- target=pass_manager_config.target,
846
- max_trials=2500, # Limits layout scoring to < 600ms on ~400 qubit devices
847
- )
753
+ choose_layout_1 = VF2Layout(
754
+ coupling_map=pass_manager_config.coupling_map,
755
+ seed=-1,
756
+ call_limit=int(5e4), # Set call limit to ~100ms with rustworkx 0.10.2
757
+ target=pass_manager_config.target,
758
+ max_trials=2500, # Limits layout scoring to < 600ms on ~400 qubit devices
759
+ )
848
760
  layout.append(ConditionalController(choose_layout_1, condition=_layout_not_perfect))
849
761
 
850
762
  trial_count = _get_trial_count(5)
@@ -855,8 +767,7 @@ class DefaultLayoutPassManager(PassManagerStagePlugin):
855
767
  seed=pass_manager_config.seed_transpiler,
856
768
  swap_trials=trial_count,
857
769
  layout_trials=trial_count,
858
- skip_routing=pass_manager_config.routing_method is not None
859
- and pass_manager_config.routing_method != "sabre",
770
+ skip_routing=pass_manager_config.routing_method not in (None, "default", "sabre"),
860
771
  )
861
772
  layout.append(
862
773
  ConditionalController(
@@ -870,21 +781,13 @@ class DefaultLayoutPassManager(PassManagerStagePlugin):
870
781
  )
871
782
  )
872
783
  elif optimization_level == 2:
873
- with warnings.catch_warnings():
874
- warnings.filterwarnings(
875
- "ignore",
876
- category=DeprecationWarning,
877
- message=".*argument ``properties`` is deprecated as of Qiskit 1.4",
878
- module="qiskit",
879
- )
880
- choose_layout_0 = VF2Layout(
881
- coupling_map=pass_manager_config.coupling_map,
882
- seed=-1,
883
- call_limit=int(5e6), # Set call limit to ~10s with rustworkx 0.10.2
884
- properties=pass_manager_config.backend_properties,
885
- target=pass_manager_config.target,
886
- max_trials=2500, # Limits layout scoring to < 600ms on ~400 qubit devices
887
- )
784
+ choose_layout_0 = VF2Layout(
785
+ coupling_map=pass_manager_config.coupling_map,
786
+ seed=-1,
787
+ call_limit=int(5e6), # Set call limit to ~10s with rustworkx 0.10.2
788
+ target=pass_manager_config.target,
789
+ max_trials=2500, # Limits layout scoring to < 600ms on ~400 qubit devices
790
+ )
888
791
  layout.append(
889
792
  ConditionalController(choose_layout_0, condition=_choose_layout_condition)
890
793
  )
@@ -897,8 +800,7 @@ class DefaultLayoutPassManager(PassManagerStagePlugin):
897
800
  seed=pass_manager_config.seed_transpiler,
898
801
  swap_trials=trial_count,
899
802
  layout_trials=trial_count,
900
- skip_routing=pass_manager_config.routing_method is not None
901
- and pass_manager_config.routing_method != "sabre",
803
+ skip_routing=pass_manager_config.routing_method not in (None, "default", "sabre"),
902
804
  )
903
805
  layout.append(
904
806
  ConditionalController(
@@ -912,21 +814,13 @@ class DefaultLayoutPassManager(PassManagerStagePlugin):
912
814
  )
913
815
  )
914
816
  elif optimization_level == 3:
915
- with warnings.catch_warnings():
916
- warnings.filterwarnings(
917
- "ignore",
918
- category=DeprecationWarning,
919
- message=".*argument ``properties`` is deprecated as of Qiskit 1.4",
920
- module="qiskit",
921
- )
922
- choose_layout_0 = VF2Layout(
923
- coupling_map=pass_manager_config.coupling_map,
924
- seed=-1,
925
- call_limit=int(3e7), # Set call limit to ~60s with rustworkx 0.10.2
926
- properties=pass_manager_config.backend_properties,
927
- target=pass_manager_config.target,
928
- max_trials=250000, # Limits layout scoring to < 60s on ~400 qubit devices
929
- )
817
+ choose_layout_0 = VF2Layout(
818
+ coupling_map=pass_manager_config.coupling_map,
819
+ seed=-1,
820
+ call_limit=int(3e7), # Set call limit to ~60s with rustworkx 0.10.2
821
+ target=pass_manager_config.target,
822
+ max_trials=250000, # Limits layout scoring to < 60s on ~400 qubit devices
823
+ )
930
824
  layout.append(
931
825
  ConditionalController(choose_layout_0, condition=_choose_layout_condition)
932
826
  )
@@ -939,8 +833,7 @@ class DefaultLayoutPassManager(PassManagerStagePlugin):
939
833
  seed=pass_manager_config.seed_transpiler,
940
834
  swap_trials=trial_count,
941
835
  layout_trials=trial_count,
942
- skip_routing=pass_manager_config.routing_method is not None
943
- and pass_manager_config.routing_method != "sabre",
836
+ skip_routing=pass_manager_config.routing_method not in (None, "default", "sabre"),
944
837
  )
945
838
  layout.append(
946
839
  ConditionalController(
@@ -1000,23 +893,15 @@ class DenseLayoutPassManager(PassManagerStagePlugin):
1000
893
 
1001
894
  layout = PassManager()
1002
895
  layout.append(_given_layout)
1003
- with warnings.catch_warnings():
1004
- warnings.filterwarnings(
1005
- "ignore",
1006
- category=DeprecationWarning,
1007
- message=".*argument ``backend_prop`` is deprecated as of Qiskit 1.4",
1008
- module="qiskit",
1009
- )
1010
- layout.append(
1011
- ConditionalController(
1012
- DenseLayout(
1013
- coupling_map=pass_manager_config.coupling_map,
1014
- backend_prop=pass_manager_config.backend_properties,
1015
- target=pass_manager_config.target,
1016
- ),
1017
- condition=_choose_layout_condition,
1018
- )
896
+ layout.append(
897
+ ConditionalController(
898
+ DenseLayout(
899
+ coupling_map=pass_manager_config.coupling_map,
900
+ target=pass_manager_config.target,
901
+ ),
902
+ condition=_choose_layout_condition,
1019
903
  )
904
+ )
1020
905
  layout += common.generate_embed_passmanager(coupling_map)
1021
906
  return layout
1022
907
 
@@ -1049,8 +934,7 @@ class SabreLayoutPassManager(PassManagerStagePlugin):
1049
934
  seed=pass_manager_config.seed_transpiler,
1050
935
  swap_trials=trial_count,
1051
936
  layout_trials=trial_count,
1052
- skip_routing=pass_manager_config.routing_method is not None
1053
- and pass_manager_config.routing_method != "sabre",
937
+ skip_routing=pass_manager_config.routing_method not in (None, "default", "sabre"),
1054
938
  )
1055
939
  elif optimization_level == 1:
1056
940
  trial_count = _get_trial_count(5)
@@ -1061,8 +945,7 @@ class SabreLayoutPassManager(PassManagerStagePlugin):
1061
945
  seed=pass_manager_config.seed_transpiler,
1062
946
  swap_trials=trial_count,
1063
947
  layout_trials=trial_count,
1064
- skip_routing=pass_manager_config.routing_method is not None
1065
- and pass_manager_config.routing_method != "sabre",
948
+ skip_routing=pass_manager_config.routing_method not in (None, "default", "sabre"),
1066
949
  )
1067
950
  elif optimization_level == 2:
1068
951
  trial_count = _get_trial_count(20)
@@ -1073,8 +956,7 @@ class SabreLayoutPassManager(PassManagerStagePlugin):
1073
956
  seed=pass_manager_config.seed_transpiler,
1074
957
  swap_trials=trial_count,
1075
958
  layout_trials=trial_count,
1076
- skip_routing=pass_manager_config.routing_method is not None
1077
- and pass_manager_config.routing_method != "sabre",
959
+ skip_routing=pass_manager_config.routing_method not in (None, "default", "sabre"),
1078
960
  )
1079
961
  elif optimization_level == 3:
1080
962
  trial_count = _get_trial_count(20)
@@ -1085,8 +967,7 @@ class SabreLayoutPassManager(PassManagerStagePlugin):
1085
967
  seed=pass_manager_config.seed_transpiler,
1086
968
  swap_trials=trial_count,
1087
969
  layout_trials=trial_count,
1088
- skip_routing=pass_manager_config.routing_method is not None
1089
- and pass_manager_config.routing_method != "sabre",
970
+ skip_routing=pass_manager_config.routing_method not in (None, "default", "sabre"),
1090
971
  )
1091
972
  else:
1092
973
  raise TranspilerError(f"Invalid optimization level: {optimization_level}")
@@ -1108,5 +989,5 @@ class SabreLayoutPassManager(PassManagerStagePlugin):
1108
989
 
1109
990
  def _get_trial_count(default_trials=5):
1110
991
  if CONFIG.get("sabre_all_threads", None) or os.getenv("QISKIT_SABRE_ALL_THREADS"):
1111
- return max(CPU_COUNT, default_trials)
992
+ return max(default_num_processes(), default_trials)
1112
993
  return default_trials