|
Recti 1.2.4
|
Implements the Elmore delay model for RC trees. More...
#include <dme_algorithm.hpp>


Public Member Functions | |
| ElmoreDelayCalculator (double unit_resistance=1.0, double unit_capacitance=1.0) | |
| double | calculate_wire_delay (int length, double load_capacitance) const override |
| Calculates the delay of a wire segment. | |
| double | calculate_wire_delay_per_unit (double load_capacitance) 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 left_capacitance, double right_capacitance) const override |
| Elmore-model tapping point. | |
Public Member Functions inherited from recti::DelayCalculator | |
| DelayCalculator ()=default | |
| DelayCalculator (const DelayCalculator &)=default | |
| DelayCalculator & | operator= (const DelayCalculator &)=default |
| DelayCalculator (DelayCalculator &&)=default | |
| DelayCalculator & | operator= (DelayCalculator &&)=default |
| virtual | ~DelayCalculator ()=default |
Implements the Elmore delay model for RC trees.
The Elmore delay model is a widely used approximation for delay in RC interconnects. It considers both the resistance and capacitance of the wires and the downstream load. Delay = R_wire * (C_wire/2 + C_load).
|
inline |
|
overridevirtual |
Elmore-model tapping point.
Solves for the optimal tapping point z (fraction of distance from left) to achieve prescribed skew between the children considering their delays and capacitances:
z = (skew + R*(C_r + C_w/2)) / (R*(C_w + C_r + C_l))
where R = distance * unit_resistance, C_w = distance * unit_capacitance. When the raw extend_left falls below 0 or above distance, clamping and elongation logic applies (see LinearDelayCalculator).
Implements recti::DelayCalculator.
|
inlineoverridevirtual |
Calculates the capacitance of a wire segment.
| length | The length of the wire. |
Implements recti::DelayCalculator.
|
inlineoverridevirtual |
Calculates the delay of a wire segment.
| length | The length of the wire segment. |
| load_capacitance | The total capacitance driven by this wire segment. |
Implements recti::DelayCalculator.
|
inlineoverridevirtual |
Calculates the delay per unit length of a wire.
| load_capacitance | The total capacitance driven by this wire segment. |
Implements recti::DelayCalculator.