ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
mioApi.c
Go to the documentation of this file.
1
18
19#include "mioInt.h"
20
22
23
27
31
43char * Mio_LibraryReadName ( Mio_Library_t * pLib ) { return pLib->pName; }
44char * Mio_LibraryReadFileName ( Mio_Library_t * pLib ) { return pLib->pFileName; }
45int Mio_LibraryReadGateNum ( Mio_Library_t * pLib ) { return pLib->nGates; }
48Mio_Gate_t * Mio_LibraryReadGateById ( Mio_Library_t * pLib, int Id ) { assert( pLib->ppGates0[Id]->Cell == Id ); return pLib->ppGates0[Id];}
57float Mio_LibraryReadDelayInvRise ( Mio_Library_t * pLib ) { return (float)(pLib->pGateInv? pLib->pGateInv->pPins->dDelayBlockRise : 0.0); }
58float Mio_LibraryReadDelayInvFall ( Mio_Library_t * pLib ) { return (float)(pLib->pGateInv? pLib->pGateInv->pPins->dDelayBlockFall : 0.0); }
59float Mio_LibraryReadDelayInvMax ( Mio_Library_t * pLib ) { return (float)(pLib->pGateInv? pLib->pGateInv->pPins->dDelayBlockMax : 0.0); }
60float Mio_LibraryReadDelayNand2Rise( Mio_Library_t * pLib ) { return (float)(pLib->pGateNand2? pLib->pGateNand2->pPins->dDelayBlockRise : 0.0); }
61float Mio_LibraryReadDelayNand2Fall( Mio_Library_t * pLib ) { return (float)(pLib->pGateNand2? pLib->pGateNand2->pPins->dDelayBlockFall : 0.0); }
62float Mio_LibraryReadDelayNand2Max ( Mio_Library_t * pLib ) { return (float)(pLib->pGateNand2? pLib->pGateNand2->pPins->dDelayBlockMax : 0.0); }
63float Mio_LibraryReadDelayAnd2Max ( Mio_Library_t * pLib ) { return (float)(pLib->pGateAnd2? pLib->pGateAnd2->pPins->dDelayBlockMax : 0.0); }
64float Mio_LibraryReadDelayAigNode ( Mio_Library_t * pLib ) { return pLib->pGateAnd2 ? Mio_LibraryReadDelayAnd2Max(pLib) : Mio_LibraryReadDelayNand2Max(pLib); } // approximate delay of the AIG node
65float Mio_LibraryReadAreaInv ( Mio_Library_t * pLib ) { return (float)(pLib->pGateInv? pLib->pGateInv->dArea : 0.0); }
66float Mio_LibraryReadAreaBuf ( Mio_Library_t * pLib ) { return (float)(pLib->pGateBuf? pLib->pGateBuf->dArea : 0.0); }
67float Mio_LibraryReadAreaNand2 ( Mio_Library_t * pLib ) { return (float)(pLib->pGateNand2? pLib->pGateNand2->dArea : 0.0); }
68void Mio_LibrarySetName ( Mio_Library_t * pLib, char * pName ) { ABC_FREE(pLib->pName); pLib->pName = pName; }
69
82{
83 Mio_Gate_t * pGate;
84 int LenMax = 0, LenCur;
85 Mio_LibraryForEachGate( pLib, pGate )
86 {
87 LenCur = strlen( Mio_GateReadName(pGate) );
88 if ( LenMax < LenCur )
89 LenMax = LenCur;
90 }
91 return LenMax;
92}
93
105Mio_Gate_t * Mio_LibraryReadGateByName( Mio_Library_t * pLib, char * pName, char * pOutName )
106{
107 Mio_Gate_t * pGate;
108 if ( ! st__lookup( pLib->tName2Gate, pName, (char **)&pGate ) )
109 return NULL;
110 if ( pOutName == NULL )
111 return pGate;
112 if ( !strcmp(pGate->pOutName, pOutName) )
113 return pGate;
114 if ( pGate->pTwin && !strcmp(pGate->pTwin->pOutName, pOutName) )
115 return pGate->pTwin;
116 return NULL;
117}
118
131{
132 Mio_Gate_t * pGate;
133 Mio_LibraryForEachGate( pLib, pGate )
134 if ( pGate->nInputs <= 6 && pGate->uTruth == t )
135 return pGate;
136 return NULL;
137}
138
150char * Mio_LibraryReadSopByName( Mio_Library_t * pLib, char * pName )
151{
152 Mio_Gate_t * pGate;
153 if ( st__lookup( pLib->tName2Gate, pName, (char **)&pGate ) )
154 return pGate->pSop;
155 return NULL;
156}
157
169char * Mio_GateReadName ( Mio_Gate_t * pGate ) { return pGate->pName; }
170char * Mio_GateReadOutName ( Mio_Gate_t * pGate ) { return pGate->pOutName; }
171double Mio_GateReadArea ( Mio_Gate_t * pGate ) { return pGate->dArea; }
172char * Mio_GateReadForm ( Mio_Gate_t * pGate ) { return pGate->pForm; }
173Mio_Pin_t * Mio_GateReadPins ( Mio_Gate_t * pGate ) { return pGate->pPins; }
174Mio_Library_t * Mio_GateReadLib ( Mio_Gate_t * pGate ) { return pGate->pLib; }
175Mio_Gate_t * Mio_GateReadNext ( Mio_Gate_t * pGate ) { return pGate->pNext; }
176Mio_Gate_t * Mio_GateReadTwin ( Mio_Gate_t * pGate ) { return pGate->pTwin; }
177int Mio_GateReadPinNum ( Mio_Gate_t * pGate ) { return pGate->nInputs; }
178double Mio_GateReadDelayMax ( Mio_Gate_t * pGate ) { return pGate->dDelayMax; }
179char * Mio_GateReadSop ( Mio_Gate_t * pGate ) { return pGate->pSop; }
180Vec_Int_t * Mio_GateReadExpr ( Mio_Gate_t * pGate ) { return pGate->vExpr; }
181word Mio_GateReadTruth ( Mio_Gate_t * pGate ) { return pGate->nInputs <= 6 ? pGate->uTruth : 0; }
182word * Mio_GateReadTruthP ( Mio_Gate_t * pGate ) { return pGate->nInputs <= 6 ? &pGate->uTruth: pGate->pTruth; }
183int Mio_GateReadValue ( Mio_Gate_t * pGate ) { return pGate->Value; }
184int Mio_GateReadCell ( Mio_Gate_t * pGate ) { return pGate->Cell; }
185int Mio_GateReadProfile ( Mio_Gate_t * pGate ) { return pGate->Profile; }
186int Mio_GateReadProfile2 ( Mio_Gate_t * pGate ) { return pGate->Profile2; }
187void Mio_GateSetValue ( Mio_Gate_t * pGate, int Value ) { pGate->Value = Value; }
188void Mio_GateSetCell ( Mio_Gate_t * pGate, int Cell ) { pGate->Cell = Cell; }
189void Mio_GateSetProfile ( Mio_Gate_t * pGate, int Prof ) { pGate->Profile = Prof; }
190void Mio_GateSetProfile2 ( Mio_Gate_t * pGate, int Prof ) { pGate->Profile2 = Prof; }
191void Mio_GateIncProfile2 ( Mio_Gate_t * pGate ) { pGate->Profile2++; }
192void Mio_GateDecProfile2 ( Mio_Gate_t * pGate ) { pGate->Profile2--; }
193void Mio_GateAddToProfile ( Mio_Gate_t * pGate, int Prof ) { pGate->Profile += Prof; }
194void Mio_GateAddToProfile2( Mio_Gate_t * pGate, int Prof ) { pGate->Profile2 += Prof; }
195int Mio_GateIsInv ( Mio_Gate_t * pGate ) { return pGate->uTruth == ABC_CONST(0x5555555555555555); }
196
208char * Mio_PinReadName ( Mio_Pin_t * pPin ) { return pPin->pName; }
209Mio_PinPhase_t Mio_PinReadPhase ( Mio_Pin_t * pPin ) { return pPin->Phase; }
210double Mio_PinReadInputLoad ( Mio_Pin_t * pPin ) { return pPin->dLoadInput; }
211double Mio_PinReadMaxLoad ( Mio_Pin_t * pPin ) { return pPin->dLoadMax; }
212double Mio_PinReadDelayBlockRise ( Mio_Pin_t * pPin ) { return pPin->dDelayBlockRise; }
214double Mio_PinReadDelayBlockFall ( Mio_Pin_t * pPin ) { return pPin->dDelayBlockFall; }
216double Mio_PinReadDelayBlockMax ( Mio_Pin_t * pPin ) { return pPin->dDelayBlockMax; }
217Mio_Pin_t * Mio_PinReadNext ( Mio_Pin_t * pPin ) { return pPin->pNext; }
218
230char * Mio_GateReadPinName( Mio_Gate_t * pGate, int iPin )
231{
232 Mio_Pin_t * pPin;
233 int i = 0;
234 Mio_GateForEachPin( pGate, pPin )
235 if ( i++ == iPin )
236 return Mio_PinReadName(pPin);
237 return NULL;
238}
239float Mio_GateReadPinDelay( Mio_Gate_t * pGate, int iPin )
240{
241 Mio_Pin_t * pPin;
242 int i = 0;
243 Mio_GateForEachPin( pGate, pPin )
244 if ( i++ == iPin )
245 return 0.5 * pPin->dDelayBlockRise + 0.5 * pPin->dDelayBlockFall;
246 return ABC_INFINITY;
247}
248
252
253
255
#define ABC_INFINITY
MACRO DEFINITIONS ///.
Definition abc_global.h:250
#define ABC_FREE(obj)
Definition abc_global.h:267
#define ABC_CONST(number)
PARAMETERS ///.
Definition abc_global.h:240
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
unsigned __int64 word
DECLARATIONS ///.
Definition kitPerm.c:36
Mio_Gate_t * Mio_LibraryReadAnd2(Mio_Library_t *pLib)
Definition mioApi.c:54
float Mio_LibraryReadDelayInvFall(Mio_Library_t *pLib)
Definition mioApi.c:58
Mio_Gate_t * Mio_LibraryReadGates(Mio_Library_t *pLib)
Definition mioApi.c:46
Mio_Pin_t * Mio_GateReadPins(Mio_Gate_t *pGate)
Definition mioApi.c:173
float Mio_LibraryReadDelayInvMax(Mio_Library_t *pLib)
Definition mioApi.c:59
Mio_Gate_t * Mio_LibraryReadConst0(Mio_Library_t *pLib)
Definition mioApi.c:51
double Mio_PinReadDelayBlockFall(Mio_Pin_t *pPin)
Definition mioApi.c:214
void Mio_GateSetProfile(Mio_Gate_t *pGate, int Prof)
Definition mioApi.c:189
int Mio_GateReadPinNum(Mio_Gate_t *pGate)
Definition mioApi.c:177
float Mio_LibraryReadAreaBuf(Mio_Library_t *pLib)
Definition mioApi.c:66
Mio_Library_t * Mio_GateReadLib(Mio_Gate_t *pGate)
Definition mioApi.c:174
void Mio_GateDecProfile2(Mio_Gate_t *pGate)
Definition mioApi.c:192
float Mio_LibraryReadDelayNand2Max(Mio_Library_t *pLib)
Definition mioApi.c:62
Mio_Gate_t * Mio_LibraryReadNor2(Mio_Library_t *pLib)
Definition mioApi.c:55
double Mio_PinReadDelayBlockMax(Mio_Pin_t *pPin)
Definition mioApi.c:216
double Mio_GateReadArea(Mio_Gate_t *pGate)
Definition mioApi.c:171
Mio_PinPhase_t Mio_PinReadPhase(Mio_Pin_t *pPin)
Definition mioApi.c:209
char * Mio_GateReadSop(Mio_Gate_t *pGate)
Definition mioApi.c:179
char * Mio_LibraryReadSopByName(Mio_Library_t *pLib, char *pName)
Definition mioApi.c:150
int Mio_GateReadProfile(Mio_Gate_t *pGate)
Definition mioApi.c:185
float Mio_LibraryReadAreaInv(Mio_Library_t *pLib)
Definition mioApi.c:65
Mio_Gate_t * Mio_GateReadTwin(Mio_Gate_t *pGate)
Definition mioApi.c:176
word Mio_GateReadTruth(Mio_Gate_t *pGate)
Definition mioApi.c:181
float Mio_LibraryReadDelayNand2Rise(Mio_Library_t *pLib)
Definition mioApi.c:60
Vec_Int_t * Mio_GateReadExpr(Mio_Gate_t *pGate)
Definition mioApi.c:180
void Mio_GateAddToProfile2(Mio_Gate_t *pGate, int Prof)
Definition mioApi.c:194
int Mio_GateIsInv(Mio_Gate_t *pGate)
Definition mioApi.c:195
double Mio_PinReadInputLoad(Mio_Pin_t *pPin)
Definition mioApi.c:210
Mio_Gate_t * Mio_LibraryReadGateByName(Mio_Library_t *pLib, char *pName, char *pOutName)
Definition mioApi.c:105
Mio_Gate_t * Mio_LibraryReadGateById(Mio_Library_t *pLib, int Id)
Definition mioApi.c:48
int Mio_GateReadProfile2(Mio_Gate_t *pGate)
Definition mioApi.c:186
Mio_Gate_t ** Mio_LibraryReadGateArray(Mio_Library_t *pLib)
Definition mioApi.c:47
double Mio_PinReadMaxLoad(Mio_Pin_t *pPin)
Definition mioApi.c:211
Mio_Gate_t * Mio_LibraryReadGateByTruth(Mio_Library_t *pLib, word t)
Definition mioApi.c:130
char * Mio_GateReadPinName(Mio_Gate_t *pGate, int iPin)
Definition mioApi.c:230
Mio_Gate_t * Mio_GateReadNext(Mio_Gate_t *pGate)
Definition mioApi.c:175
int Mio_GateReadValue(Mio_Gate_t *pGate)
Definition mioApi.c:183
ABC_NAMESPACE_IMPL_START char * Mio_LibraryReadName(Mio_Library_t *pLib)
DECLARATIONS ///.
Definition mioApi.c:43
float Mio_LibraryReadAreaNand2(Mio_Library_t *pLib)
Definition mioApi.c:67
char * Mio_PinReadName(Mio_Pin_t *pPin)
Definition mioApi.c:208
float Mio_GateReadPinDelay(Mio_Gate_t *pGate, int iPin)
Definition mioApi.c:239
void Mio_GateSetValue(Mio_Gate_t *pGate, int Value)
Definition mioApi.c:187
char * Mio_GateReadName(Mio_Gate_t *pGate)
Definition mioApi.c:169
Mio_Gate_t * Mio_LibraryReadNand2(Mio_Library_t *pLib)
Definition mioApi.c:53
Mio_Pin_t * Mio_PinReadNext(Mio_Pin_t *pPin)
Definition mioApi.c:217
float Mio_LibraryReadDelayInvRise(Mio_Library_t *pLib)
Definition mioApi.c:57
Mio_Gate_t * Mio_LibraryReadConst1(Mio_Library_t *pLib)
Definition mioApi.c:52
int Mio_LibraryReadGateNameMax(Mio_Library_t *pLib)
Definition mioApi.c:81
double Mio_PinReadDelayFanoutRise(Mio_Pin_t *pPin)
Definition mioApi.c:213
double Mio_PinReadDelayFanoutFall(Mio_Pin_t *pPin)
Definition mioApi.c:215
char * Mio_GateReadOutName(Mio_Gate_t *pGate)
Definition mioApi.c:170
double Mio_PinReadDelayBlockRise(Mio_Pin_t *pPin)
Definition mioApi.c:212
int Mio_LibraryReadGateNum(Mio_Library_t *pLib)
Definition mioApi.c:45
char * Mio_LibraryReadFileName(Mio_Library_t *pLib)
Definition mioApi.c:44
float Mio_LibraryReadDelayNand2Fall(Mio_Library_t *pLib)
Definition mioApi.c:61
Mio_Gate_t * Mio_LibraryReadInv(Mio_Library_t *pLib)
Definition mioApi.c:50
void Mio_LibrarySetName(Mio_Library_t *pLib, char *pName)
Definition mioApi.c:68
void Mio_GateIncProfile2(Mio_Gate_t *pGate)
Definition mioApi.c:191
float Mio_LibraryReadDelayAigNode(Mio_Library_t *pLib)
Definition mioApi.c:64
void Mio_GateAddToProfile(Mio_Gate_t *pGate, int Prof)
Definition mioApi.c:193
void Mio_GateSetCell(Mio_Gate_t *pGate, int Cell)
Definition mioApi.c:188
void Mio_GateSetProfile2(Mio_Gate_t *pGate, int Prof)
Definition mioApi.c:190
Mio_Gate_t * Mio_LibraryReadBuf(Mio_Library_t *pLib)
Definition mioApi.c:49
float Mio_LibraryReadDelayAnd2Max(Mio_Library_t *pLib)
Definition mioApi.c:63
char * Mio_GateReadForm(Mio_Gate_t *pGate)
Definition mioApi.c:172
int Mio_GateReadCell(Mio_Gate_t *pGate)
Definition mioApi.c:184
word * Mio_GateReadTruthP(Mio_Gate_t *pGate)
Definition mioApi.c:182
Mio_Gate_t * Mio_LibraryReadOr2(Mio_Library_t *pLib)
Definition mioApi.c:56
double Mio_GateReadDelayMax(Mio_Gate_t *pGate)
Definition mioApi.c:178
Mio_PinPhase_t
INCLUDES ///.
Definition mio.h:40
struct Mio_LibraryStruct_t_ Mio_Library_t
Definition mio.h:42
#define Mio_LibraryForEachGate(Lib, Gate)
GLOBAL VARIABLES ///.
Definition mio.h:81
struct Mio_PinStruct_t_ Mio_Pin_t
Definition mio.h:44
#define Mio_GateForEachPin(Gate, Pin)
Definition mio.h:92
struct Mio_GateStruct_t_ Mio_Gate_t
Definition mio.h:43
int st__lookup(st__table *table, const char *key, char **value)
Definition st.c:114
char * pOutName
Definition mioInt.h:103
Vec_Int_t * vExpr
Definition mioInt.h:117
Mio_Library_t * pLib
Definition mioInt.h:105
Mio_Pin_t * pPins
Definition mioInt.h:102
double dDelayMax
Definition mioInt.h:115
Mio_Gate_t * pTwin
Definition mioInt.h:108
Mio_Gate_t * pNext
Definition mioInt.h:107
Mio_Gate_t * pGateAnd2
Definition mioInt.h:74
Mio_Gate_t * pGateInv
Definition mioInt.h:72
Mio_Gate_t ** ppGates0
Definition mioInt.h:66
Mio_Gate_t * pGateNor2
Definition mioInt.h:75
Mio_Gate_t * pGate1
Definition mioInt.h:70
Mio_Gate_t * pGateOr2
Definition mioInt.h:76
Mio_Gate_t * pGateNand2
Definition mioInt.h:73
Mio_Gate_t * pGate0
Definition mioInt.h:69
Mio_Gate_t ** ppGatesName
Definition mioInt.h:67
Mio_Gate_t * pGates
Definition mioInt.h:68
st__table * tName2Gate
Definition mioInt.h:77
Mio_Gate_t * pGateBuf
Definition mioInt.h:71
double dDelayBlockMax
Definition mioInt.h:133
double dDelayBlockFall
Definition mioInt.h:131
Mio_Pin_t * pNext
Definition mioInt.h:134
double dDelayFanoutRise
Definition mioInt.h:130
double dLoadMax
Definition mioInt.h:128
Mio_PinPhase_t Phase
Definition mioInt.h:126
double dDelayBlockRise
Definition mioInt.h:129
double dLoadInput
Definition mioInt.h:127
double dDelayFanoutFall
Definition mioInt.h:132
#define assert(ex)
Definition util_old.h:213
int strlen()
int strcmp()