pub trait TimingQuery: NetlistIds {
type NetlistIds: NetlistIds;
type ArrivalTime;
type RequiredArrivalTime;
type Slack: Debug;
// Required methods
fn report_aat(
&self,
pin: TerminalId<Self::NetlistIds>,
edge_polarity: RiseFall,
) -> Option<Self::ArrivalTime>;
fn report_rat(
&self,
pin: TerminalId<Self::NetlistIds>,
edge_polarity: RiseFall,
) -> Option<Self::RequiredArrivalTime>;
fn report_slack(
&self,
pin: TerminalId<Self::NetlistIds>,
edge_polarity: RiseFall,
) -> Option<Self::Slack>;
fn report_timing(&self) -> Vec<()>;
}Expand description
Enhance a netlist with timing queries.
Required Associated Types§
Sourcetype NetlistIds: NetlistIds
type NetlistIds: NetlistIds
Type which defines IDs of netlist components.
Sourcetype ArrivalTime
type ArrivalTime
Type for the actual arrival times.
Sourcetype RequiredArrivalTime
type RequiredArrivalTime
Type for required arrival times.
Required Methods§
Sourcefn report_aat(
&self,
pin: TerminalId<Self::NetlistIds>,
edge_polarity: RiseFall,
) -> Option<Self::ArrivalTime>
fn report_aat( &self, pin: TerminalId<Self::NetlistIds>, edge_polarity: RiseFall, ) -> Option<Self::ArrivalTime>
Report arrival time.
Assumes prior call to update_timing if the netlist was modified. Might panic otherwise.
Returns an Option because some it is possible that no arrival time is defined (for example
for a floating part of the netlist which is not attached to a clock).
Sourcefn report_rat(
&self,
pin: TerminalId<Self::NetlistIds>,
edge_polarity: RiseFall,
) -> Option<Self::RequiredArrivalTime>
fn report_rat( &self, pin: TerminalId<Self::NetlistIds>, edge_polarity: RiseFall, ) -> Option<Self::RequiredArrivalTime>
Report required arrival time.
Assumes prior call to update_timing if the netlist was modified. Might panic otherwise.
Sourcefn report_slack(
&self,
pin: TerminalId<Self::NetlistIds>,
edge_polarity: RiseFall,
) -> Option<Self::Slack>
fn report_slack( &self, pin: TerminalId<Self::NetlistIds>, edge_polarity: RiseFall, ) -> Option<Self::Slack>
Report slack (arrival time - required arrival time).
Assumes prior call to update_timing if the netlist was modified. Might panic otherwise.
Sourcefn report_timing(&self) -> Vec<()>
fn report_timing(&self) -> Vec<()>
Report a list of worst paths.