Recti 1.2.4
Loading...
Searching...
No Matches
Public Member Functions | List of all members
recti::LinearDelayCalculator Class Reference

Implements a simple linear delay model. More...

#include <dme_algorithm.hpp>

Inheritance diagram for recti::LinearDelayCalculator:
Inheritance graph
[legend]
Collaboration diagram for recti::LinearDelayCalculator:
Collaboration graph
[legend]

Public Member Functions

 LinearDelayCalculator (double delay_per_unit=1.0, double capacitance_per_unit=1.0)
 
double calculate_wire_delay (int length, double) const override
 Calculates the delay of a wire segment.
 
double calculate_wire_delay_per_unit (double) const override
 Calculates the delay per unit length of a wire.
 
double calculate_wire_capacitance (int length) const override
 Calculates the capacitance of a wire segment.
 
TappingResult calculate_tapping_point (int distance, double left_delay, double right_delay, double, double) const override
 Linear-model tapping point.
 
- Public Member Functions inherited from recti::DelayCalculator
 DelayCalculator ()=default
 
 DelayCalculator (const DelayCalculator &)=default
 
DelayCalculatoroperator= (const DelayCalculator &)=default
 
 DelayCalculator (DelayCalculator &&)=default
 
DelayCalculatoroperator= (DelayCalculator &&)=default
 
virtual ~DelayCalculator ()=default
 

Detailed Description

Implements a simple linear delay model.

In this model, delay is directly proportional to the wire length. Delay = delay_per_unit * length. Capacitance = capacitance_per_unit * length.

Constructor & Destructor Documentation

◆ LinearDelayCalculator()

recti::LinearDelayCalculator::LinearDelayCalculator ( double  delay_per_unit = 1.0,
double  capacitance_per_unit = 1.0 
)
inline

Member Function Documentation

◆ calculate_tapping_point()

TappingResult recti::LinearDelayCalculator::calculate_tapping_point ( int  distance,
double  left_delay,
double  right_delay,
double  ,
double   
) const
overridevirtual

Linear-model tapping point.

extend_left = round((skew / delay_per_unit + distance) / 2)

When the raw extend_left falls below 0 or above distance, the value is clamped and delay_left is set to the delay of the opposite child (the one that does not need elongation). The raw value is preserved in raw_extend_left so that the caller can apply the original elongation wire-length rules.

Implements recti::DelayCalculator.

◆ calculate_wire_capacitance()

double recti::LinearDelayCalculator::calculate_wire_capacitance ( int  length) const
inlineoverridevirtual

Calculates the capacitance of a wire segment.

Parameters
lengthThe length of the wire.
Returns
The calculated wire capacitance.

Implements recti::DelayCalculator.

◆ calculate_wire_delay()

double recti::LinearDelayCalculator::calculate_wire_delay ( int  length,
double  load_capacitance 
) const
inlineoverridevirtual

Calculates the delay of a wire segment.

Parameters
lengthThe length of the wire segment.
load_capacitanceThe total capacitance driven by this wire segment.
Returns
The calculated wire delay in time units.

Implements recti::DelayCalculator.

◆ calculate_wire_delay_per_unit()

double recti::LinearDelayCalculator::calculate_wire_delay_per_unit ( double  load_capacitance) const
inlineoverridevirtual

Calculates the delay per unit length of a wire.

Parameters
load_capacitanceThe total capacitance driven by this wire segment.
Returns
The delay per unit length in time units per length unit.

Implements recti::DelayCalculator.


The documentation for this class was generated from the following file: