00001 00019 #ifndef __MIO_INT_H__ 00020 #define __MIO_INT_H__ 00021 00025 00026 #include "abc.h" 00027 #include "mvc.h" 00028 #include "main.h" 00029 #include "mio.h" 00030 #include "extra.h" 00031 00035 00036 #define MIO_STRING_GATE "GATE" 00037 #define MIO_STRING_PIN "PIN" 00038 #define MIO_STRING_NONINV "NONINV" 00039 #define MIO_STRING_INV "INV" 00040 #define MIO_STRING_UNKNOWN "UNKNOWN" 00041 00042 #define MIO_STRING_CONST0 "CONST0" 00043 #define MIO_STRING_CONST1 "CONST1" 00044 00045 // the bit masks 00046 #define MIO_MASK(n) ((~((unsigned)0)) >> (32-(n))) 00047 #define MIO_FULL (~((unsigned)0)) 00048 00052 00053 struct Mio_LibraryStruct_t_ 00054 { 00055 char * pName; // the name of the library 00056 int nGates; // the number of the gates 00057 Mio_Gate_t * pGates; // the linked list of all gates in no particular order 00058 Mio_Gate_t * pGate0; // the constant zero gate 00059 Mio_Gate_t * pGate1; // the constant one gate 00060 Mio_Gate_t * pGateBuf; // the buffer 00061 Mio_Gate_t * pGateInv; // the inverter 00062 Mio_Gate_t * pGateNand2; // the NAND2 gate 00063 Mio_Gate_t * pGateAnd2; // the AND2 gate 00064 st_table * tName2Gate; // the mapping of gate names into their pointer 00065 DdManager * dd; // the nanager storing functions of gates 00066 Extra_MmFlex_t * pMmFlex; // the memory manaqer for SOPs 00067 Vec_Str_t * vCube; // temporary cube 00068 }; 00069 00070 struct Mio_GateStruct_t_ 00071 { 00072 // information derived from the genlib file 00073 char * pName; // the name of the gate 00074 double dArea; // the area of the gate 00075 char * pForm; // the formula describing functionality of the gate 00076 Mio_Pin_t * pPins; // the linked list of all pins (one pin if info is the same) 00077 char * pOutName; // the name of the output pin 00078 // the library to which this gate belongs 00079 Mio_Library_t * pLib; 00080 // the next gate in the list 00081 Mio_Gate_t * pNext; 00082 00083 // the derived information 00084 int nInputs; // the number of inputs 00085 double dDelayMax; // the maximum delay 00086 DdNode * bFunc; // the functionality 00087 char * pSop; 00088 }; 00089 00090 struct Mio_PinStruct_t_ 00091 { 00092 char * pName; 00093 Mio_PinPhase_t Phase; 00094 double dLoadInput; 00095 double dLoadMax; 00096 double dDelayBlockRise; 00097 double dDelayFanoutRise; 00098 double dDelayBlockFall; 00099 double dDelayFanoutFall; 00100 double dDelayBlockMax; 00101 Mio_Pin_t * pNext; 00102 }; 00103 00104 00108 00112 00116 00117 /*=== mio.c =============================================================*/ 00118 /*=== mioRead.c =============================================================*/ 00119 /*=== mioUtils.c =============================================================*/ 00120 00121 #endif 00122