ElectricalDriver.h revision 10447
110447Snilay@cs.wisc.edu#ifndef __DSENT_MODEL_ELECTRICAL_DRIVER_H__ 210447Snilay@cs.wisc.edu#define __DSENT_MODEL_ELECTRICAL_DRIVER_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 class ElectricalModel; 1010447Snilay@cs.wisc.edu 1110447Snilay@cs.wisc.edu class ElectricalDriver : public ElectricalTimingNode 1210447Snilay@cs.wisc.edu { 1310447Snilay@cs.wisc.edu public: 1410447Snilay@cs.wisc.edu ElectricalDriver(const String& instance_name_, ElectricalModel* model_, bool sizable_); 1510447Snilay@cs.wisc.edu virtual ~ElectricalDriver(); 1610447Snilay@cs.wisc.edu 1710447Snilay@cs.wisc.edu public: 1810447Snilay@cs.wisc.edu // Set the output resistance of this driver 1910447Snilay@cs.wisc.edu void setOutputRes(double output_res_); 2010447Snilay@cs.wisc.edu // Get the output resistance of this driver 2110447Snilay@cs.wisc.edu double getOutputRes() const; 2210447Snilay@cs.wisc.edu // Calculate delay due to total load capacitance 2310447Snilay@cs.wisc.edu double calculateDelay() const; 2410447Snilay@cs.wisc.edu // Calculate transition 2510447Snilay@cs.wisc.edu double calculateTransition() const; 2610447Snilay@cs.wisc.edu // get maximum of upstream drive resistance 2710447Snilay@cs.wisc.edu double getMaxUpstreamRes() const; 2810447Snilay@cs.wisc.edu 2910447Snilay@cs.wisc.edu // Get whether the driver is sizable 3010447Snilay@cs.wisc.edu bool isSizable() const; 3110447Snilay@cs.wisc.edu // Return true if the instance has minimum driving strength 3210447Snilay@cs.wisc.edu bool hasMinDrivingStrength() const; 3310447Snilay@cs.wisc.edu // Return true if the instance has maximum driving strength 3410447Snilay@cs.wisc.edu bool hasMaxDrivingStrength() const; 3510447Snilay@cs.wisc.edu // Increase driving strength index by 1 3610447Snilay@cs.wisc.edu void increaseDrivingStrength(); 3710447Snilay@cs.wisc.edu // Decrease driving strength index by 1 3810447Snilay@cs.wisc.edu void decreaseDrivingStrength(); 3910447Snilay@cs.wisc.edu 4010447Snilay@cs.wisc.edu bool isDriver() const; 4110447Snilay@cs.wisc.edu 4210447Snilay@cs.wisc.edu private: 4310447Snilay@cs.wisc.edu // Disable copy constructor 4410447Snilay@cs.wisc.edu ElectricalDriver(const ElectricalDriver& port_); 4510447Snilay@cs.wisc.edu 4610447Snilay@cs.wisc.edu private: 4710447Snilay@cs.wisc.edu // Name of this instance 4810447Snilay@cs.wisc.edu String m_instance_name_; 4910447Snilay@cs.wisc.edu // Output resistance 5010447Snilay@cs.wisc.edu double m_output_res_; 5110447Snilay@cs.wisc.edu // Sizable flag 5210447Snilay@cs.wisc.edu bool m_sizable_; 5310447Snilay@cs.wisc.edu }; 5410447Snilay@cs.wisc.edu} // namespace DSENT 5510447Snilay@cs.wisc.edu 5610447Snilay@cs.wisc.edu#endif // __DSENT_MODEL_ELECTRICAL_DRIVER_H__ 5710447Snilay@cs.wisc.edu 58