160 Vec_Ptr_t * vSuper, * vSuper2 = NULL, * vUnique;
162 int i, nFlops, RetValue;
177 printf(
"The output is not an AND.\n" );
187 printf(
"There is no flop outputs.\n" );
205 if ( vUnique != NULL )
211 printf(
"Special flop input is complemented.\n" );
218 printf(
"Cannot find special flop about the inputs of OR gate.\n" );
230 if ( vUnique == NULL )
232 printf(
"There is no structural constraints.\n" );
237 printf(
"Output %d : Structural analysis found %d original properties and %d constraints.\n",
304 Vec_PtrSort( vCons, (
int (*)(
void))Saig_ManDupCompare );
324 printf(
"Collected constraints are not compatible.\n" );
382 Aig_Obj_t * pMiter, * pFlopOut, * pFlopIn, * pObj;
407 pFlopIn =
Aig_Or( pAigNew, pMiter, pFlopOut );
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
static Vec_Ptr_t * Vec_PtrStart(int nSize)
Vec_Ptr_t * Saig_DetectConstrCollectSuper(Aig_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Aig_Man_t * Saig_ManDupUnfoldConstrs(Aig_Man_t *pAig)
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.
static int Saig_ManPoNum(Aig_Man_t *p)
static int Saig_ObjIsLo(Aig_Man_t *p, Aig_Obj_t *pObj)
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 Vec_PtrPushUnique(Vec_Ptr_t *p, void *Entry)
int Aig_ManSeqCleanup(Aig_Man_t *p)
static Aig_Obj_t * Saig_ObjLoToLi(Aig_Man_t *p, Aig_Obj_t *pObj)
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
Aig_Man_t * Aig_ManDupDfs(Aig_Man_t *p)
static int Aig_IsComplement(Aig_Obj_t *p)
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
static void Vec_PtrSort(Vec_Ptr_t *p, int(*Vec_PtrSortCompare)()) ___unused
static Aig_Obj_t * Aig_Regular(Aig_Obj_t *p)
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
static Aig_Obj_t * Aig_ManConst0(Aig_Man_t *p)
static Aig_Obj_t * Aig_Not(Aig_Obj_t *p)
static Vec_Int_t * Vec_IntStartNatural(int nSize)
static int Vec_PtrSize(Vec_Ptr_t *p)
static void Vec_VecFree(Vec_Vec_t *p)
static int Aig_ManNodeNum(Aig_Man_t *p)
static int Vec_PtrFind(Vec_Ptr_t *p, void *Entry)
static void Vec_PtrRemove(Vec_Ptr_t *p, void *Entry)
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
static int Aig_ObjIsNode(Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjRealCopy(Aig_Obj_t *pObj)
int Saig_ManDetectConstr(Aig_Man_t *p, int iOut, Vec_Ptr_t **pvOuts, Vec_Ptr_t **pvCons)
#define Aig_ManForEachNode(p, pObj, i)
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
#define Saig_ManForEachLi(p, pObj, i)
#define ABC_NAMESPACE_IMPL_END
static Aig_Obj_t * Aig_ObjChild1(Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjChild1Copy(Aig_Obj_t *pObj)
Aig_Obj_t * Aig_Or(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
int Saig_ManDetectConstrTest(Aig_Man_t *p)
static Aig_Obj_t * Aig_ObjChild0Copy(Aig_Obj_t *pObj)
void Ioa_WriteAiger(Aig_Man_t *pMan, char *pFileName, int fWriteSymbols, int fCompact)
static int Vec_IntRemove(Vec_Int_t *p, int Entry)
static int Saig_ManRegNum(Aig_Man_t *p)
static void Vec_PtrWriteEntry(Vec_Ptr_t *p, int i, void *Entry)
Aig_Man_t * Saig_ManDupFoldConstrs(Aig_Man_t *pAig, Vec_Int_t *vConstrs)
static Aig_Obj_t * Aig_ManConst1(Aig_Man_t *p)
#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)
ABC_NAMESPACE_IMPL_START void Saig_DetectConstrCollectSuper_rec(Aig_Obj_t *pObj, Vec_Ptr_t *vSuper)
DECLARATIONS ///.
static int Aig_ObjToLit(Aig_Obj_t *pObj)
static int Aig_ManRegNum(Aig_Man_t *p)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
int Saig_ManDupCompare(Aig_Obj_t **pp1, Aig_Obj_t **pp2)
void Saig_ManFoldConstrTest(Aig_Man_t *pAig)
static void Vec_PtrFreeP(Vec_Ptr_t **p)
#define Saig_ManForEachPo(p, pObj, i)
static int Vec_PtrEqual(Vec_Ptr_t *p1, Vec_Ptr_t *p2)
static void Vec_IntFree(Vec_Int_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
Vec_Ptr_t * Saig_ManDetectConstrCheckCont(Vec_Ptr_t *vSuper, Vec_Ptr_t *vSuper2)
char * Abc_UtilStrsav(char *s)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
int Aig_ManCleanup(Aig_Man_t *p)
static int Aig_ObjIsAnd(Aig_Obj_t *pObj)
static void Vec_PtrFree(Vec_Ptr_t *p)