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