use std::time::Duration;
#[derive(Debug, Clone)]
pub struct ResourceConstraints {
pub max_physical_qubits: usize,
pub max_circuit_depth: usize,
pub max_correction_time: Duration,
pub memory_constraints: MemoryConstraints,
pub connectivity_constraints: ConnectivityConstraints,
}
#[derive(Debug, Clone)]
pub struct MemoryConstraints {
pub syndrome_memory: usize,
pub quantum_memory: usize,
pub lookup_table_memory: usize,
}
#[derive(Debug, Clone)]
pub struct ConnectivityConstraints {
pub connectivity_graph: Vec<Vec<bool>>,
pub max_interaction_range: usize,
pub routing_overhead: f64,
}
impl Default for ResourceConstraints {
fn default() -> Self {
Self {
max_physical_qubits: 1000,
max_circuit_depth: 10_000,
max_correction_time: Duration::from_secs(60),
memory_constraints: MemoryConstraints::default(),
connectivity_constraints: ConnectivityConstraints::default(),
}
}
}
impl Default for MemoryConstraints {
fn default() -> Self {
Self {
syndrome_memory: 1024 * 1024, quantum_memory: 1024,
lookup_table_memory: 1024 * 1024, }
}
}
impl Default for ConnectivityConstraints {
fn default() -> Self {
Self {
connectivity_graph: vec![],
max_interaction_range: 10,
routing_overhead: 1.2,
}
}
}