51 pObj->
Id = Vec_PtrSize(
p->vObjs);
52 Vec_PtrPush(
p->vObjs, pObj );
93 pObj->
IdPio = Vec_PtrSize(
p->vPis );
94 Vec_PtrPush(
p->vPis, pObj );
114 pObj->
IdPio = Vec_PtrSize(
p->vPos );
115 Vec_PtrPush(
p->vPos, pObj );
117 pObj->
Fan[0] = Amap_ObjToLit(pFan0); Amap_Regular(pFan0)->nRefs++;
118 pObj->
Level = Amap_Regular(pFan0)->Level;
119 if (
p->nLevelMax < (
int)pObj->
Level )
120 p->nLevelMax = (int)pObj->
Level;
142 pObj->
Fan[0] = Amap_ObjToLit(pFan0); Amap_Regular(pFan0)->nRefs++;
143 pObj->
Fan[1] = Amap_ObjToLit(pFan1); Amap_Regular(pFan1)->nRefs++;
144 assert( Abc_Lit2Var(pObj->
Fan[0]) != Abc_Lit2Var(pObj->
Fan[1]) );
145 pObj->
fPhase = Amap_ObjPhaseReal(pFan0) & Amap_ObjPhaseReal(pFan1);
146 pObj->
Level = 1 + Abc_MaxInt( Amap_Regular(pFan0)->Level, Amap_Regular(pFan1)->Level );
147 if (
p->nLevelMax < (
int)pObj->
Level )
148 p->nLevelMax = (int)pObj->
Level;
170 pObj->
Fan[0] = Amap_ObjToLit(pFan0); Amap_Regular(pFan0)->nRefs++;
171 pObj->
Fan[1] = Amap_ObjToLit(pFan1); Amap_Regular(pFan1)->nRefs++;
172 pObj->
fPhase = Amap_ObjPhaseReal(pFan0) ^ Amap_ObjPhaseReal(pFan1);
173 pObj->
Level = 2 + Abc_MaxInt( Amap_Regular(pFan0)->Level, Amap_Regular(pFan1)->Level );
174 if (
p->nLevelMax < (
int)pObj->
Level )
175 p->nLevelMax = (int)pObj->
Level;
197 pObj->
Fan[0] = Amap_ObjToLit(pFan0); Amap_Regular(pFan0)->nRefs++;
198 pObj->
Fan[1] = Amap_ObjToLit(pFan1); Amap_Regular(pFan1)->nRefs++;
199 pObj->
Fan[2] = Amap_ObjToLit(pFanC); Amap_Regular(pFanC)->nRefs++;
200 pObj->
fPhase = (Amap_ObjPhaseReal(pFan1) & Amap_ObjPhaseReal(pFanC)) |
201 (Amap_ObjPhaseReal(pFan0) & ~Amap_ObjPhaseReal(pFanC));
202 pObj->
Level = Abc_MaxInt( Amap_Regular(pFan0)->Level, Amap_Regular(pFan1)->Level );
203 pObj->
Level = 2 + Abc_MaxInt( pObj->
Level, Amap_Regular(pFanC)->Level );
204 if (
p->nLevelMax < (
int)pObj->
Level )
205 p->nLevelMax = (int)pObj->
Level;
229 for ( pTemp = pObj; pTemp; pTemp = Amap_ObjChoice(
p, pTemp) )
235 if (
p->nLevelMax < (
int)pObj->
Level )
236 p->nLevelMax = (int)pObj->
Level;
275 pChoices[3] =
Amap_ManCreateMux(
p, Amap_Not(pFan1), Amap_Not(pFan0), Amap_Not(pFanC) );
291 return Amap_NotCond( (
Amap_Obj_t *)Aig_Regular(pObj)->pData, Aig_IsComplement(pObj) );
307 if ( pObj->
Equiv == 0 )
327 Aig_Obj_t * pObj, * pFanin, * pPrev, * pFan0, * pFan1, * pFanC;
335 if (
p->pPars->fVerbose )
337 if ( 1.0 * Aig_ManObjNum(pAig) *
sizeof(
Amap_Obj_t) / (1<<30) > 0.1 )
338 printf(
"Warning: Mapper allocates %.3f GB for subject graph with %d objects.\n",
339 1.0 * Aig_ManObjNum(pAig) *
sizeof(
Amap_Obj_t) / (1<<30), Aig_ManObjNum(pAig) );
343 Aig_ManConst1(pAig)->pData = Amap_ManConst1(
p );
366 Amap_ObjSetChoice( pChoices[0], pChoices[1] );
367 Amap_ObjSetChoice( pChoices[1], pChoices[2] );
368 Amap_ObjSetChoice( pChoices[2], pChoices[3] );
371 if ( Aig_ObjIsChoice( pAig, pObj ) )
375 for ( pPrev = pObj, pFanin = Aig_ObjEquiv(pAig, pObj); pFanin; pPrev = pFanin, pFanin = Aig_ObjEquiv(pAig, pFanin) )
384 Vec_PtrFree( vNodes );
388 if (
p->pPars->fVerbose )
389 printf(
"Performing mapping with %d given and %d created choices.\n",
390 p->nChoicesGiven,
p->nChoicesAdded );
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
Aig_Obj_t * Aig_ObjRecognizeMux(Aig_Obj_t *pObj, Aig_Obj_t **ppObjT, Aig_Obj_t **ppObjE)
Vec_Ptr_t * Aig_ManDfsChoices(Aig_Man_t *p)
int Aig_ObjRecognizeExor(Aig_Obj_t *pObj, Aig_Obj_t **ppFan0, Aig_Obj_t **ppFan1)
char * Aig_MmFixedEntryFetch(Aig_MmFixed_t *p)
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
struct Aig_Obj_t_ Aig_Obj_t
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
#define Aig_ManForEachCo(p, pObj, i)
Vec_Ptr_t * Aig_ManDfs(Aig_Man_t *p, int fNodesOnly)
int Aig_ObjIsMuxType(Aig_Obj_t *pObj)
void Aig_ManCleanData(Aig_Man_t *p)
void Amap_ManCreateMuxChoices(Amap_Man_t *p, Amap_Obj_t *pFan0, Amap_Obj_t *pFan1, Amap_Obj_t *pFanC, Amap_Obj_t *pChoices[])
Amap_Obj_t * Amap_ManCreatePo(Amap_Man_t *p, Amap_Obj_t *pFan0)
Amap_Obj_t * Amap_ManCreateMux(Amap_Man_t *p, Amap_Obj_t *pFan0, Amap_Obj_t *pFan1, Amap_Obj_t *pFanC)
void Amap_ManCreate(Amap_Man_t *p, Aig_Man_t *pAig)
void Amap_ManCreateXorChoices(Amap_Man_t *p, Amap_Obj_t *pFan0, Amap_Obj_t *pFan1, Amap_Obj_t *pChoices[])
void Amap_ManCreateChoice(Amap_Man_t *p, Amap_Obj_t *pObj)
Amap_Obj_t * Amap_ManCreatePi(Amap_Man_t *p)
FUNCTION DECLARATIONS ///.
Amap_Obj_t * Amap_ManCreateXor(Amap_Man_t *p, Amap_Obj_t *pFan0, Amap_Obj_t *pFan1)
Amap_Obj_t * Amap_ManCreateConst1(Amap_Man_t *p)
Amap_Obj_t * Amap_ManCreateAnd(Amap_Man_t *p, Amap_Obj_t *pFan0, Amap_Obj_t *pFan1)
Amap_Obj_t * Amap_ManGetLast_rec(Amap_Man_t *p, Amap_Obj_t *pObj)
ABC_NAMESPACE_IMPL_START Amap_Obj_t * Amap_ManSetupObj(Amap_Man_t *p)
DECLARATIONS ///.
struct Amap_Obj_t_ Amap_Obj_t
struct Amap_Man_t_ Amap_Man_t
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.