51 int i, k, j, iNod, iNod0, iNod1, iNod2;
52 if ( p->vRules3 == NULL )
80 int i, k, iNod, iNod0, iNod1;
126 Vec_Int_t * vRes, * vNods, * vNods0, * vNods1;
153 for ( i = 1; i < Limit; i++ )
268 if ( pObj0 == NULL && pObj1 == NULL )
270 if ( pObj0 == NULL || pObj1 == NULL )
279 for ( i = 0; i < (int)pObj0->
nFans; i++ )
301 for ( i = 0; i < (int)pObj->
nFans; i++ )
302 for ( k = i+1; k < (int)pObj->
nFans; k++ )
308 if ( *pvSyms == NULL )
337 int iNod, i, k, Entry;
341 if ( pGate->
nPins == 2 && (pGate->
pFunc[0] == 0x66666666 || pGate->
pFunc[0] == ~0x66666666) )
344 pLib->fHasMux = pGate->
fMux = 1;
353 if ( pLib->fVerbose )
356 printf(
"\nProcessing library gate %4d: %10s ", pGate->
Id, pGate->
pName );
374 if ( pLib->fVerbose )
376 printf(
"Cound not prepare gate \"%s\": ", pGate->
pName );
390 int iThis = Entry & 0xff;
391 int iThat = Entry >> 8;
431 pLib->fVerbose = fVeryVerbose;
438 if ( pGate->
nPins < 2 )
440 if ( pGate->
pFunc == NULL )
442 printf(
"Amap_LibCreateRules(): Skipping gate %s (%s).\n", pGate->
pName, pGate->
pForm );
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
int Kit_DsdNonDsdSizeMax(Kit_DsdNtk_t *pNtk)
#define Vec_PtrForEachEntryStart(Type, vVec, pEntry, i, Start)
static Vec_Int_t * Vec_IntDup(Vec_Int_t *pVec)
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.
int Amap_CreateCheckAllZero(Vec_Ptr_t *vVecNods)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
#define Vec_PtrForEachEntryReverse(Type, vVec, pEntry, i)
static Kit_DsdObj_t * Kit_DsdNtkObj(Kit_DsdNtk_t *pNtk, int Id)
Kit_DsdNtk_t * Kit_DsdDecomposeMux(unsigned *pTruth, int nVars, int nDecMux)
static int Abc_Var2Lit(int Var, int fCompl)
char * Aig_MmFlexEntryFetch(Aig_MmFlex_t *p, int nBytes)
Vec_Int_t * Amap_CreateRulesFromDsd_rec(Amap_Lib_t *pLib, Kit_DsdNtk_t *p, int iLit)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
Vec_Int_t * Amap_CreateRulesFromDsd(Amap_Lib_t *pLib, Kit_DsdNtk_t *p)
#define Kit_DsdObjForEachFanin(pNtk, pObj, iLit, i)
static Vec_Int_t * Vec_IntStartNatural(int nSize)
static int Vec_PtrSize(Vec_Ptr_t *p)
static void Vec_VecFree(Vec_Vec_t *p)
int Amap_LibFindMux(Amap_Lib_t *p, int iFan0, int iFan1, int iFan2)
void Amap_CreateRulesForGate(Amap_Lib_t *pLib, Amap_Gat_t *pGate)
void Amap_CreateCheckAsym(Kit_DsdNtk_t *p, Vec_Int_t **pvSyms)
ABC_NAMESPACE_IMPL_START int Amap_LibDeriveGatePerm(Amap_Lib_t *pLib, Amap_Gat_t *pGate, Kit_DsdNtk_t *pNtk, Amap_Nod_t *pNod, char *pArray)
DECLARATIONS ///.
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
void Amap_LibCreateRules(Amap_Lib_t *pLib, int fVeryVerbose)
static int Abc_LitIsCompl(int Lit)
void Kit_DsdPrint(FILE *pFile, Kit_DsdNtk_t *pNtk)
int Amap_LibCreateVar(Amap_Lib_t *p)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static unsigned * Kit_DsdObjTruth(Kit_DsdObj_t *pObj)
static int Vec_IntEntry(Vec_Int_t *p, int i)
int ** Amap_LibLookupTableAlloc(Vec_Ptr_t *vVec, int fVerbose)
#define ABC_NAMESPACE_IMPL_END
static void Vec_IntPush(Vec_Int_t *p, int Entry)
Vec_Int_t * Amap_CreateRulesPrime(Amap_Lib_t *p, Vec_Int_t *vNods0, Vec_Int_t *vNods1, Vec_Int_t *vNods2)
FUNCTION DEFINITIONS ///.
int Amap_LibCreateMux(Amap_Lib_t *p, int iFan0, int iFan1, int iFan2)
static void Vec_IntFreeP(Vec_Int_t **p)
int Amap_LibCreateNode(Amap_Lib_t *p, int iFan0, int iFan1, int fXor)
void Amap_CreateRulesTwo(Amap_Lib_t *p, Vec_Int_t *vNods, Vec_Int_t *vNods0, Vec_Int_t *vNods1, int fXor)
#define ABC_NAMESPACE_IMPL_START
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
static int Abc_LitNot(int Lit)
static int Vec_IntSize(Vec_Int_t *p)
#define Vec_PtrForEachEntryStop(Type, vVec, pEntry, i, Stop)
typedefABC_NAMESPACE_HEADER_START struct Amap_Lib_t_ Amap_Lib_t
INCLUDES ///.
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int Abc_Lit2Var(int Lit)
Vec_Int_t * Amap_CreateRulesVector_rec(Amap_Lib_t *p, Vec_Ptr_t *vVecNods, int fXor)
static int Abc_LitRegular(int Lit)
void Kit_DsdNtkFree(Kit_DsdNtk_t *pNtk)
static void Vec_PtrClear(Vec_Ptr_t *p)
void Amap_CreateCheckAsym_rec(Kit_DsdNtk_t *p, int iLit, Vec_Int_t **pvSyms)
int Amap_LibFindNode(Amap_Lib_t *pLib, int iFan0, int iFan1, int fXor)
static Amap_Nod_t * Amap_LibNod(Amap_Lib_t *p, int i)
static void Vec_IntFree(Vec_Int_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
static int Vec_IntPushUnique(Vec_Int_t *p, int Entry)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
int Amap_CreateCheckEqual_rec(Kit_DsdNtk_t *p, int iLit0, int iLit1)
Kit_DsdNtk_t * Kit_DsdExpand(Kit_DsdNtk_t *p)
void Kit_DsdVerify(Kit_DsdNtk_t *pNtk, unsigned *pTruth, int nVars)
static void Vec_PtrFree(Vec_Ptr_t *p)