ElectricalDriverMultiplier.h revision 10447
110447Snilay@cs.wisc.edu#ifndef __DSENT_MODEL_ELECTRICAL_DRIVER_MULTIPLIER_H__
210447Snilay@cs.wisc.edu#define __DSENT_MODEL_ELECTRICAL_DRIVER_MULTIPLIER_H__
310447Snilay@cs.wisc.edu
410447Snilay@cs.wisc.edu#include "util/CommonType.h"
510447Snilay@cs.wisc.edu#include "model/timing_graph/ElectricalTimingNode.h"
610447Snilay@cs.wisc.edu
710447Snilay@cs.wisc.edunamespace DSENT
810447Snilay@cs.wisc.edu{
910447Snilay@cs.wisc.edu    // Simple class that can be used to mimic the presence of multiple drivers
1010447Snilay@cs.wisc.edu    // output drivers (each driving one of the downstream loads) when only one
1110447Snilay@cs.wisc.edu    // such driver has been instantiated (such as models that take advantage of
1210447Snilay@cs.wisc.edu    // bit duplicattion). When the downsream loads differ in load cap, it
1310447Snilay@cs.wisc.edu    // just returns the largest of the caps
1410447Snilay@cs.wisc.edu    class ElectricalDriverMultiplier : public ElectricalTimingNode
1510447Snilay@cs.wisc.edu    {
1610447Snilay@cs.wisc.edu        public:
1710447Snilay@cs.wisc.edu            ElectricalDriverMultiplier(const String& instance_name_, ElectricalModel* model_);
1810447Snilay@cs.wisc.edu            virtual ~ElectricalDriverMultiplier();
1910447Snilay@cs.wisc.edu
2010447Snilay@cs.wisc.edu        public:
2110447Snilay@cs.wisc.edu            // Calculate drive resistance of this node;
2210447Snilay@cs.wisc.edu            double calculateDriveRes(double input_drive_res_) const;
2310447Snilay@cs.wisc.edu            // Calculate wiring delay (or net delay)
2410447Snilay@cs.wisc.edu            double calculateDelay() const;
2510447Snilay@cs.wisc.edu            // Calculate transition
2610447Snilay@cs.wisc.edu            double calculateTransition() const;
2710447Snilay@cs.wisc.edu            // get total amount of downstream load capacitance
2810447Snilay@cs.wisc.edu            double getTotalDownstreamCap() const;
2910447Snilay@cs.wisc.edu
3010447Snilay@cs.wisc.edu        private:
3110447Snilay@cs.wisc.edu            // Disable copy constructor
3210447Snilay@cs.wisc.edu            ElectricalDriverMultiplier(const ElectricalDriverMultiplier& net_);
3310447Snilay@cs.wisc.edu
3410447Snilay@cs.wisc.edu        private:
3510447Snilay@cs.wisc.edu            // Name of this instance
3610447Snilay@cs.wisc.edu            String m_instance_name_;
3710447Snilay@cs.wisc.edu    };
3810447Snilay@cs.wisc.edu
3910447Snilay@cs.wisc.edu} // namespace DSENT
4010447Snilay@cs.wisc.edu
4110447Snilay@cs.wisc.edu#endif // __DSENT_MODEL_ELECTRICAL_DRIVER_MULTIPLIER_H__
4210447Snilay@cs.wisc.edu
43