|
Recti 1.2.4
|
Abstract base class for delay calculation models. More...
#include <dme_algorithm.hpp>

Public Member Functions | |
| DelayCalculator ()=default | |
| DelayCalculator (const DelayCalculator &)=default | |
| DelayCalculator & | operator= (const DelayCalculator &)=default |
| DelayCalculator (DelayCalculator &&)=default | |
| DelayCalculator & | operator= (DelayCalculator &&)=default |
| virtual | ~DelayCalculator ()=default |
| virtual double | calculate_wire_delay (int length, double load_capacitance) const =0 |
| Calculates the delay of a wire segment. | |
| virtual double | calculate_wire_delay_per_unit (double load_capacitance) const =0 |
| Calculates the delay per unit length of a wire. | |
| virtual double | calculate_wire_capacitance (int length) const =0 |
| Calculates the capacitance of a wire segment. | |
| virtual TappingResult | calculate_tapping_point (int distance, double left_delay, double right_delay, double left_capacitance, double right_capacitance) const =0 |
| Determines the optimal tapping point for merging two subtrees to achieve prescribed skew. | |
Abstract base class for delay calculation models.
This class defines the interface for different delay models (e.g., Linear, Elmore) used in the DME algorithm to estimate wire delays and capacitances.
calculate_tapping_point is a pure function that takes scalar values and returns a TappingResult. All node mutation side effects (setting wire_length, need_elongation) are delegated to the caller.
|
default |
|
default |
|
default |
|
virtualdefault |
|
pure virtual |
Determines the optimal tapping point for merging two subtrees to achieve prescribed skew.
This pure method computes where a new parent node should be placed on the merging segment between two child nodes to balance their delays. It returns a TappingResult that contains both the clamped extend_left (in [0, distance]) and the raw pre-clamp value, enabling the caller to implement elongation logic (when the raw value falls outside [0, distance]).
| distance | The Manhattan distance between the merging segments. |
| left_delay | The delay at the left child. |
| right_delay | The delay at the right child. |
| left_capacitance | The capacitance of the left subtree. |
| right_capacitance | The capacitance of the right subtree. |
TappingResult containing the clamped extend_left, the raw raw_extend_left, and the resulting delay_left. Implemented in recti::ElmoreDelayCalculator, and recti::LinearDelayCalculator.
|
pure virtual |
Calculates the capacitance of a wire segment.
| length | The length of the wire. |
Implemented in recti::LinearDelayCalculator, and recti::ElmoreDelayCalculator.
|
pure virtual |
Calculates the delay of a wire segment.
| length | The length of the wire segment. |
| load_capacitance | The total capacitance driven by this wire segment. |
Implemented in recti::ElmoreDelayCalculator, and recti::LinearDelayCalculator.
|
pure virtual |
Calculates the delay per unit length of a wire.
| load_capacitance | The total capacitance driven by this wire segment. |
Implemented in recti::ElmoreDelayCalculator, and recti::LinearDelayCalculator.
|
default |
|
default |