munich-quantum-toolkit / munich-quantum-toolkit/core

✨ Integrate Pauli twirling into target compilation

Open
#2,265 0 comments 0 reactions 1 assignee View on GitHub

@simon1hofmann is already working on this.

Since Sep 17, 2026.

c++ enhancement MLIR
Dominant language
C++
Stars
133
Forks
73
Avg merge
17h 34m
Merged PRs (30d)
261

Description

Problem Statement

Pull request #2224 adds Pauli twirling as an opt-in raw-QCO pass. Target
compilation owns a fixed sequence that includes two-qubit fusion, mapping,
native synthesis, and target-conformance verification, while custom QCO
pipelines cannot currently be combined with a compiler target.

Consequently, the pass has no target-aware placement:

  • Running it before target compilation allows later fusion or synthesis to
    absorb inserted Pauli gates or introduce additional eligible two-qubit gates.
  • Running it after target compilation may introduce gates outside the target's
    native gate set after conformance has already been verified.

This prevents callers from enabling Pauli twirling as part of the regular
target-compilation flow.

Follow-up to the review of
#2224
.

Proposed Solution

Provide an explicit target-compilation option and a target-aware pipeline
placement for Pauli twirling. The resulting flow should:

  • Expose the seed through the compiler APIs and command-line interface.
  • Twirl eligible final two-qubit gates without later fusion removing the
    intended Pauli boundaries.
  • Lower inserted single-qubit Pauli gates as required by the target and perform
    target-conformance verification afterward.
  • Remain reproducible for a fixed seed.
  • Test pipeline ordering, reproducibility, and final target conformance.

The implementation may require a target-aware pipeline hook or separating the
relevant native-synthesis stages; choosing that structure is part of this
issue.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.