ElectricalDriverMultiplier.h revision 10447:a465576671d4
1#ifndef __DSENT_MODEL_ELECTRICAL_DRIVER_MULTIPLIER_H__
2#define __DSENT_MODEL_ELECTRICAL_DRIVER_MULTIPLIER_H__
3
4#include "util/CommonType.h"
5#include "model/timing_graph/ElectricalTimingNode.h"
6
7namespace DSENT
8{
9    // Simple class that can be used to mimic the presence of multiple drivers
10    // output drivers (each driving one of the downstream loads) when only one
11    // such driver has been instantiated (such as models that take advantage of
12    // bit duplicattion). When the downsream loads differ in load cap, it
13    // just returns the largest of the caps
14    class ElectricalDriverMultiplier : public ElectricalTimingNode
15    {
16        public:
17            ElectricalDriverMultiplier(const String& instance_name_, ElectricalModel* model_);
18            virtual ~ElectricalDriverMultiplier();
19
20        public:
21            // Calculate drive resistance of this node;
22            double calculateDriveRes(double input_drive_res_) const;
23            // Calculate wiring delay (or net delay)
24            double calculateDelay() const;
25            // Calculate transition
26            double calculateTransition() const;
27            // get total amount of downstream load capacitance
28            double getTotalDownstreamCap() const;
29
30        private:
31            // Disable copy constructor
32            ElectricalDriverMultiplier(const ElectricalDriverMultiplier& net_);
33
34        private:
35            // Name of this instance
36            String m_instance_name_;
37    };
38
39} // namespace DSENT
40
41#endif // __DSENT_MODEL_ELECTRICAL_DRIVER_MULTIPLIER_H__
42
43