Phoenix is a highly-effective VQA (variational quantum algorithm) application-specifc compiler based on BSF (binary symplectic form) of Pauli exponentiations and Clifford formalism. Different from ZX-calculus-like approaches (e.g., TKet, PauliOpt) and local peephole optimization approaches (e.g., Paulihedral, Tetris), Phoenix exploits global optimization opportunities for VQA programs to the largest extent, when representing Pauli strings as BSF and employing Clifford formalism on the higher-level IR.
This repo includes benchmarking scripts and results with other SOTA baselines -- TKet, Paulihedral, Tetris, and Rustiq. Code of Paulihedral and Tetris are refactored and integrated in this repo.
The new phoenix_qiskit package re-implements the Phoenix compilation pipeline directly on top of qiskit 2.x data structures. Instead of the bespoke circuit and gate abstractions that powered the original prototype, the module exposes a lightweight façade over qiskit's SparsePauliOp, PauliList, and QuantumCircuit primitives:
from qiskit.quantum_info import SparsePauliOp
from phoenix_qiskit import PhoenixCompiler
op = SparsePauliOp(['XXIII', 'YYIII', 'ZZIII'], [0.5, 0.5, 0.5])
compiler = PhoenixCompiler(optimization_level=2)
optimized_trotter_step = compiler.compile(op, trotter_steps=1)Internally the compiler groups Pauli terms by their non-trivial support, simplifies each group via Clifford conjugation in binary symplectic form, turns the resulting configurations into QuantumCircuit blocks, and finally schedules/optimizes those blocks with qiskit's transpiler passes. The current implementation targets the CNOT-native basis and exposes a trotter_steps knob for repeating the synthesized blocks; support for higher-order Trotterization and additional basis choices can be layered on top of the same API.
If you make use of Phoenix in your work, please cite the following publication:
@inproceedings{yang2025phoenix,
author={Yang, Zhaohui and Ding, Dawei and Zhu, Chenghong and Chen, Jianxin and Xie, Yuan},
booktitle={2025 62nd ACM/IEEE Design Automation Conference (DAC)},
title={PHOENIX: Pauli-Based High-Level Optimization Engine for Instruction Execution on NISQ Devices},
year={2025},
volume={},
number={},
pages={1-7},
doi={10.1109/DAC63849.2025.11133028}
}
- High-level compilation
- Global optimization
- ISA-independent
E.g., Illustration of the core optimization strategy
E.g., Hardware-agnostic compilation:
E.g., Hardware-aware compilation:
Basic library requirements are lists in requirements.txt.
- We align with the
1.2.4version ofqiskitacross the published benchmarking results, sinceqiskit's O1/O2 has different built-in workflows within its 0.xx.x versions and 1.xx.x versions. Version 1.0+ is suitable for Phoenix. - Originally, Paulihedral and Tetris require version 0.23.x and version 0.43.x of Qiskit. In this code repo, they can also be soomthly tested under Qiskit-1.2.4.
Benchmark suites:
- UCCSD: 16 molecule simulation programs from benchmarks from TKet benchmarking. We use this suite for fine-grain benchmarking and real system analysis.
Benchmarking scripts: (under ./artifact_dac25/experiments/)
bench_single.py: Benchmarking given a compiler and input file (.qasmfile for TKet,.jsonfile for Paulihedral/Tetris/Phoenix)bench_hamlib.py: Benchmarking given a compiler and a category of Hamlib benchmarksbench_uccsd.py: Benchmarking given a compiler and a physical-qubit topology type (E.g., all2all, manhattan, sycamore) (Since TKet/Phoenix does no make hardware-ware co-optimization, manually set topology execept "all2all" are invalid. Instead, the hardware-ware compilation are conducted by executing another scriptuccsd_all2all_to_limited.py)bench_utils.py: Utils used in benchmarking, within which the standard compilation passes of Phoenix and baselines are specifieduccsd_all2lall_to_limited.py: Compile all-to-all compilation results from TKet/Phoenix for UCCSD benchmarks to limited-connectivity topology (manhattan, sycamore)uccsd_all2all_qiskit_opt.py: Further perform Qiskit O3 for logical-level synthesis results of Paulihedral/Tetris/Phoenix
Result files:
-
./artifact_dac25/experiments/output_uccsd/<compiler>/<device>: Output circuits by some<compiler>(E.g., Tetris, Phoenix) for some kind of<device>(E.g., all2all, manhattan) from the UCCSD benchmark suite -
./artifact_dac25/experiments/output_uccsd/<compiler>_opt/all2all: Output circuits by some<compiler>(E.g., Tetris, Phoenix) when performing its logical-level synthesis with Qiskit O3 optimization procedure on logical circuits
This project is licensed under the Apache License 2.0 -- see the LICENSE file for details.

