StdCellLib.h revision 10447:a465576671d4
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