91 printf(
"CEC enging parameters:\n" );
92 printf(
"Fraiging enabled: %s\n", pParams->
fUseFraiging?
"yes":
"no" );
93 printf(
"Rewriting enabled: %s\n", pParams->
fUseRewriting?
"yes":
"no" );
94 printf(
"BDD construction enabled: %s\n", pParams->
fUseBdds?
"yes":
"no" );
95 printf(
"Verbose output enabled: %s\n", pParams->
fVerbose?
"yes":
"no" );
96 printf(
"Solver iterations: %d\n", pParams->
nItersMax );
101 printf(
"Starting number of conflicts in fraiging: %.2f\n", pParams->
nFraigingLimitMulti );
103 printf(
"BDD size limit for bailing out: %d\n", pParams->
nBddSizeLimit );
104 printf(
"BDD reordering enabled: %s\n", pParams->
fBddReorder?
"yes":
"no" );
108 printf(
"Parameter dump complete.\n" );
195 if ( pParams == NULL )
274 for ( i = 0; i < p->vNodes->nSize; i++ )
275 if ( p->vNodes->pArray[i]->vFanins )
278 p->vNodes->pArray[i]->vFanins = NULL;
293 if ( p->pModel )
ABC_FREE( p->pModel );
329 assert( p->pSat == NULL );
354 nMemory = ((double)(p->vInputs->nSize + p->vNodes->nSize) *
355 (
sizeof(
Fraig_Node_t) +
sizeof(
unsigned)*(p->nWordsRand + p->nWordsDyna) ))/(1<<20);
356 printf(
"Words: Random = %d. Dynamic = %d. Used = %d. Memory = %0.2f MB.\n",
357 p->nWordsRand, p->nWordsDyna, p->iWordPerm, nMemory );
358 printf(
"Proof = %d. Counter-example = %d. Fail = %d. FailReal = %d. Zero = %d.\n",
359 p->nSatProof, p->nSatCounter, p->nSatFails, p->nSatFailsReal, p->nSatZeros );
360 printf(
"Nodes: Final = %d. Total = %d. Mux = %d. (Exor = %d.) ClaVars = %d.\n",
392 unsigned * pUnsigned;
394 assert( nSize > 0 && nWords > 0 );
396 pUnsigned =
ABC_ALLOC(
unsigned, nSize * nWords );
399 memset( pUnsigned, 0,
sizeof(
unsigned) * nSize * nWords );
400 for ( i = 1; i < nSize; i++ )
402 vInfo->
nSize = nSize;
421 unsigned * pUnsigned;
422 int nRandom, nDynamic;
427 nWords = nRandom / 32 + nDynamic / 32;
430 for ( i = 0; i < p->vNodes->nSize; i++ )
432 pNode = p->vNodes->pArray[i];
434 pUnsigned = (
unsigned *)vInfo->
pArray[i];
435 for ( k = 0; k < nRandom / 32; k++ )
436 pUnsigned[k] = pNode->
puSimR[k];
437 for ( k = 0; k < nDynamic / 32; k++ )
438 pUnsigned[nRandom / 32 + k] = pNode->
puSimD[k];
456 int fCompl1, fCompl2, i;
463 assert( pNode1 != pNode2 );
466 if ( fCompl1 && fCompl2 )
468 for ( i = 0; i < p->nWordsRand; i++ )
471 for ( i = 0; i < p->iWordStart; i++ )
476 if ( !fCompl1 && fCompl2 )
478 for ( i = 0; i < p->nWordsRand; i++ )
481 for ( i = 0; i < p->iWordStart; i++ )
486 if ( fCompl1 && !fCompl2 )
488 for ( i = 0; i < p->nWordsRand; i++ )
491 for ( i = 0; i < p->iWordStart; i++ )
498 for ( i = 0; i < p->nWordsRand; i++ )
501 for ( i = 0; i < p->iWordStart; i++ )
524 int i, fComp, RetValue;
525 if ( p->pSat == NULL )
529 for ( i = 0; i < nNodes; i++ )
void Fraig_ManFree(Fraig_Man_t *p)
int Fraig_ManReadPatternNumRandom(Fraig_Man_t *p)
Fraig_Node_t * Fraig_NodeCreateConst(Fraig_Man_t *p)
FUNCTION DEFINITIONS ///.
int Fraig_CountNodes(Fraig_Man_t *pMan, int fEquiv)
Msat_IntVec_t * Msat_SolverReadVarsUsed(Msat_Solver_t *p)
typedefABC_NAMESPACE_HEADER_START struct Fraig_ManStruct_t_ Fraig_Man_t
INCLUDES ///.
void Fraig_ManAddClause(Fraig_Man_t *p, Fraig_Node_t **ppNodes, int nNodes)
int Msat_SolverAddClause(Msat_Solver_t *p, Msat_IntVec_t *pLits)
float nMiteringLimitMulti
void Msat_SolverFree(Msat_Solver_t *p)
Msat_IntVec_t * Msat_SolverReadConeVars(Msat_Solver_t *p)
void Msat_IntVecClear(Msat_IntVec_t *p)
#define ABC_ALLOC(type, num)
unsigned Aig_ManRandom(int fReset)
void Fraig_HashTableFree(Fraig_HashTable_t *p)
Fraig_NodeVec_t * Fraig_UtilInfoAlloc(int nSize, int nWords, int fClean)
Msat_Solver_t * Msat_SolverAlloc(int nVars, double dClaInc, double dClaDecay, double dVarInc, double dVarDecay, int fVerbose)
for(p=first;p->value< newval;p=p->next)
void Fraig_ManCreateSolver(Fraig_Man_t *p)
ABC_NAMESPACE_IMPL_START abctime timeSelect
DECLARATIONS ///.
#define FRAIG_PATTERNS_RANDOM
#define Fraig_PrintTime(a, t)
void Msat_IntVecPush(Msat_IntVec_t *p, int Entry)
int Fraig_ManReadPatternNumDynamic(Fraig_Man_t *p)
void Fraig_FeedBackInit(Fraig_Man_t *p)
FUNCTION DEFINITIONS ///.
Fraig_NodeVec_t * Fraig_ManGetSimInfo(Fraig_Man_t *p)
void Fraig_NodeVecFree(Fraig_NodeVec_t *p)
int Fraig_ManCountMuxes(Fraig_Man_t *pMan)
Fraig_NodeVec_t * Fraig_NodeVecAlloc(int nCap)
DECLARATIONS ///.
int Fraig_ManCheckClauseUsingSimInfo(Fraig_Man_t *p, Fraig_Node_t *pNode1, Fraig_Node_t *pNode2)
#define ABC_NAMESPACE_IMPL_END
#define FRAIG_PATTERNS_DYNAMIC
ABC_INT64_T nTotalInspectLimit
void Fraig_ManPrintStats(Fraig_Man_t *p)
#define FRAIG_NUM_WORDS(n)
float nRewritingLimitMulti
Msat_IntVec_t * Msat_IntVecAlloc(int nCap)
FUNCTION DEFINITIONS ///.
void Msat_IntVecFree(Msat_IntVec_t *p)
#define Fraig_IsComplement(p)
GLOBAL VARIABLES ///.
Fraig_HashTable_t * Fraig_HashTableCreate(int nSize)
FUNCTION DEFINITIONS ///.
#define ABC_NAMESPACE_IMPL_START
ABC_INT64_T nTotalBacktrackLimit
struct Fraig_NodeStruct_t_ Fraig_Node_t
Msat_ClauseVec_t * Msat_SolverReadAdjacents(Msat_Solver_t *p)
Fraig_Man_t * Fraig_ManCreate(Fraig_Params_t *pParams)
void Fraig_ManReportChoices(Fraig_Man_t *pMan)
float nFraigingLimitMulti
void Fraig_MemFixedStop(Fraig_MemFixed_t *p, int fVerbose)
int Fraig_ManCountExors(Fraig_Man_t *pMan)
#define MSAT_VAR2LIT(v, s)
void Fraig_ParamsSetDefaultFull(Fraig_Params_t *pParams)
void Prove_ParamsPrint(Prove_Params_t *pParams)
Fraig_MemFixed_t * Fraig_MemFixedStart(int nEntrySize)
FUNCTION DEFINITIONS ///.
void Msat_SolverPrintStats(Msat_Solver_t *p)
void Fraig_ParamsSetDefault(Fraig_Params_t *pParams)
void Prove_ParamsSetDefault(Prove_Params_t *pParams)
FUNCTION DEFINITIONS ///.