133 return (RetValue > 0);
168 int Class0 = 0, ClassCi = 0;
174 printf(
"Obj %d is not an AND but it has a repr %d.\n", i,
Aig_ObjId(
Aig_ObjRepr(p, pObj)) ), fProb = 1;
179 printf(
"Representive verification successful.\n" );
181 printf(
"Representive verification FAILED.\n" );
192 printf(
"Const0 nodes = %d. ConstCI nodes = %d.\n", Class0, ClassCi );
213 if ( p->pEquivs[i] != NULL )
216 printf(
"node %d participates in more than one choice class\n", i ), fProb = 1;
220 printf(
"node %d and repr %d have diff supports\n", pObj->
Id, p->pEquivs[i]->Id );
222 pObj = p->pEquivs[i];
223 if ( p->pEquivs[
Aig_ObjId(pObj)] == NULL )
226 printf(
"repr %d has final node %d participates in more than one choice class\n", i, pObj->
Id ), fProb = 1;
230 if ( pObj->
nRefs > 0 )
231 printf(
"node %d belonging to choice has fanout %d\n", pObj->
Id, pObj->
nRefs );
233 if ( p->pReprs && p->pReprs[i] != NULL )
235 if ( pObj->
nRefs > 0 )
236 printf(
"node %d has representative %d and fanout count %d\n", pObj->
Id, p->pReprs[i]->Id, pObj->
nRefs ), fProb = 1;
241 printf(
"Verification of choice AIG succeeded.\n" );
243 printf(
"Verification of choice AIG FAILED.\n" );
270 Abc_Print( 1,
"Network \"%s\" contains combinational loop!\n", p->pSpec? p->pSpec : NULL );
272 Abc_Print( 1,
"Node \"%d\" is encountered twice on the following path to the COs:\n",
Aig_ObjId(pNode) );
400 for ( pTemp = pRepr; pTemp; pTemp =
Aig_ObjEquiv(p, pTemp) )
406 for ( pTemp = pRepr; pTemp; pTemp =
Aig_ObjEquiv(p, pTemp) )
445 Aig_Obj_t * pRepr, * pObjNew, * pReprNew;
463 pObj->
pData = pObjNew;
473 if ( pReprNew->
Id >= pObjNew->
Id )
479 if ( pObjNew->
nRefs > 0 )
489 while ( pAigNew->pEquivs[pReprNew->
Id] != NULL )
490 pReprNew = pAigNew->pEquivs[pReprNew->
Id];
491 assert( pAigNew->pEquivs[pReprNew->
Id] == NULL );
492 pAigNew->pEquivs[pReprNew->
Id] = pObjNew;
509 assert( pAig->pReprs != NULL );
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
static int Aig_ObjIsTravIdPrevious(Aig_Man_t *p, Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjGetRepr(Aig_Man_t *p, Aig_Obj_t *pObj)
int Dch_ObjCheckTfi_rec(Aig_Man_t *p, Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjRepr(Aig_Man_t *p, Aig_Obj_t *pObj)
ABC_NAMESPACE_IMPL_START int Dch_ObjCountSupp_rec(Aig_Man_t *p, Aig_Obj_t *pObj)
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
void Aig_ManStop(Aig_Man_t *p)
static int Aig_ObjIsTravIdCurrent(Aig_Man_t *p, Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjFanin0(Aig_Obj_t *pObj)
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
Aig_Man_t * Aig_ManDupDfs(Aig_Man_t *p)
Aig_Man_t * Dch_DeriveChoiceAig(Aig_Man_t *pAig, int fSkipRedSupps)
static int Aig_IsComplement(Aig_Obj_t *p)
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
static Aig_Obj_t * Aig_Regular(Aig_Obj_t *p)
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
#define Aig_ManForEachCo(p, pObj, i)
static Aig_Obj_t * Aig_ObjChild0CopyRepr(Aig_Man_t *p, Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjFanin1(Aig_Obj_t *pObj)
static void Aig_ObjSetTravIdCurrent(Aig_Man_t *p, Aig_Obj_t *pObj)
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
void Aig_ManIncrementTravId(Aig_Man_t *p)
DECLARATIONS ///.
int Dch_ObjCheckSuppRed(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pRepr)
static int Aig_ObjIsNode(Aig_Obj_t *pObj)
int Aig_ManCheckAcyclic(Aig_Man_t *p, int fVerbose)
#define Aig_ManForEachNode(p, pObj, i)
static void Aig_ObjSetRepr(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pRepr)
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
#define ABC_NAMESPACE_IMPL_END
static int Aig_ObjIsConst1(Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjEquiv(Aig_Man_t *p, Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjChild1Copy(Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjChild0Copy(Aig_Obj_t *pObj)
static void Abc_Print(int level, const char *format,...)
int Dch_DeriveChoiceCountEquivs(Aig_Man_t *pAig)
void Aig_ManCheckReprs(Aig_Man_t *p)
static int Aig_ManObjNumMax(Aig_Man_t *p)
static void Aig_ObjSetTravIdPrevious(Aig_Man_t *p, Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ManConst1(Aig_Man_t *p)
#define ABC_NAMESPACE_IMPL_START
void Dch_CheckChoices(Aig_Man_t *p, int fSkipRedSupps)
static int Aig_ManRegNum(Aig_Man_t *p)
void Dch_DeriveChoiceAigNode(Aig_Man_t *pAigNew, Aig_Man_t *pAigOld, Aig_Obj_t *pObj, int fSkipRedSupps)
#define Aig_ManForEachObj(p, pObj, i)
int Aig_ManCheckAcyclic_rec(Aig_Man_t *p, Aig_Obj_t *pNode, int fVerbose)
void Aig_ManCleanMarkA(Aig_Man_t *p)
#define ABC_CALLOC(type, num)
int Dch_ObjCheckTfi(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pRepr)
Aig_Man_t * Dch_DeriveChoiceAigInt(Aig_Man_t *pAig, int fSkipRedSupps)
int Dch_DeriveChoiceCountReprs(Aig_Man_t *pAig)
FUNCTION DECLARATIONS ///.
static int Aig_ObjId(Aig_Obj_t *pObj)
int Dch_ObjCountSupp(Aig_Man_t *p, Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_NotCond(Aig_Obj_t *p, int c)
int Dch_ObjMarkTfi_rec(Aig_Man_t *p, Aig_Obj_t *pObj)
static int Aig_ObjIsCi(Aig_Obj_t *pObj)
void Aig_ManCleanData(Aig_Man_t *p)
static Aig_Obj_t * Aig_ObjChild1CopyRepr(Aig_Man_t *p, Aig_Obj_t *pObj)