quantrs2_circuit/scirs2_transpiler_enhanced/
passes.rs

1//! Transpilation passes and strategies
2
3use serde::{Deserialize, Serialize};
4
5/// Performance constraints for transpilation
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct PerformanceConstraints {
8    /// Maximum circuit depth
9    pub max_depth: Option<usize>,
10
11    /// Maximum gate count
12    pub max_gates: Option<usize>,
13
14    /// Maximum execution time (seconds)
15    pub max_execution_time: Option<f64>,
16
17    /// Minimum fidelity requirement
18    pub min_fidelity: Option<f64>,
19
20    /// Maximum transpilation time (seconds)
21    pub max_transpilation_time: Option<f64>,
22}
23
24impl Default for PerformanceConstraints {
25    fn default() -> Self {
26        Self {
27            max_depth: None,
28            max_gates: None,
29            max_execution_time: None,
30            min_fidelity: Some(0.95),
31            max_transpilation_time: Some(60.0),
32        }
33    }
34}
35
36/// Export formats for transpiled circuits
37#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
38pub enum ExportFormat {
39    QASM3,
40    OpenQASM,
41    Cirq,
42    Qiskit,
43    PyQuil,
44    Braket,
45    QSharp,
46    Custom,
47}
48
49/// Transpilation pass types
50#[derive(Debug, Clone, Serialize, Deserialize)]
51pub enum TranspilationPass {
52    /// Decompose gates to native gate set
53    Decomposition(DecompositionStrategy),
54
55    /// Route qubits based on connectivity
56    Routing(RoutingStrategy),
57
58    /// Optimize gate sequences
59    Optimization(OptimizationStrategy),
60
61    /// Apply error mitigation
62    ErrorMitigation(MitigationStrategy),
63
64    /// Custom pass with function pointer
65    Custom(String),
66}
67
68/// Decomposition strategies
69#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
70pub enum DecompositionStrategy {
71    /// Use KAK decomposition
72    KAK,
73    /// Use Euler decomposition
74    Euler,
75    /// Use optimal decomposition
76    Optimal,
77    /// Hardware-specific decomposition
78    HardwareOptimized,
79}
80
81/// Routing strategies
82#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
83pub enum RoutingStrategy {
84    /// SABRE routing algorithm
85    SABRE,
86    /// Stochastic routing
87    Stochastic,
88    /// Look-ahead routing
89    LookAhead,
90    /// ML-based routing
91    MachineLearning,
92    /// Hybrid approach
93    Hybrid,
94}
95
96/// Optimization strategies
97#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
98pub enum OptimizationStrategy {
99    /// Gate cancellation
100    GateCancellation,
101    /// Gate fusion
102    GateFusion,
103    /// Commutation analysis
104    Commutation,
105    /// Template matching
106    TemplateMatching,
107    /// Peephole optimization
108    Peephole,
109    /// All optimizations
110    All,
111}
112
113/// Error mitigation strategies
114#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
115pub enum MitigationStrategy {
116    /// Zero noise extrapolation
117    ZNE,
118    /// Probabilistic error cancellation
119    PEC,
120    /// Symmetry verification
121    SymmetryVerification,
122    /// Virtual distillation
123    VirtualDistillation,
124    /// Dynamical decoupling
125    DynamicalDecoupling,
126}