---
title: passes (v1.3)
description: API reference for qiskit.transpiler.passes in qiskit v1.3
source: https://quantum.cloud.ibm.com/docs/en/api/qiskit/1.3/transpiler_passes
---

# Transpiler Passes

`qiskit.transpiler.passes`

## Layout Selection (Placement)

|                                                                                                                                                                     |                                                                                                                      |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| [`SetLayout`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.SetLayout "qiskit.transpiler.passes.SetLayout")(\*args, \*\*kwargs)                                     | Set the `layout` property to the given layout.                                                                       |
| [`TrivialLayout`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.TrivialLayout "qiskit.transpiler.passes.TrivialLayout")(\*args, \*\*kwargs)                         | Choose a Layout by assigning `n` circuit qubits to device qubits `0, .., n-1`.                                       |
| [`DenseLayout`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.DenseLayout "qiskit.transpiler.passes.DenseLayout")(\*args, \*\*kwargs)                               | Choose a Layout by finding the most connected subset of qubits.                                                      |
| [`SabreLayout`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.SabreLayout "qiskit.transpiler.passes.SabreLayout")(\*args, \*\*kwargs)                               | Choose a Layout via iterative bidirectional routing of the input circuit.                                            |
| [`CSPLayout`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CSPLayout "qiskit.transpiler.passes.CSPLayout")(\*args, \*\*kwargs)                                     | If possible, chooses a Layout as a CSP, using backtracking.                                                          |
| [`VF2Layout`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.VF2Layout "qiskit.transpiler.passes.VF2Layout")(\*args, \*\*kwargs)                                     | A pass for choosing a Layout of a circuit onto a Coupling graph, as a subgraph isomorphism problem, solved by VF2++. |
| [`ApplyLayout`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.ApplyLayout "qiskit.transpiler.passes.ApplyLayout")(\*args, \*\*kwargs)                               | Transform a circuit with virtual qubits into a circuit with physical qubits.                                         |
| [`Layout2qDistance`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Layout2qDistance "qiskit.transpiler.passes.Layout2qDistance")(\*args, \*\*kwargs)                | Evaluate how good the layout selection was.                                                                          |
| [`EnlargeWithAncilla`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.EnlargeWithAncilla "qiskit.transpiler.passes.EnlargeWithAncilla")(\*args, \*\*kwargs)          | Extend the dag with virtual qubits that are in layout but not in the circuit yet.                                    |
| [`FullAncillaAllocation`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.FullAncillaAllocation "qiskit.transpiler.passes.FullAncillaAllocation")(\*args, \*\*kwargs) | Allocate all idle nodes from the coupling map or target as ancilla on the layout.                                    |
| [`SabrePreLayout`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.SabrePreLayout "qiskit.transpiler.passes.SabrePreLayout")(\*args, \*\*kwargs)                      | Choose a starting layout to use for additional Sabre layout trials.                                                  |

## Routing

|                                                                                                                                                                     |                                                                                 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| [`BasicSwap`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.BasicSwap "qiskit.transpiler.passes.BasicSwap")(\*args, \*\*kwargs)                                     | Map (with minimum effort) a DAGCircuit onto a `coupling_map` adding swap gates. |
| [`LookaheadSwap`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.LookaheadSwap "qiskit.transpiler.passes.LookaheadSwap")(\*args, \*\*kwargs)                         | Map input circuit onto a backend topology via insertion of SWAPs.               |
| [`StochasticSwap`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.StochasticSwap "qiskit.transpiler.passes.StochasticSwap")(\*args, \*\*kwargs)                      | Map a DAGCircuit onto a coupling\_map adding swap gates.                        |
| [`SabreSwap`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.SabreSwap "qiskit.transpiler.passes.SabreSwap")(\*args, \*\*kwargs)                                     | Map input circuit onto a backend topology via insertion of SWAPs.               |
| [`Commuting2qGateRouter`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Commuting2qGateRouter "qiskit.transpiler.passes.Commuting2qGateRouter")(\*args, \*\*kwargs) | A class to swap route one or more commuting gates to the coupling map.          |
| [`StarPreRouting`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.StarPreRouting "qiskit.transpiler.passes.StarPreRouting")(\*args, \*\*kwargs)                      | Run star to linear pre-routing                                                  |

## Basis Change

