---
title: PauliEvolutionSynthesisRustiq (v2.3)
description: API reference for qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSynthesisRustiq in qiskit v2.3
source: https://quantum.cloud.ibm.com/docs/en/api/qiskit/2.3/qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSynthesisRustiq
---

# PauliEvolutionSynthesisRustiq

*class* `qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSynthesisRustiq`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.3/qiskit/transpiler/passes/synthesis/hls_plugins.py#L2091-L2188)

Bases: [`HighLevelSynthesisPlugin`](/docs/api/qiskit/2.3/qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin")

Synthesize a [`PauliEvolutionGate`](/docs/api/qiskit/2.3/qiskit.circuit.library.PauliEvolutionGate "qiskit.circuit.library.PauliEvolutionGate") using Rustiq.

This plugin name is :`PauliEvolution.rustiq` which can be used as the key on an [`HLSConfig`](/docs/api/qiskit/2.3/qiskit.transpiler.passes.HLSConfig "qiskit.transpiler.passes.HLSConfig") object to use this method with [`HighLevelSynthesis`](/docs/api/qiskit/2.3/qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis").

The Rustiq synthesis algorithm is described in \[1], and is implemented in Rust-based quantum circuit synthesis library available at [https://github.com/smartiel/rustiq-core](https://github.com/smartiel/rustiq-core).

On large circuits the plugin may take a significant runtime.

The plugin supports the following additional options:

- **optimize\_count (bool): if True the synthesis algorithm will try to optimize**

  the 2-qubit gate count; and if False then the 2-qubit depth.

- **preserve\_order (bool): whether the order of paulis should be preserved, up to**

  commutativity.

- upto\_clifford (bool): if True, the final Clifford operator is not synthesized.

- **upto\_phase (bool): if True, the global phase of the returned circuit may**

  differ from the global phase of the given pauli network.

- **resynth\_clifford\_method (int): describes the strategy to synthesize the final**

  Clifford operator. Allowed values are 0 (naive approach), 1 (qiskit greedy synthesis), 2 (rustiq isometry synthesis).

**References**

1. Timothée Goubault de Brugière and Simon Martiel, *Faster and shorter synthesis of Hamiltonian simulation circuits*, [arXiv:2404.03280 \[quant-ph\]](https://arxiv.org/abs/2404.03280)

## Methods

### run

`run(high_level_object, coupling_map=None, target=None, qubits=None, **options)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.3/qiskit/transpiler/passes/synthesis/hls_plugins.py#L2123-L2188)

Run synthesis for the given Operation.

**Parameters**

- **high\_level\_object** ([*Operation*](/docs/api/qiskit/2.3/qiskit.circuit.Operation "qiskit.circuit.Operation")) – The Operation to synthesize to a [`DAGCircuit`](/docs/api/qiskit/2.3/qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") object.
- **coupling\_map** ([*CouplingMap*](/docs/api/qiskit/2.3/qiskit.transpiler.CouplingMap "qiskit.transpiler.CouplingMap")) – The coupling map of the backend in case synthesis is done on a physical circuit.
- **target** ([*Target*](/docs/api/qiskit/2.3/qiskit.transpiler.Target "qiskit.transpiler.Target")) – A target representing the target backend.
- **qubits** ([*list*](https://docs.python.org/3/library/stdtypes.html#list)) – List of qubits over which the operation is defined in case synthesis is done on a physical circuit.
- **options** – Additional method-specific optional kwargs.

**Returns**

**The quantum circuit representation of the Operation**

when successful, and `None` otherwise.

**Return type**

[QuantumCircuit](/docs/api/qiskit/2.3/qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")
