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