ElectricalDriverMultiplier.h revision 10447:a465576671d4
12SN/A#ifndef __DSENT_MODEL_ELECTRICAL_DRIVER_MULTIPLIER_H__ 21762SN/A#define __DSENT_MODEL_ELECTRICAL_DRIVER_MULTIPLIER_H__ 32SN/A 42SN/A#include "util/CommonType.h" 52SN/A#include "model/timing_graph/ElectricalTimingNode.h" 62SN/A 72SN/Anamespace DSENT 82SN/A{ 92SN/A // Simple class that can be used to mimic the presence of multiple drivers 102SN/A // output drivers (each driving one of the downstream loads) when only one 112SN/A // such driver has been instantiated (such as models that take advantage of 122SN/A // bit duplicattion). When the downsream loads differ in load cap, it 132SN/A // just returns the largest of the caps 142SN/A class ElectricalDriverMultiplier : public ElectricalTimingNode 152SN/A { 162SN/A public: 172SN/A ElectricalDriverMultiplier(const String& instance_name_, ElectricalModel* model_); 182SN/A virtual ~ElectricalDriverMultiplier(); 192SN/A 202SN/A public: 212SN/A // Calculate drive resistance of this node; 222SN/A double calculateDriveRes(double input_drive_res_) const; 232SN/A // Calculate wiring delay (or net delay) 242SN/A double calculateDelay() const; 252SN/A // Calculate transition 262SN/A double calculateTransition() const; 272665Ssaidi@eecs.umich.edu // get total amount of downstream load capacitance 282760Sbinkertn@umich.edu double getTotalDownstreamCap() const; 292760Sbinkertn@umich.edu 302665Ssaidi@eecs.umich.edu private: 312SN/A // Disable copy constructor 322SN/A ElectricalDriverMultiplier(const ElectricalDriverMultiplier& net_); 332SN/A 34363SN/A private: 35363SN/A // Name of this instance 361354SN/A String m_instance_name_; 372SN/A }; 382SN/A 392SN/A} // namespace DSENT 402SN/A 412SN/A#endif // __DSENT_MODEL_ELECTRICAL_DRIVER_MULTIPLIER_H__ 422SN/A 43363SN/A