2020-01-12 19:11:00 -06:00
|
|
|
#ifndef TECHNOLOGY_LIBRARY_H
|
|
|
|
#define TECHNOLOGY_LIBRARY_H
|
|
|
|
|
|
|
|
/********************************************************************
|
|
|
|
* This file include the declaration of technology library
|
|
|
|
*******************************************************************/
|
|
|
|
|
|
|
|
/********************************************************************
|
|
|
|
* Types for technology library attributes
|
|
|
|
* Industrial library: the .lib file which define technology
|
|
|
|
* This is ubiquitous in commercial vendors
|
|
|
|
* For industry library, we allow users to define
|
|
|
|
* process corners.
|
|
|
|
* Academia library: the .pm file which define technology
|
|
|
|
* This is mainly used in PTM-like technology library
|
|
|
|
* PTM is the Predictive Technology Model provided by the Arizona
|
|
|
|
* State University (ASU). Available at ptm.asu.edu
|
|
|
|
*******************************************************************/
|
|
|
|
enum e_tech_lib_type {
|
|
|
|
TECH_LIB_INDUSTRY,
|
2020-01-17 10:38:35 -06:00
|
|
|
TECH_LIB_ACADEMIA,
|
|
|
|
NUM_TECH_LIB_TYPES
|
2020-01-12 19:11:00 -06:00
|
|
|
};
|
2020-01-17 10:38:35 -06:00
|
|
|
/* Strings correspond to each technology library type */
|
|
|
|
constexpr std::array<const char*, NUM_TECH_LIB_TYPES> TECH_LIB_TYPE_STRING = {{"industry", "academia"}};
|
2020-01-12 19:11:00 -06:00
|
|
|
|
|
|
|
/********************************************************************
|
2020-01-17 10:38:35 -06:00
|
|
|
* Types of transistor groups which may be defined in a technology library
|
2020-01-12 19:11:00 -06:00
|
|
|
* We categorize the transistors in terms of their usage in FPGA architecture
|
2020-01-17 10:38:35 -06:00
|
|
|
* 1. NMOS transistor
|
|
|
|
* 2. PMOS transistor
|
|
|
|
*******************************************************************/
|
|
|
|
enum e_tech_lib_trans_type {
|
|
|
|
TECH_LIB_TRANS_NMOS,
|
|
|
|
TECH_LIB_TRANS_PMOS,
|
|
|
|
};
|
|
|
|
/* Strings correspond to transistor type type */
|
|
|
|
constexpr std::array<const char*, NUM_TECH_LIB_TYPES> TECH_LIB_TRANS_TYPE_STRING = {{"industry", "academia"}};
|
|
|
|
|
|
|
|
/********************************************************************
|
|
|
|
* Types of transistors which may be defined in a technology library
|
|
|
|
* 1. NMOS transistor
|
|
|
|
* 2. PMOS transistor
|
2020-01-12 19:11:00 -06:00
|
|
|
*******************************************************************/
|
|
|
|
enum e_tech_lib_trans_type {
|
|
|
|
TECH_LIB_TRANS_NMOS,
|
|
|
|
TECH_LIB_TRANS_PMOS,
|
|
|
|
};
|
2020-01-17 10:38:35 -06:00
|
|
|
/* Strings correspond to transistor type type */
|
|
|
|
constexpr std::array<const char*, NUM_TECH_LIB_TYPES> TECH_LIB_TRANS_TYPE_STRING = {{"industry", "academia"}};
|
2020-01-12 19:11:00 -06:00
|
|
|
|
|
|
|
/********************************************************************
|
|
|
|
* Process corners supported
|
|
|
|
*******************************************************************/
|
|
|
|
enum e_process_corner {
|
|
|
|
BEST_CORNER,
|
|
|
|
TYPICAL_CORNER,
|
|
|
|
WORST_CORNER
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|