|                                                                                                                                                                                       |                                                                                                            |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| [`BasisTranslator`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.BasisTranslator "qiskit.transpiler.passes.BasisTranslator")(\*args, \*\*kwargs)                                     | Translates gates to a target basis by searching for a set of translations from a given EquivalenceLibrary. |
| [`Decompose`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Decompose "qiskit.transpiler.passes.Decompose")(\*args, \*\*kwargs)                                                       | Expand a gate in a circuit using its decomposition rules.                                                  |
| [`TranslateParameterizedGates`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.TranslateParameterizedGates "qiskit.transpiler.passes.TranslateParameterizedGates")(\*args, \*\*kwargs) | Translate parameterized gates to a supported basis set.                                                    |
| [`Unroll3qOrMore`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Unroll3qOrMore "qiskit.transpiler.passes.Unroll3qOrMore")(\*args, \*\*kwargs)                                        | Recursively expands 3q+ gates until the circuit only contains 2q or 1q gates.                              |
| [`UnrollCustomDefinitions`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.UnrollCustomDefinitions "qiskit.transpiler.passes.UnrollCustomDefinitions")(\*args, \*\*kwargs)             | Unrolls instructions with custom definitions.                                                              |

## Optimizations

|                                                                                                                                                                                                      |                                                                                                                                                                                                                                                                                                                                                                                                                |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`Optimize1qGates`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Optimize1qGates "qiskit.transpiler.passes.Optimize1qGates")(\*args, \*\*kwargs)                                                    | Optimize chains of single-qubit u1, u2, u3 gates by combining them into a single gate.                                                                                                                                                                                                                                                                                                                         |
| [`Optimize1qGatesDecomposition`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Optimize1qGatesDecomposition "qiskit.transpiler.passes.Optimize1qGatesDecomposition")(\*args, \*\*kwargs)             | Optimize chains of single-qubit gates by combining them into a single gate.                                                                                                                                                                                                                                                                                                                                    |
| [`Collect1qRuns`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Collect1qRuns "qiskit.transpiler.passes.Collect1qRuns")(\*args, \*\*kwargs)                                                          | Collect one-qubit subcircuits.                                                                                                                                                                                                                                                                                                                                                                                 |
| [`Collect2qBlocks`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Collect2qBlocks "qiskit.transpiler.passes.Collect2qBlocks")(\*args, \*\*kwargs)                                                    | Collect two-qubit subcircuits.                                                                                                                                                                                                                                                                                                                                                                                 |
| [`CollectMultiQBlocks`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CollectMultiQBlocks "qiskit.transpiler.passes.CollectMultiQBlocks")(\*args, \*\*kwargs)                                        | Collect sequences of uninterrupted gates acting on groups of qubits.                                                                                                                                                                                                                                                                                                                                           |
| [`CollectAndCollapse`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CollectAndCollapse "qiskit.transpiler.passes.CollectAndCollapse")(\*args, \*\*kwargs)                                           | A general transpiler pass to collect and to consolidate blocks of nodes in a circuit.                                                                                                                                                                                                                                                                                                                          |
| [`CollectLinearFunctions`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CollectLinearFunctions "qiskit.transpiler.passes.CollectLinearFunctions")(\*args, \*\*kwargs)                               | Collect blocks of linear gates ([`CXGate`](/docs/api/qiskit/1.3/qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate") and [`SwapGate`](/docs/api/qiskit/1.3/qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate") gates) and replaces them by linear functions ([`LinearFunction`](/docs/api/qiskit/1.3/qiskit.circuit.library.LinearFunction "qiskit.circuit.library.LinearFunction")). |
| [`CollectCliffords`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CollectCliffords "qiskit.transpiler.passes.CollectCliffords")(\*args, \*\*kwargs)                                                 | Collects blocks of Clifford gates and replaces them by a [`Clifford`](/docs/api/qiskit/1.3/qiskit.quantum_info.Clifford "qiskit.quantum_info.Clifford") object.                                                                                                                                                                                                                                                |
| [`ConsolidateBlocks`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.ConsolidateBlocks "qiskit.transpiler.passes.ConsolidateBlocks")(\*args, \*\*kwargs)                                              | Replace each block of consecutive gates by a single Unitary node.                                                                                                                                                                                                                                                                                                                                              |
| [`CXCancellation`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CXCancellation "qiskit.transpiler.passes.CXCancellation")(\*args, \*\*kwargs)                                                       | Cancel back-to-back `cx` gates in dag.                                                                                                                                                                                                                                                                                                                                                                         |
| [`InverseCancellation`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.InverseCancellation "qiskit.transpiler.passes.InverseCancellation")(\*args, \*\*kwargs)                                        | Cancel specific Gates which are inverses of each other when they occur back-to- back.                                                                                                                                                                                                                                                                                                                          |
| [`CommutationAnalysis`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CommutationAnalysis "qiskit.transpiler.passes.CommutationAnalysis")(\*args, \*\*kwargs)                                        | Analysis pass to find commutation relations between DAG nodes.                                                                                                                                                                                                                                                                                                                                                 |
| [`CommutativeCancellation`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CommutativeCancellation "qiskit.transpiler.passes.CommutativeCancellation")(\*args, \*\*kwargs)                            | Cancel the redundant (self-adjoint) gates through commutation relations.                                                                                                                                                                                                                                                                                                                                       |
| [`CommutativeInverseCancellation`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CommutativeInverseCancellation "qiskit.transpiler.passes.CommutativeInverseCancellation")(\*args, \*\*kwargs)       | Cancel pairs of inverse gates exploiting commutation relations.                                                                                                                                                                                                                                                                                                                                                |
| [`Optimize1qGatesSimpleCommutation`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation "qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation")(\*args, \*\*kwargs) | Optimizes 1Q gate strings interrupted by 2Q gates by commuting the components and resynthesizing the results.                                                                                                                                                                                                                                                                                                  |
| [`RemoveDiagonalGatesBeforeMeasure`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure "qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure")(\*args, \*\*kwargs) | Remove diagonal gates (including diagonal 2Q gates) before a measurement.                                                                                                                                                                                                                                                                                                                                      |
| [`RemoveResetInZeroState`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.RemoveResetInZeroState "qiskit.transpiler.passes.RemoveResetInZeroState")(\*args, \*\*kwargs)                               | Remove reset gate when the qubit is in zero state.                                                                                                                                                                                                                                                                                                                                                             |
| [`RemoveFinalReset`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.RemoveFinalReset "qiskit.transpiler.passes.RemoveFinalReset")(\*args, \*\*kwargs)                                                 | Remove reset when it is the final instruction on a qubit wire.                                                                                                                                                                                                                                                                                                                                                 |
| [`HoareOptimizer`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.HoareOptimizer "qiskit.transpiler.passes.HoareOptimizer")(\*args, \*\*kwargs)                                                       | This is a transpiler pass using Hoare logic circuit optimization.                                                                                                                                                                                                                                                                                                                                              |
| [`TemplateOptimization`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.TemplateOptimization "qiskit.transpiler.passes.TemplateOptimization")(\*args, \*\*kwargs)                                     | Class for the template optimization pass.                                                                                                                                                                                                                                                                                                                                                                      |
| [`EchoRZXWeylDecomposition`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.EchoRZXWeylDecomposition "qiskit.transpiler.passes.EchoRZXWeylDecomposition")(\*args, \*\*kwargs)                         | Rewrite two-qubit gates using the Weyl decomposition.                                                                                                                                                                                                                                                                                                                                                          |
| [`ResetAfterMeasureSimplification`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.ResetAfterMeasureSimplification "qiskit.transpiler.passes.ResetAfterMeasureSimplification")(\*args, \*\*kwargs)    | This pass replaces reset after measure with a conditional X gate.                                                                                                                                                                                                                                                                                                                                              |
| [`OptimizeCliffords`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.OptimizeCliffords "qiskit.transpiler.passes.OptimizeCliffords")(\*args, \*\*kwargs)                                              | Combine consecutive Cliffords over the same qubits.                                                                                                                                                                                                                                                                                                                                                            |
| [`ElidePermutations`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.ElidePermutations "qiskit.transpiler.passes.ElidePermutations")(\*args, \*\*kwargs)                                              | Remove permutation operations from a pre-layout circuit                                                                                                                                                                                                                                                                                                                                                        |
| [`NormalizeRXAngle`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.NormalizeRXAngle "qiskit.transpiler.passes.NormalizeRXAngle")(\*args, \*\*kwargs)                                                 | Normalize theta parameter of RXGate instruction.                                                                                                                                                                                                                                                                                                                                                               |
| [`OptimizeAnnotated`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.OptimizeAnnotated "qiskit.transpiler.passes.OptimizeAnnotated")(\*args, \*\*kwargs)                                              | Optimization pass on circuits with annotated operations.                                                                                                                                                                                                                                                                                                                                                       |
| [`Split2QUnitaries`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Split2QUnitaries "qiskit.transpiler.passes.Split2QUnitaries")(\*args, \*\*kwargs)                                                 | Attempt to splits two-qubit unitaries in a [`DAGCircuit`](/docs/api/qiskit/1.3/qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") into two single-qubit gates.                                                                                                                                                                                                                                       |
| [`RemoveIdentityEquivalent`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.RemoveIdentityEquivalent "qiskit.transpiler.passes.RemoveIdentityEquivalent")(\*args, \*\*kwargs)                         | Remove gates with negligible effects.                                                                                                                                                                                                                                                                                                                                                                          |

## Calibration

|                                                                                                                                                                                       |                                                                                                              |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| [`PulseGates`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.PulseGates "qiskit.transpiler.passes.PulseGates")(\*args, \*\*kwargs)                                                    | Pulse gate adding pass.                                                                                      |
| [`RZXCalibrationBuilder`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.RZXCalibrationBuilder "qiskit.transpiler.passes.RZXCalibrationBuilder")(\*args, \*\*kwargs)                   | Creates calibrations for RZXGate(theta) by stretching and compressing Gaussian square pulses in the CX gate. |
| [`RZXCalibrationBuilderNoEcho`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho "qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho")(\*args, \*\*kwargs) | Creates calibrations for RZXGate(theta) by stretching and compressing Gaussian square pulses in the CX gate. |
| [`RXCalibrationBuilder`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.RXCalibrationBuilder "qiskit.transpiler.passes.RXCalibrationBuilder")(\*args, \*\*kwargs)                      | Add single-pulse RX calibrations that are bootstrapped from the SX calibration.                              |

### rzx\_templates

`qiskit.transpiler.passes.rzx_templates(template_list=None)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.3/qiskit/transpiler/passes/calibration/rzx_templates.py#L23-L51)

Convenience function to get the cost\_dict and templates for template matching.

**Parameters**

**template\_list** ([*List*](https://docs.python.org/3/library/typing.html#typing.List)*\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str)*] | None*) – List of instruction names.

**Returns**

Decomposition templates and cost values.

**Return type**

[*Dict*](https://docs.python.org/3/library/typing.html#typing.Dict)

## Scheduling

|                                                                                                                                                                              |                                                                                                                         |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| [`TimeUnitConversion`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.TimeUnitConversion "qiskit.transpiler.passes.TimeUnitConversion")(\*args, \*\*kwargs)                   | Choose a time unit to be used in the following time-aware passes, and make all circuit time units consistent with that. |
| [`ALAPScheduleAnalysis`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.ALAPScheduleAnalysis "qiskit.transpiler.passes.ALAPScheduleAnalysis")(\*args, \*\*kwargs)             | ALAP Scheduling pass, which schedules the **stop** time of instructions as late as possible.                            |
| [`ASAPScheduleAnalysis`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.ASAPScheduleAnalysis "qiskit.transpiler.passes.ASAPScheduleAnalysis")(\*args, \*\*kwargs)             | ASAP Scheduling pass, which schedules the start time of instructions as early as possible.                              |
| [`PadDynamicalDecoupling`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.PadDynamicalDecoupling "qiskit.transpiler.passes.PadDynamicalDecoupling")(\*args, \*\*kwargs)       | Dynamical decoupling insertion pass.                                                                                    |
| [`PadDelay`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.PadDelay "qiskit.transpiler.passes.PadDelay")(\*args, \*\*kwargs)                                                 | Padding idle time with Delay instructions.                                                                              |
| [`ConstrainedReschedule`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.ConstrainedReschedule "qiskit.transpiler.passes.ConstrainedReschedule")(\*args, \*\*kwargs)          | Rescheduler pass that updates node start times to conform to the hardware alignments.                                   |
| [`ValidatePulseGates`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.ValidatePulseGates "qiskit.transpiler.passes.ValidatePulseGates")(\*args, \*\*kwargs)                   | Check custom gate length.                                                                                               |
| [`InstructionDurationCheck`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.InstructionDurationCheck "qiskit.transpiler.passes.InstructionDurationCheck")(\*args, \*\*kwargs) | Duration validation pass for reschedule.                                                                                |
| [`SetIOLatency`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.SetIOLatency "qiskit.transpiler.passes.SetIOLatency")(\*args, \*\*kwargs)                                     | Set IOLatency information to the input circuit.                                                                         |
| [`ALAPSchedule`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.ALAPSchedule "qiskit.transpiler.passes.ALAPSchedule")(\*args, \*\*kwargs)                                     | ALAP Scheduling pass, which schedules the **stop** time of instructions as late as possible.                            |
| [`ASAPSchedule`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.ASAPSchedule "qiskit.transpiler.passes.ASAPSchedule")(\*args, \*\*kwargs)                                     | ASAP Scheduling pass, which schedules the start time of instructions as early as possible..                             |
| [`DynamicalDecoupling`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.DynamicalDecoupling "qiskit.transpiler.passes.DynamicalDecoupling")(\*args, \*\*kwargs)                | Dynamical decoupling insertion pass.                                                                                    |
| [`AlignMeasures`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.AlignMeasures "qiskit.transpiler.passes.AlignMeasures")(\*args, \*\*kwargs)                                  | Measurement alignment.                                                                                                  |

## Circuit Analysis

|                                                                                                                                                               |                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`Width`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Width "qiskit.transpiler.passes.Width")(\*args, \*\*kwargs)                                           | Calculate the width of a DAG circuit.                                                                                                                                                                                                                                                                                                                                                                                                             |
| [`Depth`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Depth "qiskit.transpiler.passes.Depth")(\*args, \*\*kwargs)                                           | Calculate the depth of a DAG circuit.                                                                                                                                                                                                                                                                                                                                                                                                             |
| [`Size`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.Size "qiskit.transpiler.passes.Size")(\*args, \*\*kwargs)                                              | Calculate the size of a DAG circuit.                                                                                                                                                                                                                                                                                                                                                                                                              |
| [`CountOps`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CountOps "qiskit.transpiler.passes.CountOps")(\*args, \*\*kwargs)                                  | Count the operations in a DAG circuit.                                                                                                                                                                                                                                                                                                                                                                                                            |
| [`CountOpsLongestPath`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CountOpsLongestPath "qiskit.transpiler.passes.CountOpsLongestPath")(\*args, \*\*kwargs) | Count the operations on the longest path in a [`DAGCircuit`](/docs/api/qiskit/1.3/qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit").                                                                                                                                                                                                                                                                                                   |
| [`NumTensorFactors`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.NumTensorFactors "qiskit.transpiler.passes.NumTensorFactors")(\*args, \*\*kwargs)          | Calculate the number of tensor factors of a DAG circuit.                                                                                                                                                                                                                                                                                                                                                                                          |
| [`DAGLongestPath`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.DAGLongestPath "qiskit.transpiler.passes.DAGLongestPath")(\*args, \*\*kwargs)                | Return the longest path in a [`DAGCircuit`](/docs/api/qiskit/1.3/qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") as a list of [`DAGOpNode`](/docs/api/qiskit/1.3/qiskit.dagcircuit.DAGOpNode "qiskit.dagcircuit.DAGOpNode")s, [`DAGInNode`](/docs/api/qiskit/1.3/qiskit.dagcircuit.DAGInNode "qiskit.dagcircuit.DAGInNode")s, and [`DAGOutNode`](/docs/api/qiskit/1.3/qiskit.dagcircuit.DAGOutNode "qiskit.dagcircuit.DAGOutNode")s. |

## Synthesis

The synthesis transpiler plugin documentation can be found in the [`qiskit.transpiler.passes.synthesis.plugin`](/docs/api/qiskit/1.3/transpiler_synthesis_plugins#module-qiskit.transpiler.passes.synthesis.plugin "qiskit.transpiler.passes.synthesis.plugin") page.

|                                                                                                                                                                                             |                                                                                                                                                                                                                                                                                                 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`UnitarySynthesis`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.UnitarySynthesis "qiskit.transpiler.passes.UnitarySynthesis")(\*args, \*\*kwargs)                                        | Synthesize gates according to their basis gates.                                                                                                                                                                                                                                                |
| [`LinearFunctionsToPermutations`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.LinearFunctionsToPermutations "qiskit.transpiler.passes.LinearFunctionsToPermutations")(\*args, \*\*kwargs) | Promotes linear functions to permutations when possible.                                                                                                                                                                                                                                        |
| [`HighLevelSynthesis`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis")(\*args, \*\*kwargs)                                  | Synthesize higher-level objects and unroll custom definitions.                                                                                                                                                                                                                                  |
| [`HLSConfig`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.HLSConfig "qiskit.transpiler.passes.HLSConfig")(\[use\_default\_on\_unspecified, ...])                                          | The high-level-synthesis config allows to specify a list of "methods" used by [`HighLevelSynthesis`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis") transformation pass to synthesize different types of higher-level objects. |
| [`SolovayKitaev`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.SolovayKitaev "qiskit.transpiler.passes.SolovayKitaev")(\*args, \*\*kwargs)                                                 | Approximately decompose 1q gates to a discrete basis using the Solovay-Kitaev algorithm.                                                                                                                                                                                                        |

## Post Layout

These are post qubit selection.

|                                                                                                                                             |                                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`VF2PostLayout`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.VF2PostLayout "qiskit.transpiler.passes.VF2PostLayout")(\*args, \*\*kwargs) | A pass for improving an existing Layout after transpilation of a circuit onto a Coupling graph, as a subgraph isomorphism problem, solved by VF2++. |

## Additional Passes

|                                                                                                                                                                                                |                                                                                                                                   |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| [`CheckMap`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CheckMap "qiskit.transpiler.passes.CheckMap")(\*args, \*\*kwargs)                                                                   | Check if a DAG circuit is already mapped to a coupling map.                                                                       |
| [`CheckGateDirection`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.CheckGateDirection "qiskit.transpiler.passes.CheckGateDirection")(\*args, \*\*kwargs)                                     | Check if the two-qubit gates follow the right direction with respect to the coupling map.                                         |
| [`GateDirection`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.GateDirection "qiskit.transpiler.passes.GateDirection")(\*args, \*\*kwargs)                                                    | Modify asymmetric gates to match the hardware coupling direction.                                                                 |
| [`MergeAdjacentBarriers`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.MergeAdjacentBarriers "qiskit.transpiler.passes.MergeAdjacentBarriers")(\*args, \*\*kwargs)                            | Return a circuit with any adjacent barriers merged together.                                                                      |
| [`RemoveBarriers`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.RemoveBarriers "qiskit.transpiler.passes.RemoveBarriers")(\*args, \*\*kwargs)                                                 | Return a circuit with any barrier removed.                                                                                        |
| [`BarrierBeforeFinalMeasurements`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.BarrierBeforeFinalMeasurements "qiskit.transpiler.passes.BarrierBeforeFinalMeasurements")(\*args, \*\*kwargs) | Add a barrier before final measurements.                                                                                          |
| [`RemoveFinalMeasurements`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.RemoveFinalMeasurements "qiskit.transpiler.passes.RemoveFinalMeasurements")(\*args, \*\*kwargs)                      | Remove final measurements and barriers at the end of a circuit.                                                                   |
| [`DAGFixedPoint`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.DAGFixedPoint "qiskit.transpiler.passes.DAGFixedPoint")(\*args, \*\*kwargs)                                                    | Check if the DAG has reached a fixed point.                                                                                       |
| [`FixedPoint`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.FixedPoint "qiskit.transpiler.passes.FixedPoint")(\*args, \*\*kwargs)                                                             | Check if a property reached a fixed point.                                                                                        |
| [`MinimumPoint`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.MinimumPoint "qiskit.transpiler.passes.MinimumPoint")(\*args, \*\*kwargs)                                                       | Check if the DAG has reached a relative semi-stable point over previous runs                                                      |
| [`ContainsInstruction`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.ContainsInstruction "qiskit.transpiler.passes.ContainsInstruction")(\*args, \*\*kwargs)                                  | An analysis pass to detect if the DAG contains a specific instruction.                                                            |
| [`GatesInBasis`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.GatesInBasis "qiskit.transpiler.passes.GatesInBasis")(\*args, \*\*kwargs)                                                       | Check if all gates in a DAG are in a given set of gates                                                                           |
| [`ConvertConditionsToIfOps`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.ConvertConditionsToIfOps "qiskit.transpiler.passes.ConvertConditionsToIfOps")(\*args, \*\*kwargs)                   | Convert instructions whose `condition` attribute is set to a non-`None` value into the equivalent single-statement `IfElseBlock`. |
| [`UnrollForLoops`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.UnrollForLoops "qiskit.transpiler.passes.UnrollForLoops")(\*args, \*\*kwargs)                                                 | `UnrollForLoops` transpilation pass unrolls for-loops when possible.                                                              |
| [`FilterOpNodes`](/docs/api/qiskit/1.3/qiskit.transpiler.passes.FilterOpNodes "qiskit.transpiler.passes.FilterOpNodes")(\*args, \*\*kwargs)                                                    | Remove all operations that match a filter function                                                                                |
