quantrs2_circuit/scirs2_transpiler_enhanced/
passes.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct PerformanceConstraints {
8 pub max_depth: Option<usize>,
10
11 pub max_gates: Option<usize>,
13
14 pub max_execution_time: Option<f64>,
16
17 pub min_fidelity: Option<f64>,
19
20 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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
51pub enum TranspilationPass {
52 Decomposition(DecompositionStrategy),
54
55 Routing(RoutingStrategy),
57
58 Optimization(OptimizationStrategy),
60
61 ErrorMitigation(MitigationStrategy),
63
64 Custom(String),
66}
67
68#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
70pub enum DecompositionStrategy {
71 KAK,
73 Euler,
75 Optimal,
77 HardwareOptimized,
79}
80
81#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
83pub enum RoutingStrategy {
84 SABRE,
86 Stochastic,
88 LookAhead,
90 MachineLearning,
92 Hybrid,
94}
95
96#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
98pub enum OptimizationStrategy {
99 GateCancellation,
101 GateFusion,
103 Commutation,
105 TemplateMatching,
107 Peephole,
109 All,
111}
112
113#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
115pub enum MitigationStrategy {
116 ZNE,
118 PEC,
120 SymmetryVerification,
122 VirtualDistillation,
124 DynamicalDecoupling,
126}