53 assert( newAigPoIndices != NULL );
54 return newAigPoIndices;
59 assert(toBeDeletedAigPoIndices != NULL );
60 free(toBeDeletedAigPoIndices);
80 assert( newPointersToMonotoneVectors != NULL );
81 return newPointersToMonotoneVectors;
86 assert( toBeDeleted != NULL );
92 int i, numElementPush = 0;
106 if( numElementPush == 0 )
109 return vHintPoIntdex;
114 int i, pendingSignalIndex = -1;
121 pendingSignalIndex = i;
126 return pendingSignalIndex;
134 printf(
"%d ", iElem);
137 printf(
"%d ", iElem);
140 printf(
"%d ", iElem);
148 int iElem, i, nRegCount, oldPoNum, poSerialNum, iElemHint;
149 int piCopied = 0, liCopied = 0, liCreated = 0, loCopied = 0, loCreated = 0;
150 int poCopied = 0, poCreated = 0;
151 Aig_Obj_t *pObj, *pObjPo, *pObjDriver, *pObjDriverNew, *pObjPendingDriverNew, *pObjPendingAndNextPending;
152 Aig_Obj_t *pPendingFlop, *pHintSignalLo, *pHintMonotoneFlop, *pObjTemp1, *pObjTemp2, *pObjKnownMonotoneAnd;
172 sprintf(pNewAig->pName,
"%s_%s", pAig->pName,
"_monotone");
173 pNewAig->pSpec = NULL;
213 Vec_PtrPush( vHintMonotoneLocalFlopOutput, pHintMonotoneFlop );
216 nRegCount = loCreated + loCopied;
217 printf(
"\nnRegCount = %d\n", nRegCount);
231 pObjPo =
Aig_ManCo( pAig, pendingSignalIndexLocal );
237 pObjPendingAndNextPending =
Aig_And( pNewAig, pObjPendingDriverNew, pPendingFlop );
242 if( vKnownMonotoneLocal )
248 iElem = (iElemHint - hintSingalBeginningMarkerLocal) + 1 + pendingSignalIndexLocal;
249 printf(
"\nProcessing knownMonotone = %d\n", iElem);
256 pObjTemp1 =
Aig_Or( pNewAig,
Aig_And(pNewAig, pObjDriverNew, pHintSignalLo),
259 pObjKnownMonotoneAnd =
Aig_And( pNewAig, pObjKnownMonotoneAnd, pObjTemp1 );
261 pObjPendingAndNextPending =
Aig_And( pNewAig, pObjPendingAndNextPending, pObjKnownMonotoneAnd );
275 if( vKnownMonotoneLocal != NULL &&
Vec_IntFind( vKnownMonotoneLocal, iElem ) != -1 )
277 Vec_PtrPush(vHintMonotoneLocalDriverNew, pObjDriverNew);
281 poSerialNum =
Vec_IntFind( vHintMonotoneLocal, iElem );
283 pObjTemp1 =
Aig_And( pNewAig, pObjPendingAndNextPending, pHintSignalLo);
284 pObjTemp2 =
Aig_Or( pNewAig,
Aig_Not(pObjTemp1), pObjDriverNew );
287 Vec_PtrPush(vHintMonotoneLocalDriverNew, pObjDriverNew);
301 *startMonotonePropPo = i;
335 printf(
"\npoCopied = %d, poCreated = %d\n", poCopied, poCreated);
336 printf(
"\nliCreated++ = %d\n", liCreated );
341 assert( loCopied + loCreated == liCopied + liCreated );
352 int poMarker, oldPoNum;
370 printf(
"\nSaig_ManPoNum(pAigNew) = %d, poMarker = %d\n",
Saig_ManPoNum(pAigNew), poMarker);
384 printf(
"\ni = %d, RetValue = %d : %s (Frame %d)\n", i - oldPoNum + hintSingalBeginningMarkerLocal, RetValue,
"Property Proved", pCex? (pCex)->iFrame : -1 );
385 Vec_IntPush( vMonotoneIndex, i - (pendingSignalIndexLocal + 1) + hintSingalBeginningMarkerLocal);
391 return vMonotoneIndex;
401 if( vKnownMonotone == NULL ||
Vec_IntSize(vKnownMonotone) <= 0 )
402 return vHintMonotone;
410 return vCandMonotone;
421 int pendingSignalIndex;
423 int hintSingalBeginningMarker;
424 int hintSingalEndMarker;
432 if( pendingSignalIndex == -1 )
434 printf(
"\nNo Pending Signal Found\n");
438 printf(
"Po[%d] = %s\n", pendingSignalIndex,
Abc_ObjName(
Abc_NtkPo(pNtk, pendingSignalIndex) ) );
444 if( vCandidateMonotoneSignals == NULL )
450 hintSingalBeginningMarker =
Vec_IntEntry( vCandidateMonotoneSignals, 0 );
486 vKnownMonotoneSignals =
findNewMonotone( pAig, aigPoIndicesInstance, monotoneVectorsInstance );
493 if( vKnownMonotoneSignals )
495 printf(
"\nsize = %d\n",
Vec_IntSize(vKnownMonotoneSignals) );
498 vKnownMonotoneSignalsNew =
findNewMonotone( pAig, aigPoIndicesInstance, monotoneVectorsInstance );
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
int findPendingSignal(Abc_Ntk_t *pNtk)
static int Abc_NtkIsStrash(Abc_Ntk_t *pNtk)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
ABC_DLL int Aig_ManCheck(Aig_Man_t *p)
FUNCTION DECLARATIONS ///.
void deallocAigPoIndices(struct aigPoIndices *toBeDeletedAigPoIndices)
Vec_Int_t * findRemainingMonotoneCandidates(Vec_Int_t *vKnownMonotone, Vec_Int_t *vHintMonotone)
static int Saig_ManPoNum(Aig_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Pdr_ManSetDefaultParams(Pdr_Par_t *pPars)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Pdr_Par_t_ Pdr_Par_t
INCLUDES ///.
struct monotoneVectorsStruct * allocPointersToMonotoneVectors()
ABC_DLL Abc_Ntk_t * Abc_NtkStrash(Abc_Ntk_t *pNtk, int fAllNodes, int fCleanup, int fRecord)
void deallocPointersToMonotoneVectors(struct monotoneVectorsStruct *toBeDeleted)
static Aig_Obj_t * Aig_ObjFanin0(Aig_Obj_t *pObj)
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
static int Aig_IsComplement(Aig_Obj_t *p)
static int Vec_IntFind(Vec_Int_t *p, int Entry)
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_Not(Aig_Obj_t *p)
int attrHintSingalBeginningMarker
Vec_Int_t * findMonotoneSignals(Abc_Ntk_t *pNtk)
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
ABC_NAMESPACE_IMPL_START Aig_Man_t * Abc_NtkToDar(Abc_Ntk_t *pNtk, int fExors, int fRegisters)
DECLARATIONS ///.
static int Aig_ManCoNum(Aig_Man_t *p)
Aig_Man_t * createMonotoneTester(Aig_Man_t *pAig, struct aigPoIndices *aigPoIndicesArg, struct monotoneVectorsStruct *monotoneVectorArg, int *startMonotonePropPo)
#define Aig_ManForEachNode(p, pObj, i)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
#define Saig_ManForEachLi(p, pObj, i)
static int Vec_IntEntry(Vec_Int_t *p, int i)
#define ABC_NAMESPACE_IMPL_END
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)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
#define Saig_ManForEachLo(p, pObj, i)
static Aig_Obj_t * Aig_ObjChild0Copy(Aig_Obj_t *pObj)
static void Aig_ObjChild0Flip(Aig_Obj_t *pObj)
static int Aig_ObjFaninC0(Aig_Obj_t *pObj)
static int Aig_ManObjNumMax(Aig_Man_t *p)
int attrPendingSignalIndex
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)
static int Aig_ManRegNum(Aig_Man_t *p)
int Pdr_ManSolve(Aig_Man_t *p, Pdr_Par_t *pPars)
int attrHintSingalEndMarker
static int Vec_IntSize(Vec_Int_t *p)
static Abc_Obj_t * Abc_NtkPo(Abc_Ntk_t *pNtk, int i)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
Vec_Int_t * findNewMonotone(Aig_Man_t *pAig, struct aigPoIndices *aigPoIndicesArg, struct monotoneVectorsStruct *monotoneVectorArg)
int checkSanityOfKnownMonotone(Vec_Int_t *vKnownMonotone, Vec_Int_t *vCandMonotone, Vec_Int_t *vHintMonotone)
#define Saig_ManForEachPo(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
Vec_Int_t * findHintOutputs(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachPo(pNtk, pPo, i)
static Aig_Obj_t * Aig_NotCond(Aig_Obj_t *p, int c)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
struct aigPoIndices * allocAigPoIndices()
int Aig_ManCleanup(Aig_Man_t *p)
#define Saig_ManForEachPi(p, pObj, i)