pub struct StaticSchedule<'b, 'a: 'b> {
pub builder: &'b mut Builder<'a>,
pub state: u64,
pub state2assigns: HashMap<u64, Vec<Assignment<Nothing>>>,
pub state2trans: HashMap<u64, Transition>,
}
Expand description
An instance of StaticSchedule
is constrainted to live at least as long as
the component in which the static island that it represents lives.
Fields§
§builder: &'b mut Builder<'a>
Builder construct to add hardware to the component it’s built from
state: u64
Number of cycles to which the static schedule should count up
state2assigns: HashMap<u64, Vec<Assignment<Nothing>>>
Maps every FSM state to assignments that should be active in that state
state2trans: HashMap<u64, Transition>
Parital map from FSM state to transitions out of that state. If a state has no mapping, assume it’s an unconditional transition to state + 1.
Implementations§
Source§impl StaticSchedule<'_, '_>
impl StaticSchedule<'_, '_>
pub fn leave_one_state_condition( &mut self, guard: Guard<Nothing>, sen: &StaticEnable, ) -> Guard<Nothing>
pub fn register_transitions( &mut self, curr_state: u64, transitions_to_curr: &mut Vec<IncompleteTransition>, and_guard: Guard<Nothing>, )
pub fn build_fsm_pieces( &mut self, fsm: RRC<FSM>, ) -> (Vec<Vec<Assignment<Nothing>>>, Vec<Transition>, Vec<RRC<Cell>>)
Trait Implementations§
Auto Trait Implementations§
impl<'b, 'a> Freeze for StaticSchedule<'b, 'a>
impl<'b, 'a> !RefUnwindSafe for StaticSchedule<'b, 'a>
impl<'b, 'a> !Send for StaticSchedule<'b, 'a>
impl<'b, 'a> !Sync for StaticSchedule<'b, 'a>
impl<'b, 'a> Unpin for StaticSchedule<'b, 'a>
impl<'b, 'a> !UnwindSafe for StaticSchedule<'b, 'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more