ElectricalDriverMultiplier.cc revision 10447:a465576671d4
1 2#include "model/timing_graph/ElectricalDriverMultiplier.h" 3#include "model/timing_graph/ElectricalLoad.h" 4 5namespace DSENT 6{ 7 //------------------------------------------------------------------------- 8 // Electrical Net 9 //------------------------------------------------------------------------- 10 11 ElectricalDriverMultiplier::ElectricalDriverMultiplier(const String& instance_name_, ElectricalModel* model_) 12 : ElectricalTimingNode(instance_name_, model_) 13 { 14 15 } 16 17 ElectricalDriverMultiplier::~ElectricalDriverMultiplier() 18 { 19 20 } 21 22 double ElectricalDriverMultiplier::calculateDriveRes( double input_drive_res_) const 23 { 24 return input_drive_res_; 25 } 26 27 double ElectricalDriverMultiplier::calculateDelay() const 28 { 29 // This is just a model helper element, it does not contribute delay 30 return 0; 31 } 32 33 double ElectricalDriverMultiplier::calculateTransition() const 34 { 35 return getMaxUpstreamRes() * getTotalDownstreamCap(); 36 } 37 38 double ElectricalDriverMultiplier::getTotalDownstreamCap() const 39 { 40 // Finds the max of the load caps (as opposed to summing) 41 double max_cap = 0; 42 vector<ElectricalTimingNode*>* downstream_nodes = ElectricalTimingNode::getDownstreamNodes(); 43 for (unsigned int i = 0; i < downstream_nodes->size(); ++i) 44 { 45 max_cap = std::max(max_cap, downstream_nodes->at(i)->getTotalDownstreamCap()); 46 } 47 48 return max_cap; 49 } 50 51} // namespace DSENT 52 53 54