CellDelayModel

Trait CellDelayModel 

Source
pub trait CellDelayModel<N: NetlistIds>: CellModel<N> + DelayBase {
    // Required methods
    fn cell_output(
        &self,
        netlist: &N,
        arc: &CellDelayArc<N::PinId>,
        input_signal: &Self::Signal,
        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,
    ) -> impl Iterator<Item = CellDelayArc<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§

Source

fn cell_output( &self, netlist: &N, arc: &CellDelayArc<N::PinId>, input_signal: &Self::Signal, 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.

Source

fn delay_arcs( &self, netlist: &N, cell_id: &N::CellId, ) -> impl Iterator<Item = CellDelayArc<N::PinId>> + '_

Iterate over the output pins of all delay arcs starting at related_pin.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<N: NetlistIds, CDM: CellDelayModel<N> + ?Sized> CellDelayModel<N> for &CDM

Source§

fn cell_output( &self, netlist: &N, arc: &CellDelayArc<N::PinId>, input_signal: &Self::Signal, output_load: &Self::Load, other_inputs: &impl Fn(&N::PinId) -> Option<Self::LogicValue>, ) -> Option<Self::Signal>

Source§

fn delay_arcs( &self, netlist: &N, cell_id: &N::CellId, ) -> impl Iterator<Item = CellDelayArc<N::PinId>> + '_

Implementors§