use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum SchedulePolicy {
Serial,
Concurrent,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct TimingOptions {
pub resource_births: Vec<u64>,
pub dependencies: Vec<Vec<usize>>,
pub policy: SchedulePolicy,
pub feed_forward_ticks: u64,
pub analyzer_reset_ticks: u64,
}
impl TimingOptions {
pub fn serial(resources: usize, fusions: usize) -> Self {
Self {
resource_births: vec![0; resources],
dependencies: vec![vec![]; fusions],
policy: SchedulePolicy::Serial,
feed_forward_ticks: 0,
analyzer_reset_ticks: 0,
}
}
}