37extern int Abc_NtkRefactor(
Abc_Ntk_t * pNtk,
int nNodeSizeMax,
int nMinSaved,
int nConeSizeMax,
int fUpdateLevel,
int fUseZeros,
int fUseDcs,
int fVerbose );
40static Abc_Ntk_t * Abc_NtkMiterFraig(
Abc_Ntk_t * pNtk,
int nBTLimit, ABC_INT64_T nInspLimit,
int * pRetValue,
int * pNumFails, ABC_INT64_T * pNumConfs, ABC_INT64_T * pNumInspects );
41static void Abc_NtkMiterPrint(
Abc_Ntk_t * pNtk,
char * pString,
abctime clk,
int fVerbose );
66 int RetValue = -1, nIter, nSatFails, Counter;
68 ABC_INT64_T nSatConfs, nSatInspects, nInspectLimit;
72 assert( Abc_NtkIsStrash(pNtk) );
73 assert( Abc_NtkPoNum(pNtk) == 1 );
77 printf(
"RESOURCE LIMITS: Iterations = %d. Rewriting = %s. Fraiging = %s.\n",
79 printf(
"Miter = %d (%3.1f). Rwr = %d (%3.1f). Fraig = %d (%3.1f). Last = %d.\n",
90 Abc_NtkMiterPrint( pNtk,
"SAT solving", clk, pParams->
fVerbose );
96 for ( nIter = 0; nIter < pParams->
nItersMax; nIter++ )
100 printf(
"ITERATION %2d : Confs = %6d. FraigBTL = %3d. \n", nIter+1,
110 Abc_NtkMiterPrint( pNtk,
"SAT solving", clk, pParams->
fVerbose );
121 printf(
"Reached global limit on conflicts/inspects. Quitting.\n" );
152 if ( --Counter == 0 )
157 if ( --Counter == 0 )
162 if ( --Counter == 0 )
165 Abc_NtkMiterPrint( pNtk,
"Rewriting ", clk, pParams->
fVerbose );
174 Abc_NtkMiterPrint( pNtk,
"FRAIGing ", clk, pParams->
fVerbose );
186 printf(
"Reached global limit on conflicts/inspects. Quitting.\n" );
196 if ( RetValue < 0 && pParams->fUseBdds )
200 printf(
"Attempting BDDs with node limit %d ...\n", pParams->
nBddSizeLimit );
208 RetValue = ( (Abc_NtkNodeNum(pNtk) == 1) && (Abc_ObjFanin0(Abc_NtkPo(pNtk,0))->pData == Cudd_ReadLogicZero((DdManager *)pNtk->
pManFunc)) );
212 Abc_NtkMiterPrint( pNtk,
"BDD building", clk, pParams->
fVerbose );
226 Abc_NtkMiterPrint( pNtk,
"SAT solving", clk, pParams->
fVerbose );
230 if ( RetValue == 0 && pNtk->
pModel == NULL )
233 memset( pNtk->
pModel, 0,
sizeof(
int) * Abc_NtkCiNum(pNtk) );
250Abc_Ntk_t * Abc_NtkMiterFraig(
Abc_Ntk_t * pNtk,
int nBTLimit, ABC_INT64_T nInspLimit,
int * pRetValue,
int * pNumFails, ABC_INT64_T * pNumConfs, ABC_INT64_T * pNumInspects )
255 int nWords1, nWords2, nWordsMin, RetValue;
263 nWords2 = (1<<27) / (Abc_NtkNodeNum(pNtk) + Abc_NtkCiNum(pNtk));
264 nWordsMin = Abc_MinInt( nWords1, nWords2 );
291 memcpy( pNtkNew->
pModel, pModel,
sizeof(
int) * Abc_NtkCiNum(pNtkNew) );
295 *pRetValue = RetValue;
316void Abc_NtkMiterPrint(
Abc_Ntk_t * pNtk,
char * pString,
abctime clk,
int fVerbose )
320 printf(
"Nodes = %7d. Levels = %4d. ", Abc_NtkNodeNum(pNtk),
322 ABC_PRT( pString, Abc_Clock() - clk );
Abc_Ntk_t * Abc_NtkMiterRwsat(Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_NtkFromFraig(Fraig_Man_t *pMan, Abc_Ntk_t *pNtk)
DECLARATIONS ///.
ABC_NAMESPACE_IMPL_START int Abc_NtkRefactor(Abc_Ntk_t *pNtk, int nNodeSizeMax, int nMinSaved, int nConeSizeMax, int fUpdateLevel, int fUseZeros, int fUseDcs, int fVerbose)
DECLARATIONS ///.
int Abc_NtkMiterProve(Abc_Ntk_t **ppNtk, void *pPars)
FUNCTION DEFINITIONS ///.
ABC_DLL Abc_Ntk_t * Abc_NtkCollapse(Abc_Ntk_t *pNtk, int fBddSizeMax, int fDualRail, int fReorder, int fReverse, int fDumpOrder, int fVerbose)
DECLARATIONS ///.
struct Abc_Ntk_t_ Abc_Ntk_t
ABC_DLL int Abc_NtkMiterSat(Abc_Ntk_t *pNtk, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, int fVerbose, ABC_INT64_T *pNumConfs, ABC_INT64_T *pNumInspects)
FUNCTION DEFINITIONS ///.
ABC_DLL int Abc_NtkRewrite(Abc_Ntk_t *pNtk, int fUpdateLevel, int fUseZeros, int fVerbose, int fVeryVerbose, int fPlaceEnable)
FUNCTION DEFINITIONS ///.
ABC_DLL int Abc_NtkLevel(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_AigLevel(Abc_Ntk_t *pNtk)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Ntk_t * Abc_NtkBalance(Abc_Ntk_t *pNtk, int fDuplicate, int fSelective, int fUpdateLevel)
FUNCTION DEFINITIONS ///.
ABC_DLL void * Abc_NtkToFraig(Abc_Ntk_t *pNtk, void *pParams, int fAllNodes, int fExdc)
ABC_DLL int Abc_NtkMiterIsConstant(Abc_Ntk_t *pMiter)
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
int Fraig_ManReadInspects(Fraig_Man_t *p)
void Fraig_ManProveMiter(Fraig_Man_t *p)
int Fraig_ManReadSatFails(Fraig_Man_t *p)
void Fraig_ManFree(Fraig_Man_t *pMan)
int Fraig_ManCheckMiter(Fraig_Man_t *p)
void Fraig_ParamsSetDefault(Fraig_Params_t *pParams)
int Fraig_ManReadConflicts(Fraig_Man_t *p)
int * Fraig_ManReadModel(Fraig_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Fraig_ManStruct_t_ Fraig_Man_t
INCLUDES ///.
struct Fraig_ParamsStruct_t_ Fraig_Params_t
struct Prove_ParamsStruct_t_ Prove_Params_t
ABC_INT64_T nTotalBacktracksMade
ABC_INT64_T nTotalInspectsMade
ABC_INT64_T nTotalBacktrackLimit
float nMiteringLimitMulti
ABC_INT64_T nTotalInspectLimit
float nRewritingLimitMulti
float nFraigingLimitMulti