1 /* Copyright (c) 2012 Massachusetts Institute of Technology
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 #ifndef __DSENT_MODEL_STD_CELLS_STDCELLLIBS_H__
23 #define __DSENT_MODEL_STD_CELLS_STDCELLLIBS_H__
25 #include "util/CommonType.h"
36 StdCellLib(TechModel
* tech_model_
);
40 // Get the technology model pointer
41 const TechModel
* getTechModel() const;
42 // Create a standard cell by name and instance name
43 StdCell
* createStdCell(const String
& std_cell_name_
, const String
& instance_name_
) const;
45 // Get PMOS to NMOS ratio
46 double getPToNRatio() const;
47 void setPToNRatio(double p_to_n_ratio_
);
48 // Get height of the standard cell taken by active transistors
49 double getActiveHeight() const;
50 void setActiveHeight(double active_height_
);
51 // Get total height of the standard cell including overheads
52 double getTotalHeight() const;
53 void setTotalHeight(double total_height_
);
54 // Get the standard cell library cache of values
55 Map
<double>* getStdCellCache() const;
56 // Create a list of standard cells
59 // Return a copy of this instance
60 StdCellLib
* clone() const;
63 // Disabled copy constructor. Use clone to perform copy operation
64 StdCellLib(const StdCellLib
& std_cell_lib_
);
65 // Generate driving strength string
66 const String
genDrivingStrengthString(const vector
<double>& driving_strength_
) const;
69 // Technology model pointer
70 TechModel
* m_tech_model_
;
71 // The PMOS to NMOS ratio
72 double m_p_to_n_ratio_
;
73 // The height of the standard cell taken by active transitors
74 double m_active_height_
;
75 // The total height of the standard cell including overheads
76 double m_total_height_
;
77 // Std cell values cache
78 Map
<double>* m_std_cell_cache_
;
80 }; // class StdCellLib
83 #endif // __DSENT_MODEL_STD_CELLS_STDCELLLIBS_H__