StdCell.h revision 10447
110447Snilay@cs.wisc.edu#ifndef __DSENT_MODEL_STD_CELLS_STDCELL_H__ 210447Snilay@cs.wisc.edu#define __DSENT_MODEL_STD_CELLS_STDCELL_H__ 310447Snilay@cs.wisc.edu 410447Snilay@cs.wisc.edu#include "util/CommonType.h" 510447Snilay@cs.wisc.edu#include "model/ElectricalModel.h" 610447Snilay@cs.wisc.edu 710447Snilay@cs.wisc.edunamespace DSENT 810447Snilay@cs.wisc.edu{ 910447Snilay@cs.wisc.edu class StdCell : public ElectricalModel 1010447Snilay@cs.wisc.edu { 1110447Snilay@cs.wisc.edu public: 1210447Snilay@cs.wisc.edu StdCell(const String& instance_name_, const TechModel* tech_model_); 1310447Snilay@cs.wisc.edu virtual ~StdCell(); 1410447Snilay@cs.wisc.edu 1510447Snilay@cs.wisc.edu public: 1610447Snilay@cs.wisc.edu // Set a list of parameters needed to construct model 1710447Snilay@cs.wisc.edu virtual void initParameters(); 1810447Snilay@cs.wisc.edu // Set a list of properties needed to update model 1910447Snilay@cs.wisc.edu virtual void initProperties(); 2010447Snilay@cs.wisc.edu 2110447Snilay@cs.wisc.edu // Get PMOS to NMOS ratio 2210447Snilay@cs.wisc.edu double getPToNRatio() const; 2310447Snilay@cs.wisc.edu void setPToNRatio(double p_to_n_ratio_); 2410447Snilay@cs.wisc.edu // Get height of the standard cell taken by active transistors 2510447Snilay@cs.wisc.edu double getActiveHeight() const; 2610447Snilay@cs.wisc.edu void setActiveHeight(double active_height_); 2710447Snilay@cs.wisc.edu // Get total height of the standard cell including overheads 2810447Snilay@cs.wisc.edu double getTotalHeight() const; 2910447Snilay@cs.wisc.edu void setTotalHeight(double total_height_); 3010447Snilay@cs.wisc.edu 3110447Snilay@cs.wisc.edu // Construct the full model of the standard cell and cache 3210447Snilay@cs.wisc.edu // its contents to use for future copies of the standard cell 3310447Snilay@cs.wisc.edu virtual void cacheStdCell(StdCellLib* cell_lib_, double drive_strength_) = 0; 3410447Snilay@cs.wisc.edu 3510447Snilay@cs.wisc.edu protected: 3610447Snilay@cs.wisc.edu // Build the model, note that this is only available if the 3710447Snilay@cs.wisc.edu // standard cell has been cached (via cacheStdCellModel) 3810447Snilay@cs.wisc.edu virtual void constructModel() = 0; 3910447Snilay@cs.wisc.edu virtual void updateModel() = 0; 4010447Snilay@cs.wisc.edu 4110447Snilay@cs.wisc.edu private: 4210447Snilay@cs.wisc.edu // The PMOS to NMOS ratio 4310447Snilay@cs.wisc.edu double m_p_to_n_ratio_; 4410447Snilay@cs.wisc.edu // The height of the standard cell taken by active transitors 4510447Snilay@cs.wisc.edu double m_active_height_; 4610447Snilay@cs.wisc.edu // The total height of the standard cell including overheads 4710447Snilay@cs.wisc.edu double m_total_height_; 4810447Snilay@cs.wisc.edu 4910447Snilay@cs.wisc.edu }; // class StdCell 5010447Snilay@cs.wisc.edu} // namespace DSENT 5110447Snilay@cs.wisc.edu 5210447Snilay@cs.wisc.edu#endif // __DSENT_MODEL_STD_CELLS_STDCELL_H__ 5310447Snilay@cs.wisc.edu 54