66 Vec_PtrSort( vRoots, (
int (*)(
void))Iso_ObjCompareByData );
205 if ( pObj->
pData == NULL )
208 printf(
"Structural equivalence failed at node %d.\n", i );
216 printf(
"Structural equivalence failed at primary output 0.\n" );
239 if ( pAig->nComplEdges > 0 )
240 return pAig->nComplEdges;
249 return (pAig->nComplEdges = Counter);
266 Vec_Int_t * vPerm1, * vPerm2, * vInvPerm2;
300 if ( vPerm1_ == NULL )
302 if ( vPerm2_ == NULL )
324 int fVeryVerbose = 0;
334 for ( i = 0; i < nPos; i++ )
350 printf(
"AIG %4d : ", i );
356 printf(
"Comparing AIG %4d and AIG %4d. ",
Vec_IntEntry(vPos,k), i );
364 printf(
"Found match\n" );
371 printf(
"No match.\n" );
431 abctime clkDup = 0, clkAig = 0, clkIso = 0, clk2;
437 for ( i = 0; i < nPos; i++ )
440 printf(
"%6d finished...\r", i );
525 *pvPosEquivs = vClasses;
570 printf(
"Nontrivial classes:\n" );
612 printf(
"Mapping of AIGs is found.\n" );
617 printf(
"Mapping of AIGs is NOT found.\n" );
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
static int * Vec_IntArray(Vec_Int_t *p)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Vec_Str_t * Ioa_WriteAigerIntoMemoryStr(Aig_Man_t *pMan)
int Iso_ManNegEdgeNum(Aig_Man_t *pAig)
#define Vec_PtrForEachEntryStart(Type, vVec, pEntry, i, Start)
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.
static int Saig_ManPoNum(Aig_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
static Aig_Obj_t * Aig_ObjChild0(Aig_Obj_t *pObj)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Aig_ManStop(Aig_Man_t *p)
static int Aig_ObjIsTravIdCurrent(Aig_Man_t *p, Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjFanin0(Aig_Obj_t *pObj)
static int Abc_Var2Lit(int Var, int fCompl)
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
void Aig_ManPrintStats(Aig_Man_t *p)
static Vec_Int_t * Vec_IntInvert(Vec_Int_t *p, int Fill)
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
static void Vec_PtrSort(Vec_Ptr_t *p, int(*Vec_PtrSortCompare)()) ___unused
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
static abctime Abc_Clock()
static Aig_Obj_t * Aig_ObjFanin1(Aig_Obj_t *pObj)
static int Vec_PtrSize(Vec_Ptr_t *p)
static void Vec_VecFree(Vec_Vec_t *p)
static void Vec_IntSort(Vec_Int_t *p, int fReverse)
int Iso_StoCompareVecStr(Vec_Str_t **p1, Vec_Str_t **p2)
static void Aig_ObjSetTravIdCurrent(Aig_Man_t *p, Aig_Obj_t *pObj)
int Iso_ObjCompareByData(Aig_Obj_t **pp1, Aig_Obj_t **pp2)
static int Aig_ManNodeNum(Aig_Man_t *p)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
Aig_Man_t * Saig_ManDupCones(Aig_Man_t *pAig, int *pPos, int nPos)
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
ABC_NAMESPACE_IMPL_START Vec_Int_t * Saig_ManFindIsoPermCos(Aig_Man_t *pAig, Vec_Int_t *vPermCis)
DECLARATIONS ///.
Aig_Man_t * Saig_ManIsoReduce(Aig_Man_t *pAig, Vec_Ptr_t **pvPosEquivs, int fVerbose)
void Aig_ManIncrementTravId(Aig_Man_t *p)
DECLARATIONS ///.
static void Abc_PrintTime(int level, const char *pStr, abctime time)
static int Aig_ObjIsNode(Aig_Obj_t *pObj)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int Aig_ManCoNum(Aig_Man_t *p)
#define Aig_ManForEachNode(p, pObj, i)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static void * Vec_PtrEntryLast(Vec_Ptr_t *p)
Vec_Int_t * Saig_ManFindIsoPerm(Aig_Man_t *pAig, int fVerbose)
Aig_Man_t * Abc_NtkToDar(Abc_Ntk_t *pNtk, int fExors, int fRegisters)
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
static Aig_Obj_t * Aig_ManCi(Aig_Man_t *p, int i)
Aig_Man_t * Iso_ManFilterPos_old(Aig_Man_t *pAig, int fVerbose)
static int Vec_IntEntry(Vec_Int_t *p, int i)
static int Aig_ManCiNum(Aig_Man_t *p)
#define ABC_NAMESPACE_IMPL_END
static void Vec_VecPrintInt(Vec_Vec_t *p, int fSkipSingles)
Aig_Man_t * Saig_ManDupIsoCanonical(Aig_Man_t *pAig, int fVerbose)
static int Aig_ObjIsConst1(Aig_Obj_t *pObj)
static void Vec_VecSortByFirstInt(Vec_Vec_t *p, int fReverse)
static Aig_Obj_t * Aig_ObjChild1Copy(Aig_Obj_t *pObj)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static Aig_Obj_t * Aig_ObjChild0Copy(Aig_Obj_t *pObj)
#define Vec_IntForEachEntryStart(vVec, Entry, i, Start)
static void Vec_IntFreeP(Vec_Int_t **p)
Aig_Obj_t * Aig_TableLookupTwo(Aig_Man_t *p, Aig_Obj_t *pFanin0, Aig_Obj_t *pFanin1)
Vec_Int_t * Iso_ManFindMapping(Aig_Man_t *pAig1, Aig_Man_t *pAig2, Vec_Int_t *vPerm1_, Vec_Int_t *vPerm2_, int fVerbose)
static int Aig_ObjFaninC0(Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ManConst1(Aig_Man_t *p)
Abc_Ntk_t * Abc_NtkFromAigPhase(Aig_Man_t *pMan)
void Saig_ManDupIsoCanonical_rec(Aig_Man_t *pNew, Aig_Man_t *pAig, Aig_Obj_t *pObj)
#define ABC_NAMESPACE_IMPL_START
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
static Aig_Obj_t * Aig_ManCo(Aig_Man_t *p, int i)
int Aig_ManLevelNum(Aig_Man_t *p)
static int Aig_ManRegNum(Aig_Man_t *p)
static int Vec_IntSize(Vec_Int_t *p)
static int Vec_StrCompareVec(Vec_Str_t *p1, Vec_Str_t *p2)
#define Aig_ManForEachObj(p, pObj, i)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int Saig_ManPiNum(Aig_Man_t *p)
MACRO DEFINITIONS ///.
static int Aig_ObjFaninC1(Aig_Obj_t *pObj)
#define Saig_ManForEachPo(p, pObj, i)
ABC_NAMESPACE_IMPL_END ABC_NAMESPACE_IMPL_START Aig_Man_t * Iso_ManTest888(Aig_Man_t *pAig1, int fVerbose)
Aig_Man_t * Iso_ManTest(Aig_Man_t *pAig, int fVerbose)
static void Vec_IntPrint(Vec_Int_t *vVec)
ABC_DLL void Abc_NtkPermute(Abc_Ntk_t *pNtk, int fInputs, int fOutputs, int fFlops, char *pFlopPermFile)
static void Vec_IntFree(Vec_Int_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
char * Abc_UtilStrsav(char *s)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
void Aig_ManCleanData(Aig_Man_t *p)
static int Aig_ObjIsCo(Aig_Obj_t *pObj)
int Iso_ManCheckMapping(Aig_Man_t *pAig1, Aig_Man_t *pAig2, Vec_Int_t *vMap2to1, int fVerbose)
static int Aig_ObjCioId(Aig_Obj_t *pObj)
static void Vec_PtrFree(Vec_Ptr_t *p)
Aig_Man_t * Iso_ManFilterPos(Aig_Man_t *pAig, Vec_Ptr_t **pvPosEquivs, int fVerbose)