55 assert( Vec_PtrSize(vCexesIn) == Vec_IntSize(vOutMap) );
56 vLeftOver = Vec_IntAlloc( Vec_PtrSize(vCexesIn) );
59 assert( Vec_PtrEntry(vCexesOut, iOut) == NULL );
60 pCex = (
Abc_Cex_t *)Vec_PtrEntry( vCexesIn, i );
63 Vec_PtrWriteEntry( vCexesIn, i, NULL );
64 Vec_PtrWriteEntry( vCexesOut, iOut, pCex );
68 Vec_IntWriteEntry( vOutMap, Vec_IntSize(vLeftOver), iOut );
69 Vec_IntPush( vLeftOver, i );
72 Vec_IntShrink( vOutMap, Vec_IntSize(vLeftOver) );
92 Counter += (Gia_ObjFaninLit0p(
p, pObj) == 0);
100 Counter += (Aig_ObjChild0(pObj) == Aig_ManConst0(
p));
117 printf(
"%3s : ", pStr );
118 printf(
"PI =%6d ", Saig_ManPiNum(
p) );
119 printf(
"PO =%6d ", Saig_ManPoNum(
p) );
120 printf(
"FF =%7d ", Saig_ManRegNum(
p) );
121 printf(
"ND =%7d ", Aig_ManNodeNum(
p) );
122 printf(
"Solved =%7d (%5.1f %%) ", nTotalPo-Saig_ManPoNum(
p), 100.0*(nTotalPo-Saig_ManPoNum(
p))/Abc_MaxInt(1, nTotalPo) );
123 printf(
"Size =%7d (%5.1f %%) ", Aig_ManObjNum(
p), 100.0*Aig_ManObjNum(
p)/Abc_MaxInt(1, nTotalSize) );
124 Abc_PrintTime( 1,
"Time", Abc_Clock() - clkStart );
168 abctime clkStart = Abc_Clock();
170 int nTotalPo = Saig_ManPoNum(
p);
171 int nTotalSize = Aig_ManObjNum(
p);
173 int i, RetValue = -1;
175 printf(
"MultiProve parameters: Global timeout = %d sec. Local timeout = %d sec. Time increase = %d %%.\n",
178 printf(
"Gap timeout = %d sec. Per-output timeout = %d msec. Use synthesis = %d. Dump final = %d. Verbose = %d.\n",
181 vOutMap = Vec_IntStartNatural( Saig_ManPoNum(
p) );
182 vCexes = Vec_PtrStart( Saig_ManPoNum(
p) );
183 for ( i = 0; i < 1000; i++ )
185 int nSolved = Vec_PtrCountZero(vCexes);
191 pParsSim->
TimeOut = TimeOutLoc;
196 if (
p->vSeqModelVec )
199 if ( Vec_IntSize(vLeftOver) == 0 )
203 Vec_IntFree( vLeftOver );
210 if ( nTimeToStop && Abc_Clock() + TimeOutLoc * CLOCKS_PER_SEC > nTimeToStop )
212 printf(
"Global timeout (%d sec) is reached.\n", pPars->
TimeOutGlo );
225 Abc_Print( 1,
"Some outputs are SAT (%d out of %d) after %d frames.\n",
226 Saig_ManPoNum(
p) - Vec_PtrCountZero(
p->vSeqModelVec), Saig_ManPoNum(
p), pParsBmc->
iFrame );
228 if (
p->vSeqModelVec )
231 if ( Vec_IntSize(vLeftOver) == 0 )
235 Vec_IntFree( vLeftOver );
242 if ( nTimeToStop && Abc_Clock() + TimeOutLoc * CLOCKS_PER_SEC > nTimeToStop )
244 printf(
"Global timeout (%d sec) is reached.\n", pPars->
TimeOutGlo );
249 if ( pPars->
TimeOutGap && pPars->
TimeOutGap <= TimeOutLoc && nSolved == Vec_PtrCountZero(vCexes) )
251 printf(
"Gap timeout (%d sec) is reached.\n", pPars->
TimeOutGap );
265 TimeOutLoc += TimeOutLoc * pPars->
TimeOutInc / 100;
267 Vec_IntFree( vOutMap );
274 printf(
"Final AIG was dumped into file \"%s\".\n", pFileName );
282 if (
p->vSeqModelVec )
283 Vec_PtrFreeFree(
p->vSeqModelVec ),
p->vSeqModelVec = NULL;
286 assert( Vec_PtrSize(
p->vSeqModelVec) == Gia_ManPoNum(
p) );
287 return Vec_PtrCountZero(
p->vSeqModelVec) == Vec_PtrSize(
p->vSeqModelVec) ? -1 : 0;
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Aig_ManStop(Aig_Man_t *p)
struct Aig_Obj_t_ Aig_Obj_t
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
int Gia_ManCountConst0PosGia(Gia_Man_t *p)
int Gia_ManCountConst0Pos(Aig_Man_t *p)
Aig_Man_t * Gia_ManMultiProveSyn(Aig_Man_t *p, int fVerbose, int fVeryVerbose)
ABC_NAMESPACE_IMPL_START Vec_Int_t * Gia_ManProcessOutputs(Vec_Ptr_t *vCexesIn, Vec_Ptr_t *vCexesOut, Vec_Int_t *vOutMap)
DECLARATIONS ///.
void Gia_ManMultiReport(Aig_Man_t *p, char *pStr, int nTotalPo, int nTotalSize, abctime clkStart)
int Gia_ManMultiProve(Gia_Man_t *p, Bmc_MulPar_t *pPars)
Vec_Ptr_t * Gia_ManMultiProveAig(Aig_Man_t *p, Bmc_MulPar_t *pPars)
void Saig_ParBmcSetDefaultParams(Saig_ParBmc_t *p)
struct Bmc_MulPar_t_ Bmc_MulPar_t
int Saig_ManBmcScalable(Aig_Man_t *pAig, Saig_ParBmc_t *pPars)
struct Saig_ParBmc_t_ Saig_ParBmc_t
Gia_Man_t * Gia_ManFromAig(Aig_Man_t *p)
INCLUDES ///.
Aig_Man_t * Gia_ManToAig(Gia_Man_t *p, int fChoices)
void Gia_ManStop(Gia_Man_t *p)
#define Gia_ManForEachPo(p, pObj, i)
struct Gia_Obj_t_ Gia_Obj_t
struct Gia_Man_t_ Gia_Man_t
Gia_Man_t * Gia_ManAigSyn2(Gia_Man_t *p, int fOldAlgo, int fCoarsen, int fCutMin, int nRelaxRatio, int fDelayMin, int fVerbose, int fVeryVerbose)
void Ioa_WriteAiger(Aig_Man_t *pMan, char *pFileName, int fWriteSymbols, int fCompact)
#define Saig_ManForEachPo(p, pObj, i)
Aig_Man_t * Saig_ManDupCones(Aig_Man_t *pAig, int *pPos, int nPos)
void Ssw_RarSetDefaultParams(Ssw_RarPars_t *p)
FUNCTION DEFINITIONS ///.
struct Ssw_RarPars_t_ Ssw_RarPars_t
int Ssw_RarSimulate(Aig_Man_t *pAig, Ssw_RarPars_t *pPars)
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.