ElectricalNet.cc revision 10447:a465576671d4
1 2#include "model/timing_graph/ElectricalNet.h" 3#include "model/timing_graph/ElectricalLoad.h" 4 5namespace DSENT 6{ 7 //------------------------------------------------------------------------- 8 // Electrical Net 9 //------------------------------------------------------------------------- 10 11 ElectricalNet::ElectricalNet(const String& instance_name_, ElectricalModel* model_) 12 : ElectricalTimingNode(instance_name_, model_), m_distributed_res_(0), m_distributed_cap_(0) 13 { 14 15 } 16 17 ElectricalNet::~ElectricalNet() 18 { 19 20 } 21 22 double ElectricalNet::calculateDelay() const 23 { 24 // Remember that this is a pi model, delay is distributed cap * distributed_res / 2 + 25 // distributed res * (other downstream caps) 26 return 0.693 * (getTotalDownstreamCap() - m_distributed_cap_ / 2) * m_distributed_res_; 27 } 28 29 double ElectricalNet::calculateTransition() const 30 { 31 return 1.386 * getMaxUpstreamRes() * (m_distributed_cap_ * 0.2 + ElectricalTimingNode::getTotalDownstreamCap()); 32 } 33 34 double ElectricalNet::getMaxUpstreamRes() const 35 { 36 return m_distributed_res_ + ElectricalTimingNode::getMaxUpstreamRes(); 37 } 38 39 double ElectricalNet::getTotalDownstreamCap() const 40 { 41 return m_distributed_cap_ + ElectricalTimingNode::getTotalDownstreamCap(); 42 } 43 44 void ElectricalNet::setDistributedCap(double distributed_cap_) 45 { 46 m_distributed_cap_ = distributed_cap_; 47 return; 48 } 49 50 void ElectricalNet::setDistributedRes(double distributed_res_) 51 { 52 m_distributed_res_ = distributed_res_; 53 return; 54 } 55 56 double ElectricalNet::getDistributedCap() const 57 { 58 return m_distributed_cap_; 59 } 60 61 double ElectricalNet::getDistributedRes() const 62 { 63 return m_distributed_res_; 64 } 65 66 bool ElectricalNet::isNet() const 67 { 68 return true; 69 } 70 71} // namespace DSENT 72 73 74