quantrs2_circuit/scirs2_cross_compilation_enhanced/
config.rs

1//! Configuration types and enums for cross-compilation
2//!
3//! This module contains all configuration structures and enumeration types
4//! used by the enhanced cross-compiler.
5
6use crate::optimization::pass_manager::OptimizationLevel;
7use serde::{Deserialize, Serialize};
8
9/// Enhanced cross-compilation configuration
10#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct EnhancedCrossCompilationConfig {
12    /// Base compilation configuration
13    pub base_config: CrossCompilationConfig,
14
15    /// Enable ML-based optimization
16    pub enable_ml_optimization: bool,
17
18    /// Enable multi-stage compilation
19    pub enable_multistage_compilation: bool,
20
21    /// Enable target-specific optimization
22    pub enable_target_optimization: bool,
23
24    /// Enable real-time monitoring
25    pub enable_realtime_monitoring: bool,
26
27    /// Enable comprehensive validation
28    pub enable_comprehensive_validation: bool,
29
30    /// Enable visual compilation flow
31    pub enable_visual_flow: bool,
32
33    /// Source frameworks
34    pub source_frameworks: Vec<QuantumFramework>,
35
36    /// Target platforms
37    pub target_platforms: Vec<TargetPlatform>,
38
39    /// Compilation strategies
40    pub compilation_strategies: Vec<CompilationStrategy>,
41
42    /// Optimization passes
43    pub optimization_passes: Vec<OptimizationPass>,
44}
45
46impl Default for EnhancedCrossCompilationConfig {
47    fn default() -> Self {
48        Self {
49            base_config: CrossCompilationConfig::default(),
50            enable_ml_optimization: true,
51            enable_multistage_compilation: true,
52            enable_target_optimization: true,
53            enable_realtime_monitoring: true,
54            enable_comprehensive_validation: true,
55            enable_visual_flow: true,
56            source_frameworks: vec![
57                QuantumFramework::QuantRS2,
58                QuantumFramework::Qiskit,
59                QuantumFramework::Cirq,
60                QuantumFramework::PennyLane,
61            ],
62            target_platforms: vec![
63                TargetPlatform::IBMQuantum,
64                TargetPlatform::GoogleSycamore,
65                TargetPlatform::IonQ,
66                TargetPlatform::Rigetti,
67            ],
68            compilation_strategies: vec![
69                CompilationStrategy::OptimizeDepth,
70                CompilationStrategy::OptimizeGateCount,
71                CompilationStrategy::OptimizeFidelity,
72            ],
73            optimization_passes: vec![
74                OptimizationPass::GateFusion,
75                OptimizationPass::RotationMerging,
76                OptimizationPass::CommutationAnalysis,
77            ],
78        }
79    }
80}
81
82/// Base cross-compilation configuration
83#[derive(Debug, Clone, Serialize, Deserialize)]
84pub struct CrossCompilationConfig {
85    /// Optimization level
86    pub optimization_level: OptimizationLevel,
87
88    /// Preserve semantics
89    pub preserve_semantics: bool,
90
91    /// Enable error correction
92    pub enable_error_correction: bool,
93
94    /// Validation threshold
95    pub validation_threshold: f64,
96}
97
98impl Default for CrossCompilationConfig {
99    fn default() -> Self {
100        Self {
101            optimization_level: OptimizationLevel::Medium,
102            preserve_semantics: true,
103            enable_error_correction: true,
104            validation_threshold: 0.999,
105        }
106    }
107}
108
109/// Quantum frameworks
110#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
111pub enum QuantumFramework {
112    QuantRS2,
113    Qiskit,
114    Cirq,
115    PennyLane,
116    PyQuil,
117    QSharp,
118    Braket,
119    OpenQASM,
120}
121
122/// Target platforms
123#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
124pub enum TargetPlatform {
125    IBMQuantum,
126    GoogleSycamore,
127    IonQ,
128    Rigetti,
129    Honeywell,
130    AWSBraket,
131    AzureQuantum,
132    Simulator,
133}
134
135/// Compilation strategies
136#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
137pub enum CompilationStrategy {
138    OptimizeDepth,
139    OptimizeGateCount,
140    OptimizeFidelity,
141    OptimizeExecutionTime,
142    BalancedOptimization,
143    CustomStrategy,
144}
145
146/// Optimization passes
147#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
148pub enum OptimizationPass {
149    GateFusion,
150    RotationMerging,
151    CommutationAnalysis,
152    TemplateMatching,
153    PeepholeOptimization,
154    GlobalPhaseOptimization,
155    NativeGateDecomposition,
156    LayoutOptimization,
157}