Struct libreda_sta::models::clock_tag::ClockAwareInterconnectModel
source · pub struct ClockAwareInterconnectModel<M> { /* private fields */ }Expand description
Wrapper around interconnect delay models.
Used to keep the link between signals and their clock domains. The data-structure is zero-cost for the interconnect model. The data-structure for the signals gets larger because of the additional clock ID.
Implementations§
source§impl<M> ClockAwareInterconnectModel<M>
impl<M> ClockAwareInterconnectModel<M>
Trait Implementations§
source§impl<M: Clone> Clone for ClockAwareInterconnectModel<M>
impl<M: Clone> Clone for ClockAwareInterconnectModel<M>
source§fn clone(&self) -> ClockAwareInterconnectModel<M>
fn clone(&self) -> ClockAwareInterconnectModel<M>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moresource§impl<M: Debug> Debug for ClockAwareInterconnectModel<M>
impl<M: Debug> Debug for ClockAwareInterconnectModel<M>
source§impl<M> DelayBase for ClockAwareInterconnectModel<M>where
M: DelayBase,
impl<M> DelayBase for ClockAwareInterconnectModel<M>where
M: DelayBase,
Delegate trait implementation to the inner model.
§type Delay = <M as DelayBase>::Delay
type Delay = <M as DelayBase>::Delay
Type representing a delay.
This can be as simple as a
f64 or more complicated such as a probability distribution.source§impl<M, N> InterconnectDelayModel<N> for ClockAwareInterconnectModel<M>where
N: NetlistBase,
M: InterconnectDelayModel<N>,
impl<M, N> InterconnectDelayModel<N> for ClockAwareInterconnectModel<M>where
N: NetlistBase,
M: InterconnectDelayModel<N>,
source§fn interconnect_output(
&self,
netlist: &N,
source_terminal: &TerminalId<N>,
input_signal: &Self::Signal,
target_terminal: &TerminalId<N>,
output_load: &Self::Load
) -> Option<Self::Signal>
fn interconnect_output( &self, netlist: &N, source_terminal: &TerminalId<N>, input_signal: &Self::Signal, target_terminal: &TerminalId<N>, output_load: &Self::Load ) -> Option<Self::Signal>
source§impl<M> LoadBase for ClockAwareInterconnectModel<M>where
M: LoadBase,
impl<M> LoadBase for ClockAwareInterconnectModel<M>where
M: LoadBase,
Delegate trait implementation to the inner model.
source§impl<M> TimingBase for ClockAwareInterconnectModel<M>where
M: TimingBase,
impl<M> TimingBase for ClockAwareInterconnectModel<M>where
M: TimingBase,
Delegate trait implementation to the inner model.
§type Signal = SignalWithClock<<M as TimingBase>::Signal>
type Signal = SignalWithClock<<M as TimingBase>::Signal>
Representation of signals at input or output pins.
In case of the Non-linear delay model (NDLM) this could be a bundle of the slew rate
and the delay but also the polarity of the signal.
But this type could as well also be a statistical representation of a signal, e.g. a probability
distribution of arrival times.
§type LogicValue = <M as TimingBase>::LogicValue
type LogicValue = <M as TimingBase>::LogicValue
Type of logic value.
Typically this might be a three-valued type which represents logical
0, 1 and ‘unknown’.
The default is typically ‘unknown’.
This is used to specify static input signals when evaluating cell delays or constraints.Auto Trait Implementations§
impl<M> Freeze for ClockAwareInterconnectModel<M>where
M: Freeze,
impl<M> RefUnwindSafe for ClockAwareInterconnectModel<M>where
M: RefUnwindSafe,
impl<M> Send for ClockAwareInterconnectModel<M>where
M: Send,
impl<M> Sync for ClockAwareInterconnectModel<M>where
M: Sync,
impl<M> Unpin for ClockAwareInterconnectModel<M>where
M: Unpin,
impl<M> UnwindSafe for ClockAwareInterconnectModel<M>where
M: UnwindSafe,
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