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