54 if ( fUseBdds || fNaive )
75 printf(
"The total number of symmetries is %d.\n", nSymms );
110 printf(
"Statistics of BDD-based symmetry detection:\n" );
111 printf(
"Algorithm = %s. Reordering = %s. Garbage collection = %s.\n",
112 fNaive?
"naive" :
"fast", fReorder?
"yes" :
"no", fGarbCollect?
"yes" :
"no" );
113 ABC_PRT(
"Constructing BDDs", clkBdd );
114 ABC_PRT(
"Computing symms ", clkSym );
115 ABC_PRT(
"TOTAL ", clkBdd + clkSym );
159 printf(
"Total number of vars in functional supports = %8d.\n", nSupps );
160 printf(
"Total number of two-variable symmetries = %8d.\n", nSymms );
178 int i, k, nVars, nSize, fStart;
186 memset( pVarTaken, 0,
sizeof(
int) * nVars );
190 nSize = pSymms->
nVars;
191 for ( i = 0; i < nSize; i++ )
197 for ( k = 0; k < nSize; k++ )
201 if ( pSymms->
pSymms[i][k] == 0 )
204 assert( pVarTaken[k] == 0 );
209 printf(
" { %s", pInputNames[ pSymms->
pVars[i] ] );
213 printf(
" %s", pInputNames[ pSymms->
pVars[k] ] );
void Abc_NtkSymmetries(Abc_Ntk_t *pNtk, int fUseBdds, int fNaive, int fReorder, int fVerbose)
FUNCTION DEFINITIONS ///.
#define Cudd_IsConstant(node)
ABC_DLL char ** Abc_NtkCollectCioNames(Abc_Ntk_t *pNtk, int fCollectCos)
static int Abc_NtkCiNum(Abc_Ntk_t *pNtk)
int Sim_ComputeTwoVarSymms(Abc_Ntk_t *pNtk, int fVerbose)
DECLARATIONS ///.
#define ABC_ALLOC(type, num)
#define Abc_NtkForEachCo(pNtk, pCo, i)
static void Ntk_NetworkSymmsPrint(Abc_Ntk_t *pNtk, Extra_SymmInfo_t *pSymms)
static void Ntk_NetworkSymmsBdd(DdManager *dd, Abc_Ntk_t *pNtk, int fNaive, int fVerbose)
static abctime Abc_Clock()
static void * Abc_ObjGlobalBdd(Abc_Obj_t *pObj)
ABC_DLL void * Abc_NtkFreeGlobalBdds(Abc_Ntk_t *pNtk, int fFreeMan)
#define ABC_NAMESPACE_IMPL_END
#define ABC_NAMESPACE_IMPL_START
void Cudd_AutodynDisable(DdManager *unique)
ABC_DLL int Abc_NtkSizeOfGlobalBdds(Abc_Ntk_t *pNtk)
static ABC_NAMESPACE_IMPL_START void Abc_NtkSymmetriesUsingBdds(Abc_Ntk_t *pNtk, int fNaive, int fReorder, int fVerbose)
DECLARATIONS ///.
void Cudd_DisableGarbageCollection(DdManager *dd)
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
int Cudd_zddVarsFromBddVars(DdManager *dd, int multiplicity)
static void Abc_NtkSymmetriesUsingSandS(Abc_Ntk_t *pNtk, int fVerbose)
ABC_DLL void * Abc_NtkBuildGlobalBdds(Abc_Ntk_t *pNtk, int fBddSizeMax, int fDropInternal, int fReorder, int fVerbose)
int Cudd_SupportSize(DdManager *dd, DdNode *f)