mirror of https://github.com/YosysHQ/abc.git
Adding switch to replace proved outputs by const0.
This commit is contained in:
parent
901560bb23
commit
06094ade87
|
|
@ -1250,7 +1250,7 @@ extern Cbs_Man_t * Cbs_ManAlloc( Gia_Man_t * pGia );
|
||||||
extern void Cbs_ManStop( Cbs_Man_t * p );
|
extern void Cbs_ManStop( Cbs_Man_t * p );
|
||||||
extern int Cbs_ManSolve( Cbs_Man_t * p, Gia_Obj_t * pObj );
|
extern int Cbs_ManSolve( Cbs_Man_t * p, Gia_Obj_t * pObj );
|
||||||
extern int Cbs_ManSolve2( Cbs_Man_t * p, Gia_Obj_t * pObj, Gia_Obj_t * pObj2 );
|
extern int Cbs_ManSolve2( Cbs_Man_t * p, Gia_Obj_t * pObj, Gia_Obj_t * pObj2 );
|
||||||
extern Vec_Int_t * Cbs_ManSolveMiterNc( Gia_Man_t * pGia, int nConfs, Vec_Str_t ** pvStatus, int fVerbose );
|
extern Vec_Int_t * Cbs_ManSolveMiterNc( Gia_Man_t * pGia, int nConfs, Vec_Str_t ** pvStatus, int f0Proved, int fVerbose );
|
||||||
extern void Cbs_ManSetConflictNum( Cbs_Man_t * p, int Num );
|
extern void Cbs_ManSetConflictNum( Cbs_Man_t * p, int Num );
|
||||||
extern Vec_Int_t * Cbs_ReadModel( Cbs_Man_t * p );
|
extern Vec_Int_t * Cbs_ReadModel( Cbs_Man_t * p );
|
||||||
/*=== giaCTas.c ============================================================*/
|
/*=== giaCTas.c ============================================================*/
|
||||||
|
|
|
||||||
|
|
@ -1034,7 +1034,7 @@ void Cbs_ManSatPrintStats( Cbs_Man_t * p )
|
||||||
SeeAlso []
|
SeeAlso []
|
||||||
|
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
Vec_Int_t * Cbs_ManSolveMiterNc( Gia_Man_t * pAig, int nConfs, Vec_Str_t ** pvStatus, int fVerbose )
|
Vec_Int_t * Cbs_ManSolveMiterNc( Gia_Man_t * pAig, int nConfs, Vec_Str_t ** pvStatus, int f0Proved, int fVerbose )
|
||||||
{
|
{
|
||||||
extern void Gia_ManCollectTest( Gia_Man_t * pAig );
|
extern void Gia_ManCollectTest( Gia_Man_t * pAig );
|
||||||
extern void Cec_ManSatAddToStore( Vec_Int_t * vCexStore, Vec_Int_t * vCex, int Out );
|
extern void Cec_ManSatAddToStore( Vec_Int_t * vCexStore, Vec_Int_t * vCex, int Out );
|
||||||
|
|
@ -1105,6 +1105,8 @@ Vec_Int_t * Cbs_ManSolveMiterNc( Gia_Man_t * pAig, int nConfs, Vec_Str_t ** pvSt
|
||||||
}
|
}
|
||||||
if ( status == 1 )
|
if ( status == 1 )
|
||||||
{
|
{
|
||||||
|
if ( f0Proved )
|
||||||
|
Gia_ManPatchCoDriver( pAig, i, 0 );
|
||||||
p->nSatUnsat++;
|
p->nSatUnsat++;
|
||||||
p->nConfUnsat += p->Pars.nBTThis;
|
p->nConfUnsat += p->Pars.nBTThis;
|
||||||
p->timeSatUnsat += Abc_Clock() - clk;
|
p->timeSatUnsat += Abc_Clock() - clk;
|
||||||
|
|
|
||||||
|
|
@ -2818,6 +2818,66 @@ Gia_Man_t * Cec4_ManSatSolverChoices( Gia_Man_t * p, Gia_Man_t * pNew )
|
||||||
return pCho;
|
return pCho;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**Function*************************************************************
|
||||||
|
|
||||||
|
Synopsis [Converting AIG after SAT sweeping into AIG with choices.]
|
||||||
|
|
||||||
|
Description []
|
||||||
|
|
||||||
|
SideEffects []
|
||||||
|
|
||||||
|
SeeAlso []
|
||||||
|
|
||||||
|
***********************************************************************/
|
||||||
|
Gia_Man_t * Gia_ManCombSpecReduce( Gia_Man_t * p )
|
||||||
|
{
|
||||||
|
Gia_Obj_t * pObj, * pRepr; int i, iLit;
|
||||||
|
Vec_Int_t * vXors = Vec_IntAlloc( 100 );
|
||||||
|
Gia_Man_t * pTemp, * pNew = Gia_ManStart( Gia_ManObjNum(p) );
|
||||||
|
assert( p->pReprs && p->pNexts );
|
||||||
|
pNew->pName = Abc_UtilStrsav( p->pName );
|
||||||
|
pNew->pSpec = Abc_UtilStrsav( p->pSpec );
|
||||||
|
Gia_ManLevelNum(p);
|
||||||
|
Gia_ManSetPhase(p);
|
||||||
|
Gia_ManFillValue(p);
|
||||||
|
Gia_ManConst0(p)->Value = 0;
|
||||||
|
Gia_ManForEachCi( p, pObj, i )
|
||||||
|
pObj->Value = Gia_ManAppendCi( pNew );
|
||||||
|
Gia_ManHashAlloc( pNew );
|
||||||
|
Gia_ManForEachAnd( p, pObj, i )
|
||||||
|
{
|
||||||
|
pObj->Value = Gia_ManHashAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
|
||||||
|
pRepr = Gia_ObjReprObj( p, i );
|
||||||
|
if ( pRepr && Abc_Lit2Var(pObj->Value) != Abc_Lit2Var(pRepr->Value) )
|
||||||
|
{
|
||||||
|
//if ( Gia_ObjLevel(p, pRepr) > Gia_ObjLevel(p, pObj) + 50 )
|
||||||
|
//printf( "%d %d ", Gia_ObjLevel(p, pRepr), Gia_ObjLevel(p, pObj) );
|
||||||
|
iLit = Abc_LitNotCond( pRepr->Value, pObj->fPhase ^ pRepr->fPhase );
|
||||||
|
Vec_IntPush( vXors, Gia_ManHashXor( pNew, pObj->Value, iLit ) );
|
||||||
|
pObj->Value = iLit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Gia_ManHashStop( pNew );
|
||||||
|
if ( Vec_IntSize(vXors) == 0 )
|
||||||
|
Vec_IntPush( vXors, 0 );
|
||||||
|
Vec_IntForEachEntry( vXors, iLit, i )
|
||||||
|
Gia_ManAppendCo( pNew, iLit );
|
||||||
|
Vec_IntFree( vXors );
|
||||||
|
Gia_ManSetRegNum( pNew, Gia_ManRegNum(p) );
|
||||||
|
pNew = Gia_ManCleanup( pTemp = pNew );
|
||||||
|
Gia_ManStop( pTemp );
|
||||||
|
return pNew;
|
||||||
|
}
|
||||||
|
void Gia_ManCombSpecReduceTest( Gia_Man_t * p, char * pFileName )
|
||||||
|
{
|
||||||
|
Gia_Man_t * pSrm = Gia_ManCombSpecReduce( p );
|
||||||
|
if ( pFileName == NULL )
|
||||||
|
pFileName = "test.aig";
|
||||||
|
Gia_AigerWrite( pSrm, pFileName, 0, 0, 0 );
|
||||||
|
Abc_Print( 1, "Speculatively reduced model was written into file \"%s\".\n", pFileName );
|
||||||
|
Gia_ManStop( pSrm );
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
/// END OF FILE ///
|
/// END OF FILE ///
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
||||||
|
|
@ -36120,10 +36120,10 @@ int Abc_CommandAbc9Sat( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||||
Cec_ParSat_t ParsSat, * pPars = &ParsSat;
|
Cec_ParSat_t ParsSat, * pPars = &ParsSat;
|
||||||
Gia_Man_t * pTemp;
|
Gia_Man_t * pTemp;
|
||||||
int c;
|
int c;
|
||||||
int fNewSolver = 0, fCSat = 0;
|
int fNewSolver = 0, fCSat = 0, f0Proved = 0;
|
||||||
Cec_ManSatSetDefaultParams( pPars );
|
Cec_ManSatSetDefaultParams( pPars );
|
||||||
Extra_UtilGetoptReset();
|
Extra_UtilGetoptReset();
|
||||||
while ( ( c = Extra_UtilGetopt( argc, argv, "CSNanmtcxvh" ) ) != EOF )
|
while ( ( c = Extra_UtilGetopt( argc, argv, "CSNanmtcxzvh" ) ) != EOF )
|
||||||
{
|
{
|
||||||
switch ( c )
|
switch ( c )
|
||||||
{
|
{
|
||||||
|
|
@ -36178,6 +36178,9 @@ int Abc_CommandAbc9Sat( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||||
case 'x':
|
case 'x':
|
||||||
fNewSolver ^= 1;
|
fNewSolver ^= 1;
|
||||||
break;
|
break;
|
||||||
|
case 'z':
|
||||||
|
f0Proved ^= 1;
|
||||||
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
pPars->fVerbose ^= 1;
|
pPars->fVerbose ^= 1;
|
||||||
break;
|
break;
|
||||||
|
|
@ -36199,7 +36202,7 @@ int Abc_CommandAbc9Sat( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||||
else if ( pPars->fLearnCls )
|
else if ( pPars->fLearnCls )
|
||||||
vCounters = Tas_ManSolveMiterNc( pAbc->pGia, pPars->nBTLimit, &vStatus, pPars->fVerbose );
|
vCounters = Tas_ManSolveMiterNc( pAbc->pGia, pPars->nBTLimit, &vStatus, pPars->fVerbose );
|
||||||
else if ( pPars->fNonChrono )
|
else if ( pPars->fNonChrono )
|
||||||
vCounters = Cbs_ManSolveMiterNc( pAbc->pGia, pPars->nBTLimit, &vStatus, pPars->fVerbose );
|
vCounters = Cbs_ManSolveMiterNc( pAbc->pGia, pPars->nBTLimit, &vStatus, f0Proved, pPars->fVerbose );
|
||||||
else
|
else
|
||||||
vCounters = Cbs_ManSolveMiter( pAbc->pGia, pPars->nBTLimit, &vStatus, pPars->fVerbose );
|
vCounters = Cbs_ManSolveMiter( pAbc->pGia, pPars->nBTLimit, &vStatus, pPars->fVerbose );
|
||||||
Vec_IntFree( vCounters );
|
Vec_IntFree( vCounters );
|
||||||
|
|
@ -36207,7 +36210,7 @@ int Abc_CommandAbc9Sat( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pTemp = Cec_ManSatSolving( pAbc->pGia, pPars );
|
pTemp = Cec_ManSatSolving( pAbc->pGia, pPars, f0Proved );
|
||||||
Abc_FrameUpdateGia( pAbc, pTemp );
|
Abc_FrameUpdateGia( pAbc, pTemp );
|
||||||
}
|
}
|
||||||
if ( pAbc->pGia->vSeqModelVec )
|
if ( pAbc->pGia->vSeqModelVec )
|
||||||
|
|
@ -36219,7 +36222,7 @@ int Abc_CommandAbc9Sat( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
usage:
|
usage:
|
||||||
Abc_Print( -2, "usage: &sat [-CSN <num>] [-anmctxvh]\n" );
|
Abc_Print( -2, "usage: &sat [-CSN <num>] [-anmctxzvh]\n" );
|
||||||
Abc_Print( -2, "\t performs SAT solving for the combinational outputs\n" );
|
Abc_Print( -2, "\t performs SAT solving for the combinational outputs\n" );
|
||||||
Abc_Print( -2, "\t-C num : the max number of conflicts at a node [default = %d]\n", pPars->nBTLimit );
|
Abc_Print( -2, "\t-C num : the max number of conflicts at a node [default = %d]\n", pPars->nBTLimit );
|
||||||
Abc_Print( -2, "\t-S num : the min number of variables to recycle the solver [default = %d]\n", pPars->nSatVarMax );
|
Abc_Print( -2, "\t-S num : the min number of variables to recycle the solver [default = %d]\n", pPars->nSatVarMax );
|
||||||
|
|
@ -36230,6 +36233,7 @@ usage:
|
||||||
Abc_Print( -2, "\t-c : toggle using circuit-based SAT solver [default = %s]\n", fCSat? "yes": "no" );
|
Abc_Print( -2, "\t-c : toggle using circuit-based SAT solver [default = %s]\n", fCSat? "yes": "no" );
|
||||||
Abc_Print( -2, "\t-t : toggle using learning in curcuit-based solver [default = %s]\n", pPars->fLearnCls? "yes": "no" );
|
Abc_Print( -2, "\t-t : toggle using learning in curcuit-based solver [default = %s]\n", pPars->fLearnCls? "yes": "no" );
|
||||||
Abc_Print( -2, "\t-x : toggle using new solver [default = %s]\n", fNewSolver? "yes": "no" );
|
Abc_Print( -2, "\t-x : toggle using new solver [default = %s]\n", fNewSolver? "yes": "no" );
|
||||||
|
Abc_Print( -2, "\t-z : toggle replacing proved cones by const0 [default = %s]\n", f0Proved? "yes": "no" );
|
||||||
Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", pPars->fVerbose? "yes": "no" );
|
Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", pPars->fVerbose? "yes": "no" );
|
||||||
Abc_Print( -2, "\t-h : print the command usage\n");
|
Abc_Print( -2, "\t-h : print the command usage\n");
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
||||||
|
|
@ -219,7 +219,7 @@ extern void Cec_ManCecSetDefaultParams( Cec_ParCec_t * p );
|
||||||
extern void Cec_ManCorSetDefaultParams( Cec_ParCor_t * p );
|
extern void Cec_ManCorSetDefaultParams( Cec_ParCor_t * p );
|
||||||
extern void Cec_ManChcSetDefaultParams( Cec_ParChc_t * p );
|
extern void Cec_ManChcSetDefaultParams( Cec_ParChc_t * p );
|
||||||
extern Gia_Man_t * Cec_ManSatSweeping( Gia_Man_t * pAig, Cec_ParFra_t * pPars, int fSilent );
|
extern Gia_Man_t * Cec_ManSatSweeping( Gia_Man_t * pAig, Cec_ParFra_t * pPars, int fSilent );
|
||||||
extern Gia_Man_t * Cec_ManSatSolving( Gia_Man_t * pAig, Cec_ParSat_t * pPars );
|
extern Gia_Man_t * Cec_ManSatSolving( Gia_Man_t * pAig, Cec_ParSat_t * pPars, int f0Proved );
|
||||||
extern void Cec_ManSimulation( Gia_Man_t * pAig, Cec_ParSim_t * pPars );
|
extern void Cec_ManSimulation( Gia_Man_t * pAig, Cec_ParSim_t * pPars );
|
||||||
/*=== cecSeq.c ==========================================================*/
|
/*=== cecSeq.c ==========================================================*/
|
||||||
extern int Cec_ManSeqResimulateCounter( Gia_Man_t * pAig, Cec_ParSim_t * pPars, Abc_Cex_t * pCex );
|
extern int Cec_ManSeqResimulateCounter( Gia_Man_t * pAig, Cec_ParSim_t * pPars, Abc_Cex_t * pCex );
|
||||||
|
|
|
||||||
|
|
@ -256,7 +256,7 @@ int Cec_ManChoiceComputation_int( Gia_Man_t * pAig, Cec_ParChc_t * pPars )
|
||||||
// found counter-examples to speculation
|
// found counter-examples to speculation
|
||||||
clk2 = Abc_Clock();
|
clk2 = Abc_Clock();
|
||||||
if ( pPars->fUseCSat )
|
if ( pPars->fUseCSat )
|
||||||
vCexStore = Cbs_ManSolveMiterNc( pSrm, pPars->nBTLimit, &vStatus, 0 );
|
vCexStore = Cbs_ManSolveMiterNc( pSrm, pPars->nBTLimit, &vStatus, 0, 0 );
|
||||||
else
|
else
|
||||||
vCexStore = Cec_ManSatSolveMiter( pSrm, pParsSat, &vStatus );
|
vCexStore = Cec_ManSatSolveMiter( pSrm, pParsSat, &vStatus );
|
||||||
Gia_ManStop( pSrm );
|
Gia_ManStop( pSrm );
|
||||||
|
|
|
||||||
|
|
@ -232,14 +232,14 @@ void Cec_ManChcSetDefaultParams( Cec_ParChc_t * p )
|
||||||
SeeAlso []
|
SeeAlso []
|
||||||
|
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
Gia_Man_t * Cec_ManSatSolving( Gia_Man_t * pAig, Cec_ParSat_t * pPars )
|
Gia_Man_t * Cec_ManSatSolving( Gia_Man_t * pAig, Cec_ParSat_t * pPars, int f0Proved )
|
||||||
{
|
{
|
||||||
Gia_Man_t * pNew;
|
Gia_Man_t * pNew;
|
||||||
Cec_ManPat_t * pPat;
|
Cec_ManPat_t * pPat;
|
||||||
pPat = Cec_ManPatStart();
|
pPat = Cec_ManPatStart();
|
||||||
Cec_ManSatSolve( pPat, pAig, pPars, NULL, NULL, NULL );
|
Cec_ManSatSolve( pPat, pAig, pPars, NULL, NULL, NULL, f0Proved );
|
||||||
// pNew = Gia_ManDupDfsSkip( pAig );
|
// pNew = Gia_ManDupDfsSkip( pAig );
|
||||||
pNew = Gia_ManDup( pAig );
|
pNew = Gia_ManCleanup( pAig );
|
||||||
Cec_ManPatStop( pPat );
|
Cec_ManPatStop( pPat );
|
||||||
pNew->vSeqModelVec = pAig->vSeqModelVec;
|
pNew->vSeqModelVec = pAig->vSeqModelVec;
|
||||||
pAig->vSeqModelVec = NULL;
|
pAig->vSeqModelVec = NULL;
|
||||||
|
|
@ -445,7 +445,7 @@ clk = Abc_Clock();
|
||||||
if ( pPars->fRunCSat )
|
if ( pPars->fRunCSat )
|
||||||
Cec_ManSatSolveCSat( pPat, pSrm, pParsSat );
|
Cec_ManSatSolveCSat( pPat, pSrm, pParsSat );
|
||||||
else
|
else
|
||||||
Cec_ManSatSolve( pPat, pSrm, pParsSat, p->pAig->vIdsOrig, p->vXorNodes, pAig->vIdsEquiv );
|
Cec_ManSatSolve( pPat, pSrm, pParsSat, p->pAig->vIdsOrig, p->vXorNodes, pAig->vIdsEquiv, 0 );
|
||||||
p->timeSat += Abc_Clock() - clk;
|
p->timeSat += Abc_Clock() - clk;
|
||||||
if ( Cec_ManFraClassesUpdate( p, pSim, pPat, pSrm ) )
|
if ( Cec_ManFraClassesUpdate( p, pSim, pPat, pSrm ) )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -996,7 +996,7 @@ int Cec_ManLSCorrespondenceClasses( Gia_Man_t * pAig, Cec_ParCor_t * pPars )
|
||||||
// found counter-examples to speculation
|
// found counter-examples to speculation
|
||||||
clk2 = Abc_Clock();
|
clk2 = Abc_Clock();
|
||||||
if ( pPars->fUseCSat )
|
if ( pPars->fUseCSat )
|
||||||
vCexStore = Cbs_ManSolveMiterNc( pSrm, pPars->nBTLimit, &vStatus, 0 );
|
vCexStore = Cbs_ManSolveMiterNc( pSrm, pPars->nBTLimit, &vStatus, 0, 0 );
|
||||||
else
|
else
|
||||||
vCexStore = Cec_ManSatSolveMiter( pSrm, pParsSat, &vStatus );
|
vCexStore = Cec_ManSatSolveMiter( pSrm, pParsSat, &vStatus );
|
||||||
Gia_ManStop( pSrm );
|
Gia_ManStop( pSrm );
|
||||||
|
|
|
||||||
|
|
@ -204,7 +204,7 @@ extern int Cec_ManCountNonConstOutputs( Gia_Man_t * pAig );
|
||||||
extern int Cec_ManCheckNonTrivialCands( Gia_Man_t * pAig );
|
extern int Cec_ManCheckNonTrivialCands( Gia_Man_t * pAig );
|
||||||
/*=== cecSolve.c ============================================================*/
|
/*=== cecSolve.c ============================================================*/
|
||||||
extern int Cec_ObjSatVarValue( Cec_ManSat_t * p, Gia_Obj_t * pObj );
|
extern int Cec_ObjSatVarValue( Cec_ManSat_t * p, Gia_Obj_t * pObj );
|
||||||
extern void Cec_ManSatSolve( Cec_ManPat_t * pPat, Gia_Man_t * pAig, Cec_ParSat_t * pPars, Vec_Int_t * vIdsOrig, Vec_Int_t * vMiterPairs, Vec_Int_t * vEquivPairs );
|
extern void Cec_ManSatSolve( Cec_ManPat_t * pPat, Gia_Man_t * pAig, Cec_ParSat_t * pPars, Vec_Int_t * vIdsOrig, Vec_Int_t * vMiterPairs, Vec_Int_t * vEquivPairs, int f0Proved );
|
||||||
extern void Cec_ManSatSolveCSat( Cec_ManPat_t * pPat, Gia_Man_t * pAig, Cec_ParSat_t * pPars );
|
extern void Cec_ManSatSolveCSat( Cec_ManPat_t * pPat, Gia_Man_t * pAig, Cec_ParSat_t * pPars );
|
||||||
extern Vec_Str_t * Cec_ManSatSolveSeq( Vec_Ptr_t * vPatts, Gia_Man_t * pAig, Cec_ParSat_t * pPars, int nRegs, int * pnPats );
|
extern Vec_Str_t * Cec_ManSatSolveSeq( Vec_Ptr_t * vPatts, Gia_Man_t * pAig, Cec_ParSat_t * pPars, int nRegs, int * pnPats );
|
||||||
extern Vec_Int_t * Cec_ManSatSolveMiter( Gia_Man_t * pAig, Cec_ParSat_t * pPars, Vec_Str_t ** pvStatus );
|
extern Vec_Int_t * Cec_ManSatSolveMiter( Gia_Man_t * pAig, Cec_ParSat_t * pPars, Vec_Str_t ** pvStatus );
|
||||||
|
|
|
||||||
|
|
@ -696,7 +696,7 @@ Abc_Cex_t * Cex_ManGenCex( Cec_ManSat_t * p, int iOut )
|
||||||
}
|
}
|
||||||
return pCex;
|
return pCex;
|
||||||
}
|
}
|
||||||
void Cec_ManSatSolve( Cec_ManPat_t * pPat, Gia_Man_t * pAig, Cec_ParSat_t * pPars, Vec_Int_t * vIdsOrig, Vec_Int_t * vMiterPairs, Vec_Int_t * vEquivPairs )
|
void Cec_ManSatSolve( Cec_ManPat_t * pPat, Gia_Man_t * pAig, Cec_ParSat_t * pPars, Vec_Int_t * vIdsOrig, Vec_Int_t * vMiterPairs, Vec_Int_t * vEquivPairs, int f0Proved )
|
||||||
{
|
{
|
||||||
Bar_Progress_t * pProgress = NULL;
|
Bar_Progress_t * pProgress = NULL;
|
||||||
Cec_ManSat_t * p;
|
Cec_ManSat_t * p;
|
||||||
|
|
@ -747,6 +747,9 @@ clk2 = Abc_Clock();
|
||||||
if ( pPars->fSaveCexes && status != -1 )
|
if ( pPars->fSaveCexes && status != -1 )
|
||||||
Vec_PtrWriteEntry( pAig->vSeqModelVec, i, status ? (Abc_Cex_t *)(ABC_PTRINT_T)1 : Cex_ManGenCex(p, i) );
|
Vec_PtrWriteEntry( pAig->vSeqModelVec, i, status ? (Abc_Cex_t *)(ABC_PTRINT_T)1 : Cex_ManGenCex(p, i) );
|
||||||
|
|
||||||
|
if ( f0Proved && status == 1 )
|
||||||
|
Gia_ManPatchCoDriver( pAig, i, 0 );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if ( status == -1 )
|
if ( status == -1 )
|
||||||
{
|
{
|
||||||
|
|
@ -807,7 +810,7 @@ void Cec_ManSatSolveCSat( Cec_ManPat_t * pPat, Gia_Man_t * pAig, Cec_ParSat_t *
|
||||||
{
|
{
|
||||||
Vec_Str_t * vStatus;
|
Vec_Str_t * vStatus;
|
||||||
Vec_Int_t * vPat = Vec_IntAlloc( 1000 );
|
Vec_Int_t * vPat = Vec_IntAlloc( 1000 );
|
||||||
Vec_Int_t * vCexStore = Cbs_ManSolveMiterNc( pAig, pPars->nBTLimit, &vStatus, 0 );
|
Vec_Int_t * vCexStore = Cbs_ManSolveMiterNc( pAig, pPars->nBTLimit, &vStatus, 0, 0 );
|
||||||
Gia_Obj_t * pObj;
|
Gia_Obj_t * pObj;
|
||||||
int i, status, iStart = 0;
|
int i, status, iStart = 0;
|
||||||
assert( Vec_StrSize(vStatus) == Gia_ManCoNum(pAig) );
|
assert( Vec_StrSize(vStatus) == Gia_ManCoNum(pAig) );
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue