88static inline int Swp_ManObj2Lit(
Swp_Man_t *
p,
int Id ) {
return Vec_IntGetEntry(
p->vId2Lit, Id ); }
89static inline int Swp_ManLit2Lit(
Swp_Man_t *
p,
int Lit ) {
assert( Vec_IntEntry(
p->vId2Lit, Abc_Lit2Var(Lit)) );
return Abc_Lit2LitL( Vec_IntArray(
p->vId2Lit), Lit ); }
90static inline void Swp_ManSetObj2Lit(
Swp_Man_t *
p,
int Id,
int Lit ) {
assert( Lit > 0 ); Vec_IntSetEntry(
p->vId2Lit, Id, Lit ); }
115 p->vProbes = Vec_IntAlloc( 100 );
116 p->vCondProbes = Vec_IntAlloc( 100 );
117 p->vCondAssump = Vec_IntAlloc( 100 );
118 p->vId2Lit = Vec_IntAlloc( 10000 );
119 p->vFront = Vec_IntAlloc( 100 );
120 p->vFanins = Vec_IntAlloc( 100 );
121 p->vCexSwp = Vec_IntAlloc( 100 );
125 Swp_ManSetObj2Lit(
p, 0, (Lit = Abc_Var2Lit(
p->nSatVars++, 0)) );
126 Lit = Abc_LitNot(Lit);
128 p->timeStart = Abc_Clock();
131static inline void Swp_ManStop(
Gia_Man_t * pGia )
135 Vec_IntFree(
p->vFanins );
136 Vec_IntFree(
p->vCexSwp );
137 Vec_IntFree(
p->vId2Lit );
138 Vec_IntFree(
p->vFront );
139 Vec_IntFree(
p->vProbes );
140 Vec_IntFree(
p->vCondProbes );
141 Vec_IntFree(
p->vCondAssump );
149 if ( Vec_IntSize(&pGia->
vHTable) == 0 )
153 Swp_ManStart( pGia );
166 return (pGia->
pData != NULL);
172 nMem += Vec_IntCap(
p->vProbes);
173 nMem += Vec_IntCap(
p->vCondProbes);
174 nMem += Vec_IntCap(
p->vCondAssump);
175 nMem += Vec_IntCap(
p->vId2Lit);
176 nMem += Vec_IntCap(
p->vFront);
177 nMem += Vec_IntCap(
p->vFanins);
178 nMem += Vec_IntCap(
p->vCexSwp);
185 double nMemGia = (double)Gia_ManObjNum(pGia)*(
sizeof(
Gia_Obj_t) +
sizeof(int));
187 double nMemTot = nMemSwp + nMemGia + nMemSat;
188 printf(
"SAT sweeper statistics:\n" );
189 printf(
"Memory usage:\n" );
190 ABC_PRMP(
"Sweeper ", nMemSwp, nMemTot );
191 ABC_PRMP(
"AIG manager ", nMemGia, nMemTot );
192 ABC_PRMP(
"SAT solver ", nMemSat, nMemTot );
193 ABC_PRMP(
"TOTAL ", nMemTot, nMemTot );
194 printf(
"Runtime usage:\n" );
195 p->timeTotal = Abc_Clock() -
p->timeStart;
196 ABC_PRTP(
"CNF construction",
p->timeCnf,
p->timeTotal );
197 ABC_PRTP(
"SAT solving ",
p->timeSat,
p->timeTotal );
198 ABC_PRTP(
" Sat ",
p->timeSatSat,
p->timeTotal );
199 ABC_PRTP(
" Unsat ",
p->timeSatUnsat,
p->timeTotal );
200 ABC_PRTP(
" Undecided ",
p->timeSatUndec,
p->timeTotal );
201 ABC_PRTP(
"TOTAL RUNTIME ",
p->timeTotal,
p->timeTotal );
204 printf(
"SAT calls = %d. Sat = %d. Unsat = %d. Undecided = %d. Proofs = %d.\n",
205 p->nSatCalls,
p->nSatCallsSat,
p->nSatCallsUnsat,
p->nSatCallsUndec,
p->nSatProofs );
223 pSwp->nConfMax = nConfMax;
228 pSwp->nTimeOut = nSeconds;
233 assert( pSwp->vCexUser == NULL || Vec_IntSize(pSwp->vCexUser) == Gia_ManPiNum(
p) );
234 return pSwp->vCexUser;
252 int ProbeId = Vec_IntSize(pSwp->vProbes);
254 Vec_IntPush( pSwp->vProbes, iLit );
261 int iLit = Vec_IntEntry(pSwp->vProbes, ProbeId);
263 Vec_IntWriteEntry(pSwp->vProbes, ProbeId, -1);
270 int iLit = Vec_IntEntry(pSwp->vProbes, ProbeId);
272 Vec_IntWriteEntry(pSwp->vProbes, ProbeId, iLitNew);
279 int iLit = Vec_IntEntry(pSwp->vProbes, ProbeId);
298 Vec_Int_t * vProbeIds = Vec_IntAlloc( 1000 );
302 if ( iLit < 0 )
continue;
303 Vec_IntPush( vProbeIds, ProbeId );
322 Vec_IntPush( pSwp->vCondProbes, ProbeId );
327 return Vec_IntPop( pSwp->vCondProbes );
332 return pSwp->vCondProbes;
349 if ( !Gia_ObjIsAnd(pObj) )
351 if ( Gia_ObjIsTravIdCurrent(
p, pObj) )
353 Gia_ObjSetTravIdCurrent(
p, pObj);
354 Gia_ManExtract_rec(
p, Gia_ObjFanin0(pObj), vObjIds );
355 Gia_ManExtract_rec(
p, Gia_ObjFanin1(pObj), vObjIds );
356 Vec_IntPush( vObjIds, Gia_ObjId(
p, pObj) );
364 assert( vInNames == NULL || Gia_ManPiNum(
p) == Vec_PtrSize(vInNames) );
365 assert( vOutNames == NULL || Vec_IntSize(vProbeIds) == Vec_PtrSize(vOutNames) );
368 vObjIds = Vec_IntAlloc( 1000 );
372 Gia_ManExtract_rec(
p, Gia_Regular(pObj), vObjIds );
375 pNew =
Gia_ManStart( 1 + Gia_ManPiNum(
p) + Vec_IntSize(vObjIds) + Vec_IntSize(vProbeIds) + 100 );
376 pNew->
pName = Abc_UtilStrsav(
p->pName );
377 pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
378 Gia_ManConst0(
p)->Value = 0;
380 pObj->
Value = Gia_ManAppendCi(pNew);
383 vValues = Vec_IntAlloc( Vec_IntSize(vObjIds) );
386 Vec_IntPush( vValues, pObj->
Value );
394 Gia_ManAppendCo( pNew, Gia_Regular(pObj)->Value ^ Gia_IsComplement(pObj) );
400 pObj->
Value = Vec_IntEntry( vValues, i );
401 Vec_IntFree( vObjIds );
402 Vec_IntFree( vValues );
411 pNew->
vNamesIn = Vec_PtrDupStr( vInNames );
413 pNew->
vNamesOut = Vec_PtrDupStr( vOutNames );
432 printf(
"Dumping logic cones" );
433 if ( fDumpConds && Vec_IntSize(vProbeConds) > 0 )
437 pGiaOuts->
nConstrs = Gia_ManPoNum(pGiaCond);
440 printf(
" and conditions" );
444 printf(
" into file \"%s\".\n", pFileName );
467 int i, iLit, ProbeId;
471 vObjIds = Vec_IntAlloc( 1000 );
474 if ( iLit < 0 )
continue;
475 pObj = Gia_Lit2Obj(
p, iLit );
476 Gia_ManExtract_rec(
p, Gia_Regular(pObj), vObjIds );
479 pNew =
Gia_ManStart( 1 + Gia_ManPiNum(
p) + Vec_IntSize(vObjIds) + 100 );
480 pNew->
pName = Abc_UtilStrsav(
p->pName );
481 pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
482 Gia_ManConst0(
p)->Value = 0;
484 pObj->
Value = Gia_ManAppendCi(pNew);
493 if ( iLit < 0 )
continue;
494 pObj = Gia_Lit2Obj(
p, iLit );
495 iLit = Gia_Regular(pObj)->Value ^ Gia_IsComplement(pObj);
496 Vec_IntWriteEntry( pSwp->vProbes, ProbeId, iLit );
498 Vec_IntFree( vObjIds );
516 Vec_IntClear( pSwp->vId2Lit );
521 Swp_ManSetObj2Lit( pSwp, 0, (iLit = Abc_Var2Lit(pSwp->nSatVars++, 0)) );
522 iLit = Abc_LitNot(iLit);
524 pSwp->timeStart = Abc_Clock();
526 pNew->
pData =
p->pData;
p->pData = NULL;
546 int pLits[4], LitF, LitI, LitT, LitE, RetValue;
547 assert( !Gia_IsComplement( pNode ) );
552 LitF = Swp_ManLit2Lit(
p, Gia_Obj2Lit(
p->pGia,pNode) );
553 LitI = Swp_ManLit2Lit(
p, Gia_Obj2Lit(
p->pGia,pNodeI) );
554 LitT = Swp_ManLit2Lit(
p, Gia_Obj2Lit(
p->pGia,pNodeT) );
555 LitE = Swp_ManLit2Lit(
p, Gia_Obj2Lit(
p->pGia,pNodeE) );
565 pLits[0] = Abc_LitNotCond(LitI, 1);
566 pLits[1] = Abc_LitNotCond(LitT, 1);
567 pLits[2] = Abc_LitNotCond(LitF, 0);
570 pLits[0] = Abc_LitNotCond(LitI, 1);
571 pLits[1] = Abc_LitNotCond(LitT, 0);
572 pLits[2] = Abc_LitNotCond(LitF, 1);
575 pLits[0] = Abc_LitNotCond(LitI, 0);
576 pLits[1] = Abc_LitNotCond(LitE, 1);
577 pLits[2] = Abc_LitNotCond(LitF, 0);
580 pLits[0] = Abc_LitNotCond(LitI, 0);
581 pLits[1] = Abc_LitNotCond(LitE, 0);
582 pLits[2] = Abc_LitNotCond(LitF, 1);
599 pLits[0] = Abc_LitNotCond(LitT, 0);
600 pLits[1] = Abc_LitNotCond(LitE, 0);
601 pLits[2] = Abc_LitNotCond(LitF, 1);
604 pLits[0] = Abc_LitNotCond(LitT, 1);
605 pLits[1] = Abc_LitNotCond(LitE, 1);
606 pLits[2] = Abc_LitNotCond(LitF, 0);
624 int i, RetValue, Lit, LitNode, pLits[2];
625 assert( !Gia_IsComplement(pNode) );
626 assert( Gia_ObjIsAnd( pNode ) );
630 LitNode = Swp_ManLit2Lit(
p, Gia_Obj2Lit(
p->pGia,pNode) );
633 pLits[0] = Swp_ManLit2Lit(
p, Lit );
634 pLits[1] = Abc_LitNot( LitNode );
638 Vec_IntWriteEntry( vSuper, i, Abc_LitNot(pLits[0]) );
641 Vec_IntPush( vSuper, LitNode );
642 RetValue =
sat_solver_addclause(
p->pSat, Vec_IntArray(vSuper), Vec_IntArray(vSuper) + Vec_IntSize(vSuper) );
664 Vec_IntPushUnique( vSuper, Gia_Obj2Lit(
p, pObj) );
667 Gia_ManCollectSuper_rec(
p, Gia_ObjChild0(pObj), vSuper );
668 Gia_ManCollectSuper_rec(
p, Gia_ObjChild1(pObj), vSuper );
672 assert( !Gia_IsComplement(pObj) );
673 assert( Gia_ObjIsAnd(pObj) );
674 Vec_IntClear( vSuper );
675 Gia_ManCollectSuper_rec(
p, Gia_ObjChild0(pObj), vSuper );
676 Gia_ManCollectSuper_rec(
p, Gia_ObjChild1(pObj), vSuper );
693 if ( Id == 0 || Swp_ManObj2Lit(
p, Id) )
695 pObj = Gia_ManObj(
p->pGia, Id );
696 Swp_ManSetObj2Lit(
p, Id, Abc_Var2Lit(
p->nSatVars++, pObj->
fPhase) );
698 if ( Gia_ObjIsAnd(pObj) )
699 Vec_IntPush( vFront, Id );
701static void Gia_ManCnfNodeAddToSolver(
Swp_Man_t *
p,
int NodeId )
707 if ( NodeId == 0 || Swp_ManObj2Lit(
p, NodeId) )
711 Vec_IntClear(
p->vFront );
712 Gia_ManObjAddToFrontier(
p, NodeId,
p->vFront );
717 assert( Swp_ManObj2Lit(
p, Gia_ObjId(
p->pGia, pNode)) );
720 Vec_IntClear(
p->vFanins );
721 Vec_IntPushUnique(
p->vFanins, Gia_ObjFaninId0p(
p->pGia, Gia_ObjFanin0(pNode) ) );
722 Vec_IntPushUnique(
p->vFanins, Gia_ObjFaninId0p(
p->pGia, Gia_ObjFanin1(pNode) ) );
723 Vec_IntPushUnique(
p->vFanins, Gia_ObjFaninId1p(
p->pGia, Gia_ObjFanin0(pNode) ) );
724 Vec_IntPushUnique(
p->vFanins, Gia_ObjFaninId1p(
p->pGia, Gia_ObjFanin1(pNode) ) );
726 Gia_ManObjAddToFrontier(
p, Id,
p->vFront );
727 Gia_ManAddClausesMux(
p, pNode );
731 Gia_ManCollectSuper(
p->pGia, pNode,
p->vFanins );
733 Gia_ManObjAddToFrontier(
p, Abc_Lit2Var(Lit),
p->vFront );
734 Gia_ManAddClausesSuper(
p, pNode,
p->vFanins );
736 assert( Vec_IntSize(
p->vFanins) > 1 );
738p->timeCnf += Abc_Clock() - clk;
756 int i, LitSat, Value;
757 Vec_IntClear( vCex );
760 if ( Gia_ObjId(pGia, pObj) >= Vec_IntSize(vId2Lit) )
762 Vec_IntPush( vCex, 2 );
765 LitSat = Vec_IntEntry( vId2Lit, Gia_ObjId(pGia, pObj) );
768 Vec_IntPush( vCex, 2 );
772 Value = sat_solver_var_value(pSat, Abc_Lit2Var(LitSat)) ^ Abc_LitIsCompl(LitSat);
773 Vec_IntPush( vCex, Value );
792 int iLitOld, iLitNew, iLitAig, pLitsSat[2], RetValue, RetValue1, ProbeId, i;
802 if ( iLitOld == iLitNew )
805 if ( Abc_LitRegular(iLitOld) == Abc_LitRegular(iLitNew) )
807 Vec_IntFill(
p->vCexSwp, Gia_ManPiNum(pGia), 2 );
808 p->vCexUser =
p->vCexSwp;
812 if ( iLitOld < iLitNew )
814 assert( iLitOld > iLitNew );
817 Vec_IntClear(
p->vCondAssump );
821 Gia_ManCnfNodeAddToSolver(
p, Abc_Lit2Var(iLitAig) );
822 Vec_IntPush(
p->vCondAssump, Abc_LitNot(Swp_ManLit2Lit(
p, iLitAig)) );
824 Gia_ManCnfNodeAddToSolver(
p, Abc_Lit2Var(iLitOld) );
825 Gia_ManCnfNodeAddToSolver(
p, Abc_Lit2Var(iLitNew) );
826 sat_solver_compress(
p->pSat );
829 pLitsSat[0] = Swp_ManLit2Lit(
p, iLitOld );
830 pLitsSat[1] = Swp_ManLit2Lit(
p, iLitNew );
834 Vec_IntPush(
p->vCondAssump, pLitsSat[0] );
835 Vec_IntPush(
p->vCondAssump, Abc_LitNot(pLitsSat[1]) );
839 sat_solver_set_runtime_limit(
p->pSat,
p->nTimeOut * CLOCKS_PER_SEC + Abc_Clock() );
842 RetValue1 =
sat_solver_solve(
p->pSat, Vec_IntArray(
p->vCondAssump), Vec_IntArray(
p->vCondAssump) + Vec_IntSize(
p->vCondAssump),
843 (ABC_INT64_T)
p->nConfMax, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
844 Vec_IntShrink(
p->vCondAssump, Vec_IntSize(
p->vCondAssump) - 2 );
845p->timeSat += Abc_Clock() - clk;
848 pLitsSat[0] = Abc_LitNot( pLitsSat[0] );
851 pLitsSat[0] = Abc_LitNot( pLitsSat[0] );
852p->timeSatUnsat += Abc_Clock() - clk;
855 else if ( RetValue1 ==
l_True )
857 p->vCexUser = Gia_ManGetCex(
p->pGia,
p->vId2Lit,
p->pSat,
p->vCexSwp );
858p->timeSatSat += Abc_Clock() - clk;
864p->timeSatUndec += Abc_Clock() - clk;
870 if ( Gia_ManIsConstLit(iLitNew) )
878 Vec_IntPush(
p->vCondAssump, Abc_LitNot(pLitsSat[0]) );
879 Vec_IntPush(
p->vCondAssump, pLitsSat[1] );
882 RetValue1 =
sat_solver_solve(
p->pSat, Vec_IntArray(
p->vCondAssump), Vec_IntArray(
p->vCondAssump) + Vec_IntSize(
p->vCondAssump),
883 (ABC_INT64_T)
p->nConfMax, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
884 Vec_IntShrink(
p->vCondAssump, Vec_IntSize(
p->vCondAssump) - 2 );
885p->timeSat += Abc_Clock() - clk;
888 pLitsSat[1] = Abc_LitNot( pLitsSat[1] );
891 pLitsSat[1] = Abc_LitNot( pLitsSat[1] );
892p->timeSatUnsat += Abc_Clock() - clk;
895 else if ( RetValue1 ==
l_True )
897 p->vCexUser = Gia_ManGetCex(
p->pGia,
p->vId2Lit,
p->pSat,
p->vCexSwp );
898p->timeSatSat += Abc_Clock() - clk;
904p->timeSatUndec += Abc_Clock() - clk;
927 int RetValue, ProbeId, iLitAig, i;
934 Vec_IntClear(
p->vCondAssump );
938 Gia_ManCnfNodeAddToSolver(
p, Abc_Lit2Var(iLitAig) );
939 Vec_IntPush(
p->vCondAssump, Abc_LitNot(Swp_ManLit2Lit(
p, iLitAig)) );
941 sat_solver_compress(
p->pSat );
945 sat_solver_set_runtime_limit(
p->pSat,
p->nTimeOut * CLOCKS_PER_SEC + Abc_Clock() );
948 RetValue =
sat_solver_solve(
p->pSat, Vec_IntArray(
p->vCondAssump), Vec_IntArray(
p->vCondAssump) + Vec_IntSize(
p->vCondAssump),
949 (ABC_INT64_T)
p->nConfMax, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
950p->timeSat += Abc_Clock() - clk;
953 assert( Vec_IntSize(
p->vCondProbes) > 0 );
954p->timeSatUnsat += Abc_Clock() - clk;
959 else if ( RetValue ==
l_True )
961 p->vCexUser = Gia_ManGetCex(
p->pGia,
p->vId2Lit,
p->pSat,
p->vCexSwp );
962p->timeSatSat += Abc_Clock() - clk;
968p->timeSatUndec += Abc_Clock() - clk;
992 assert( Vec_IntSize(vProbes) == Gia_ManPiNum(pSrc) );
994 assert( Gia_ManPiNum(pDst) == Gia_ManPiNum(pSrc) );
999 vOutLits = Vec_IntAlloc( Gia_ManPoNum(pSrc) );
1001 Vec_IntPush( vOutLits, Gia_ObjFanin0Copy(pObj) );
1020 Gia_Man_t * pGiaCond, * pGiaOuts, * pGiaRes;
1024 pPars->nBTLimit = nConfs;
1025 pPars->fVerify = fVerify;
1026 pPars->fVerbose = fVerbose;
1035 if ( Gia_ManPoNum(pGiaCond) == 0 )
1036 Gia_ManAppendCo( pGiaCond, Gia_ManConst0Lit() );
1091 Vec_IntFree( vLits );
1119 printf(
"GIA manager statistics before and after applying \"%s\":\n", pCommLime );
1137 Vec_IntFree( vLits );
1163 vOuts = Vec_IntAlloc( Gia_ManPoNum(
p) );
1165 if ( i < Gia_ManPoNum(
p) -
p->nConstrs )
1172 Vec_IntFree( vOuts );
void Abc_FrameUpdateGia(Abc_Frame_t *pAbc, Gia_Man_t *pNew)
Gia_Man_t * Abc_FrameGetGia(Abc_Frame_t *pAbc)
#define ABC_SWAP(Type, a, b)
#define ABC_PRTP(a, t, T)
#define ABC_PRMP(a, f, F)
#define ABC_CALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_DLL Abc_Frame_t * Abc_FrameGetGlobalFrame()
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
#define sat_solver_addclause
ABC_DLL int Cmd_CommandExecute(Abc_Frame_t *pAbc, const char *sCommand)
Gia_Man_t * Gia_SweeperExtractUserLogic(Gia_Man_t *p, Vec_Int_t *vProbeIds, Vec_Ptr_t *vInNames, Vec_Ptr_t *vOutNames)
void Gia_SweeperSetRuntimeLimit(Gia_Man_t *p, int nSeconds)
Gia_Man_t * Gia_SweeperCleanup(Gia_Man_t *p, char *pCommLime)
double Gia_SweeperMemUsage(Gia_Man_t *pGia)
Gia_Man_t * Gia_SweeperFraigTest(Gia_Man_t *pInit, int nWords, int nConfs, int fVerbose)
int Gia_SweeperProbeUpdate(Gia_Man_t *p, int ProbeId, int iLitNew)
Gia_Man_t * Gia_SweeperSweep(Gia_Man_t *p, Vec_Int_t *vProbeOuts, int nWords, int nConfs, int fVerify, int fVerbose)
int Gia_SweeperCheckEquiv(Gia_Man_t *pGia, int Probe1, int Probe2)
void Gia_SweeperCondPush(Gia_Man_t *p, int ProbeId)
Vec_Int_t * Gia_SweeperCollectValidProbeIds(Gia_Man_t *p)
void Gia_SweeperStop(Gia_Man_t *pGia)
int Gia_SweeperCondCheckUnsat(Gia_Man_t *pGia)
Vec_Int_t * Gia_SweeperGetCex(Gia_Man_t *p)
int Gia_SweeperProbeCreate(Gia_Man_t *p, int iLit)
typedefABC_NAMESPACE_IMPL_START struct Swp_Man_t_ Swp_Man_t
DECLARATIONS ///.
Vec_Int_t * Gia_SweeperGraft(Gia_Man_t *pDst, Vec_Int_t *vProbes, Gia_Man_t *pSrc)
Vec_Int_t * Gia_SweeperCondVector(Gia_Man_t *p)
Gia_Man_t * Gia_SweeperStart(Gia_Man_t *pGia)
int Gia_SweeperProbeLit(Gia_Man_t *p, int ProbeId)
int Gia_SweeperProbeDelete(Gia_Man_t *p, int ProbeId)
int Gia_SweeperRun(Gia_Man_t *p, Vec_Int_t *vProbeIds, char *pCommLime, int fVerbose)
void Gia_SweeperSetConflictLimit(Gia_Man_t *p, int nConfMax)
int Gia_SweeperFraig(Gia_Man_t *p, Vec_Int_t *vProbeIds, char *pCommLime, int nWords, int nConfs, int fVerify, int fVerbose)
int Gia_SweeperIsRunning(Gia_Man_t *pGia)
void Gia_SweeperPrintStats(Gia_Man_t *pGia)
int Gia_SweeperCondPop(Gia_Man_t *p)
void Gia_SweeperLogicDump(Gia_Man_t *p, Vec_Int_t *vProbeIds, int fDumpConds, char *pFileName)
void Gia_ManStop(Gia_Man_t *p)
void Gia_ManHashStart(Gia_Man_t *p)
int Gia_ManHasDangling(Gia_Man_t *p)
Gia_Obj_t * Gia_ObjRecognizeMux(Gia_Obj_t *pNode, Gia_Obj_t **ppNodeT, Gia_Obj_t **ppNodeE)
#define Gia_ManForEachPo(p, pObj, i)
#define Gia_ManForEachAnd(p, pObj, i)
Gia_Man_t * Gia_ManDupOneHot(Gia_Man_t *p)
#define Gia_ManForEachPi(p, pObj, i)
Gia_Man_t * Gia_ManStart(int nObjsMax)
FUNCTION DEFINITIONS ///.
struct Gia_Obj_t_ Gia_Obj_t
int Gia_ObjIsMuxType(Gia_Obj_t *pNode)
struct Gia_Man_t_ Gia_Man_t
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
void Gia_ManIncrementTravId(Gia_Man_t *p)
void Gia_ManSetPhase(Gia_Man_t *p)
void Gia_ManHashStop(Gia_Man_t *p)
void Gia_ManPrintStats(Gia_Man_t *p, Gps_Par_t *pPars)
void Gia_ManDupAppendShare(Gia_Man_t *p, Gia_Man_t *pTwo)
void Gia_AigerWrite(Gia_Man_t *p, char *pFileName, int fWriteSymbols, int fCompact, int fWriteNewLine)
sat_solver * sat_solver_new(void)
void sat_solver_setnvars(sat_solver *s, int n)
void sat_solver_delete(sat_solver *s)
double sat_solver_memory(sat_solver *s)
void Sat_SolverPrintStats(FILE *pFile, sat_solver *p)
Gia_Man_t * Ssc_PerformSweeping(Gia_Man_t *pAig, Gia_Man_t *pCare, Ssc_Pars_t *pPars)
typedefABC_NAMESPACE_HEADER_START struct Ssc_Pars_t_ Ssc_Pars_t
INCLUDES ///.
void Ssc_ManSetDefaultParams(Ssc_Pars_t *p)
MACRO DEFINITIONS ///.
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.