55 DdNode * bRelation, * bInitial, * bUnreach;
84 fprintf( stdout,
"BDD nodes in the unreachable states before reordering %d.\n",
Cudd_DagSize(bUnreach) );
88 fprintf( stdout,
"BDD nodes in the unreachable states after reordering %d.\n",
Cudd_DagSize(bUnreach) );
104 printf(
"Abc_NtkExtractSequentialDcs: The network check has failed.\n" );
124 DdNode * bRel, * bTemp, * bProd, * bVar, * bInputs;
164 fprintf( stdout,
"BDD nodes in the transition relation before reordering %d.\n",
Cudd_DagSize(bRel) );
168 fprintf( stdout,
"BDD nodes in the transition relation after reordering %d.\n",
Cudd_DagSize(bRel) );
187 DdNode ** pbVarsX, ** pbVarsY;
188 DdNode * bTemp, * bProd, * bVar;
226 DdNode * bRelation, * bReached, * bCubeCs;
227 DdNode * bCurrent, * bNext, * bTemp;
231 bCurrent = bInitial;
Cudd_Ref( bCurrent );
232 bReached = bInitial;
Cudd_Ref( bReached );
233 bRelation = bTrans;
Cudd_Ref( bRelation );
235 for ( nIters = 1; ; nIters++ )
266 fprintf( stdout,
"Reachability analysis completed in %d iterations.\n", nIters );
267 fprintf( stdout,
"The number of minterms in the reachable state set = %d. (%6.2f %%)\n", nMints, 100.0*nMints/(1<<
Abc_NtkLatchNum(pNtk)) );
295 pNtkNew->
pSpec = NULL;
310 for ( i = 0; i < dd->
size; i++ )
342 printf(
"Abc_NtkConstructExdc(): Converting to SOPs has failed.\n" );
static int Abc_ObjIsCi(Abc_Obj_t *pObj)
void Cudd_RecursiveDeref(DdManager *table, DdNode *n)
double Cudd_CountMinterm(DdManager *manager, DdNode *node, int nvars)
static DdNode * Abc_NtkComputeUnreachable(DdManager *dd, Abc_Ntk_t *pNtk, DdNode *bRelation, DdNode *bInitial, int fVerbose)
void Cudd_Deref(DdNode *node)
#define Abc_NtkForEachLatchOutput(pNtk, pObj, i)
DdNode * Cudd_bddExistAbstract(DdManager *manager, DdNode *f, DdNode *cube)
int Cudd_SetVarMap(DdManager *manager, DdNode **x, DdNode **y, int n)
static int Abc_NtkLatchNum(Abc_Ntk_t *pNtk)
static ABC_NAMESPACE_IMPL_START DdNode * Abc_NtkTransitionRelation(DdManager *dd, Abc_Ntk_t *pNtk, int fVerbose)
DECLARATIONS ///.
static int Abc_NtkCiNum(Abc_Ntk_t *pNtk)
#define ABC_ALLOC(type, num)
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
ABC_DLL char * Abc_ObjAssignName(Abc_Obj_t *pObj, char *pName, char *pSuffix)
static DdNode * Abc_NtkInitStateAndVarMap(DdManager *dd, Abc_Ntk_t *pNtk, int fVerbose)
static Abc_Obj_t * Abc_ObjFanin0(Abc_Obj_t *pObj)
int Abc_NtkExtractSequentialDcs(Abc_Ntk_t *pNtk, int fVerbose)
FUNCTION DEFINITIONS ///.
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
static void * Abc_ObjGlobalBdd(Abc_Obj_t *pObj)
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
ABC_DLL Abc_Ntk_t * Abc_NtkAlloc(Abc_NtkType_t Type, Abc_NtkFunc_t Func, int fUseMemMan)
DECLARATIONS ///.
ABC_DLL void * Abc_NtkFreeGlobalBdds(Abc_Ntk_t *pNtk, int fFreeMan)
DdNode * Cudd_bddVarMap(DdManager *manager, DdNode *f)
ABC_DLL int Abc_AigCleanup(Abc_Aig_t *pMan)
#define ABC_NAMESPACE_IMPL_END
DdNode * Cudd_bddAndAbstract(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube)
#define Abc_NtkForEachLatch(pNtk, pObj, i)
static int Abc_LatchIsInit1(Abc_Obj_t *pLatch)
static Abc_Obj_t * Abc_NtkCreatePi(Abc_Ntk_t *pNtk)
DdNode * Cudd_bddXnor(DdManager *dd, DdNode *f, DdNode *g)
DdNode * Cudd_bddOr(DdManager *dd, DdNode *f, DdNode *g)
#define ABC_NAMESPACE_IMPL_START
void Cudd_AutodynDisable(DdManager *unique)
ABC_DLL int Abc_NtkLogicMakeSimpleCos(Abc_Ntk_t *pNtk, int fDuplicate)
int Cudd_bddLeq(DdManager *dd, DdNode *f, DdNode *g)
ABC_DLL int Abc_NtkBddToSop(Abc_Ntk_t *pNtk, int fDirect)
static int Abc_NtkPiNum(Abc_Ntk_t *pNtk)
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
DdNode * Cudd_bddIthVar(DdManager *dd, int i)
#define Abc_NtkForEachLatchInput(pNtk, pObj, i)
static Abc_Obj_t * Abc_NtkCreateNode(Abc_Ntk_t *pNtk)
unsigned int Cudd_ReadKeys(DdManager *dd)
#define Cudd_NotCond(node, c)
DdNode * Cudd_bddAnd(DdManager *dd, DdNode *f, DdNode *g)
int Cudd_zddVarsFromBddVars(DdManager *dd, int multiplicity)
static Abc_Ntk_t * Abc_NtkConstructExdc(DdManager *dd, Abc_Ntk_t *pNtk, DdNode *bUnreach)
int Cudd_ReduceHeap(DdManager *table, Cudd_ReorderingType heuristic, int minsize)
void Cudd_AutodynEnable(DdManager *unique, Cudd_ReorderingType method)
ABC_DLL void * Abc_NtkBuildGlobalBdds(Abc_Ntk_t *pNtk, int fBddSizeMax, int fDropInternal, int fReorder, int fVerbose)
#define Abc_NtkForEachPo(pNtk, pPo, i)
unsigned int Cudd_ReadDead(DdManager *dd)
static Abc_Obj_t * Abc_NtkCreatePo(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_NodeMinimumBase(Abc_Obj_t *pNode)
int Cudd_DagSize(DdNode *node)