Trait libreda_sta::traits::cell_delay_model::CellDelayModel
source · pub trait CellDelayModel<N: NetlistBase>: CellModel<N> + DelayBase {
// Required methods
fn cell_output(
&self,
netlist: &N,
input_pin: &N::PinId,
input_signal: &Self::Signal,
output_pin: &N::PinId,
output_load: &Self::Load,
other_inputs: &impl Fn(&N::PinId) -> Option<Self::LogicValue>
) -> Option<Self::Signal>;
fn delay_arcs(
&self,
netlist: &N,
cell_id: &N::CellId
) -> Box<dyn Iterator<Item = CellDelayArc<N::PinId>> + '_>;
fn delay_arcs_reversed(
&self,
output_pin: &N
) -> Box<dyn Iterator<Item = N::PinId> + '_>;
// Provided method
fn delay_arcs_from_pin(
&self,
netlist: &N,
input_pin: &N::PinId
) -> Box<dyn Iterator<Item = N::PinId> + '_> { ... }
}Expand description
Define the computation of the cell delay.
A combinational delay from an input i to an output o should depend on
- what is attached to the output
o(the load), - on what signal arrives at input
i - and on the state of the other inputs.
Required Methods§
sourcefn cell_output(
&self,
netlist: &N,
input_pin: &N::PinId,
input_signal: &Self::Signal,
output_pin: &N::PinId,
output_load: &Self::Load,
other_inputs: &impl Fn(&N::PinId) -> Option<Self::LogicValue>
) -> Option<Self::Signal>
fn cell_output( &self, netlist: &N, input_pin: &N::PinId, input_signal: &Self::Signal, output_pin: &N::PinId, output_load: &Self::Load, other_inputs: &impl Fn(&N::PinId) -> Option<Self::LogicValue> ) -> Option<Self::Signal>
Propagate a signal from the input_pin to the output_pin.
This is used as a more general form of computing the cell delay.
The input_pin and the output_pin must be pins of the same cell.
Parameters
other_inputs: Values at other input pins. If a value is not specified, this implies the default (for example ‘unkown’).
Returns the output signal or None if there is no delay arc from the selected input to selected output.
sourcefn delay_arcs(
&self,
netlist: &N,
cell_id: &N::CellId
) -> Box<dyn Iterator<Item = CellDelayArc<N::PinId>> + '_>
fn delay_arcs( &self, netlist: &N, cell_id: &N::CellId ) -> Box<dyn Iterator<Item = CellDelayArc<N::PinId>> + '_>
Iterate over the output pins of all delay arcs starting at related_pin.
sourcefn delay_arcs_reversed(
&self,
output_pin: &N
) -> Box<dyn Iterator<Item = N::PinId> + '_>
fn delay_arcs_reversed( &self, output_pin: &N ) -> Box<dyn Iterator<Item = N::PinId> + '_>
Iterate over the related pins of all delay arcs ending at output_pin.
Provided Methods§
sourcefn delay_arcs_from_pin(
&self,
netlist: &N,
input_pin: &N::PinId
) -> Box<dyn Iterator<Item = N::PinId> + '_>
fn delay_arcs_from_pin( &self, netlist: &N, input_pin: &N::PinId ) -> Box<dyn Iterator<Item = N::PinId> + '_>
Iterate over the output pins of all delay arcs starting at related_pin.