StdCellLib.h revision 10447
1#ifndef __DSENT_MODEL_STD_CELLS_STDCELLLIBS_H__ 2#define __DSENT_MODEL_STD_CELLS_STDCELLLIBS_H__ 3 4#include "util/CommonType.h" 5 6namespace DSENT 7{ 8 class TechModel; 9 class StdCell; 10 class LibertyFile; 11 12 class StdCellLib 13 { 14 public: 15 StdCellLib(TechModel* tech_model_); 16 ~StdCellLib(); 17 18 public: 19 // Get the technology model pointer 20 const TechModel* getTechModel() const; 21 // Create a standard cell by name and instance name 22 StdCell* createStdCell(const String& std_cell_name_, const String& instance_name_) const; 23 24 // Get PMOS to NMOS ratio 25 double getPToNRatio() const; 26 void setPToNRatio(double p_to_n_ratio_); 27 // Get height of the standard cell taken by active transistors 28 double getActiveHeight() const; 29 void setActiveHeight(double active_height_); 30 // Get total height of the standard cell including overheads 31 double getTotalHeight() const; 32 void setTotalHeight(double total_height_); 33 // Get the standard cell library cache of values 34 Map<double>* getStdCellCache() const; 35 // Create a list of standard cells 36 void createLib(); 37 38 // Return a copy of this instance 39 StdCellLib* clone() const; 40 41 private: 42 // Disabled copy constructor. Use clone to perform copy operation 43 StdCellLib(const StdCellLib& std_cell_lib_); 44 // Generate driving strength string 45 const String genDrivingStrengthString(const vector<double>& driving_strength_) const; 46 47 private: 48 // Technology model pointer 49 TechModel* m_tech_model_; 50 // The PMOS to NMOS ratio 51 double m_p_to_n_ratio_; 52 // The height of the standard cell taken by active transitors 53 double m_active_height_; 54 // The total height of the standard cell including overheads 55 double m_total_height_; 56 // Std cell values cache 57 Map<double>* m_std_cell_cache_; 58 59 }; // class StdCellLib 60} // namespace DSENT 61 62#endif // __DSENT_MODEL_STD_CELLS_STDCELLLIBS_H__ 63 64