pub struct ParNodes {
pub group_name: Id,
pub latency: u64,
pub num_repeats: u64,
pub threads: Vec<(Node, (u64, u64))>,
}
Expand description
Represents a group of Nodes
that execute in parallel.
Fields§
§group_name: Id
Name of the par_group
that fires off the threads
latency: u64
Latency
num_repeats: u64
Num Repeats
threads: Vec<(Node, (u64, u64))>
(Thread, interval thread is active). Interval thread is active should always start at 0.
Implementations§
Source§impl ParNodes
impl ParNodes
Sourcepub fn instantiate_fsms(
&mut self,
builder: &mut Builder<'_>,
coloring: &HashMap<Id, Id>,
colors_to_max_values: &HashMap<Id, (u64, u64)>,
colors_to_fsm: &mut HashMap<Id, (Option<RRC<StaticFSM>>, Option<RRC<StaticFSM>>)>,
one_hot_cutoff: u64,
)
pub fn instantiate_fsms( &mut self, builder: &mut Builder<'_>, coloring: &HashMap<Id, Id>, colors_to_max_values: &HashMap<Id, (u64, u64)>, colors_to_fsm: &mut HashMap<Id, (Option<RRC<StaticFSM>>, Option<RRC<StaticFSM>>)>, one_hot_cutoff: u64, )
Instantiates FSMs by recursively instantiating FSM for each thread.
Sourcepub fn count_to_n(
&mut self,
builder: &mut Builder<'_>,
incr_start_cond: Option<Guard<Nothing>>,
)
pub fn count_to_n( &mut self, builder: &mut Builder<'_>, incr_start_cond: Option<Guard<Nothing>>, )
Counts to N by recursively calling count_to_n
on each thread.
Sourcepub fn realize(
&mut self,
ignore_timing_guards: bool,
static_groups: &Vec<RRC<StaticGroup>>,
reset_early_map: &mut HashMap<Id, Id>,
fsm_info_map: &mut HashMap<Id, (Id, Guard<Nothing>, Guard<Nothing>)>,
group_rewrites: &mut PortRewriteMap,
builder: &mut Builder<'_>,
)
pub fn realize( &mut self, ignore_timing_guards: bool, static_groups: &Vec<RRC<StaticGroup>>, reset_early_map: &mut HashMap<Id, Id>, fsm_info_map: &mut HashMap<Id, (Id, Guard<Nothing>, Guard<Nothing>)>, group_rewrites: &mut PortRewriteMap, builder: &mut Builder<'_>, )
Realizes static groups into dynamic group.
Sourcepub fn get_longest_node(&mut self) -> &mut SingleNode
pub fn get_longest_node(&mut self) -> &mut SingleNode
Recursively searches each thread to get the longest (in terms of cycle counts) SingleNode.
Source§impl ParNodes
Used to add conflicts for graph coloring for sharing FSMs.
See the equivalent SingleNode implementation for more details.
impl ParNodes
Used to add conflicts for graph coloring for sharing FSMs. See the equivalent SingleNode implementation for more details.
pub fn get_all_nodes(&self) -> Vec<Id>
pub fn add_conflicts(&self, conflict_graph: &mut GraphColoring<Id>)
pub fn get_max_value<F>(&self, name: &Id, f: &F) -> u64
Auto Trait Implementations§
impl Freeze for ParNodes
impl !RefUnwindSafe for ParNodes
impl !Send for ParNodes
impl !Sync for ParNodes
impl Unpin for ParNodes
impl !UnwindSafe for ParNodes
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