Commit e04ded56 by Alan Mishchenko

Undoing commit from Nov 12, 2012: Extending GIA to represent pintypes and pins.

parent 760c1f60
......@@ -115,8 +115,6 @@ struct Gia_Man_t_
int nConstrs; // the number of constraints
int nTravIds; // the current traversal ID
int nFront; // frontier size
int nPinTypes; // the number of pintypes
int nPins; // the number of pins
int * pReprsOld; // representatives (for CIs and ANDs)
Gia_Rpr_t * pReprs; // representatives (for CIs and ANDs)
int * pNexts; // next nodes in the equivalence classes
......@@ -324,8 +322,6 @@ static inline int Gia_ObjIsAndOrConst0( Gia_Obj_t * pObj ) {
static inline int Gia_ObjIsCi( Gia_Obj_t * pObj ) { return pObj->fTerm && pObj->iDiff0 == GIA_NONE; }
static inline int Gia_ObjIsCo( Gia_Obj_t * pObj ) { return pObj->fTerm && pObj->iDiff0 != GIA_NONE; }
static inline int Gia_ObjIsAnd( Gia_Obj_t * pObj ) { return!pObj->fTerm && pObj->iDiff0 != GIA_NONE; }
static inline int Gia_ObjIsPinType( Gia_Obj_t * pObj ) { return Gia_ObjIsAnd(pObj) && pObj->iDiff0 == pObj->iDiff1; }
static inline int Gia_ObjIsPin( Gia_Obj_t * pObj ) { return Gia_ObjIsAnd(pObj) && (Gia_ObjIsPinType(pObj - pObj->iDiff0) || Gia_ObjIsPinType(pObj - pObj->iDiff1)); }
static inline int Gia_ObjIsCand( Gia_Obj_t * pObj ) { return Gia_ObjIsAnd(pObj) || Gia_ObjIsCi(pObj); }
static inline int Gia_ObjIsConst0( Gia_Obj_t * pObj ) { return pObj->iDiff0 == GIA_NONE && pObj->iDiff1 == GIA_NONE; }
static inline int Gia_ManObjIsConst0( Gia_Man_t * p, Gia_Obj_t * pObj){ return pObj == p->pObjs; }
......@@ -498,22 +494,6 @@ static inline int Gia_ManAppendAnd( Gia_Man_t * p, int iLit0, int iLit1 )
}
return Gia_ObjId( p, pObj ) << 1;
}
static inline int Gia_ManAppendPinType( Gia_Man_t * p, int iLit )
{
Gia_Obj_t * pObj = Gia_ManAppendObj( p );
assert( iLit >= 0 && Abc_Lit2Var(iLit) < Gia_ManObjNum(p) );
pObj->iDiff0 = Gia_ObjId(p, pObj) - Abc_Lit2Var(iLit);
pObj->fCompl0 = Abc_LitIsCompl(iLit);
pObj->iDiff1 = Gia_ObjId(p, pObj) - Abc_Lit2Var(iLit);
pObj->fCompl1 = Abc_LitIsCompl(iLit);
if ( p->pFanData )
{
Gia_ObjAddFanout( p, Gia_ObjFanin0(pObj), pObj );
Gia_ObjAddFanout( p, Gia_ObjFanin1(pObj), pObj );
}
p->nPinTypes++;
return Gia_ObjId( p, pObj ) << 1;
}
static inline int Gia_ManAppendCo( Gia_Man_t * p, int iLit0 )
{
Gia_Obj_t * pObj;
......
......@@ -294,12 +294,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
iNode1 = Abc_LitNotCond( Vec_IntEntry(vNodes, uLit1 >> 1), uLit1 & 1 );
assert( Vec_IntSize(vNodes) == i + 1 + nInputs + nLatches );
if ( fSkipStrash )
{
if ( iNode0 == 1 && iNode1 == 1 )
Vec_IntPush( vNodes, Gia_ManAppendPinType(pNew, 1) );
else
Vec_IntPush( vNodes, Gia_ManAppendAnd(pNew, iNode0, iNode1) );
}
else
Vec_IntPush( vNodes, Gia_ManHashAnd(pNew, iNode0, iNode1) );
}
......@@ -1091,7 +1086,7 @@ void Gia_AigerWrite( Gia_Man_t * pInit, char * pFileName, int fWriteSymbols, int
uLit = Abc_Var2Lit( i, 0 );
uLit0 = Gia_ObjFaninLit0( pObj, i );
uLit1 = Gia_ObjFaninLit1( pObj, i );
assert( p->nPinTypes || uLit0 < uLit1 );
assert( uLit0 < uLit1 );
Pos = Gia_AigerWriteUnsignedBuffer( pBuffer, Pos, uLit - uLit1 );
Pos = Gia_AigerWriteUnsignedBuffer( pBuffer, Pos, uLit1 - uLit0 );
if ( Pos > nBufferSize - 10 )
......
......@@ -761,9 +761,7 @@ Gia_Man_t * Gia_ManDupMarked( Gia_Man_t * p )
if ( pObj->fMark0 )
continue;
pObj->fMark0 = 0;
if ( p->nPinTypes && Gia_ObjIsPinType(pObj) )
pObj->Value = Gia_ManAppendPinType( pNew, Gia_ObjFanin0Copy(pObj) );
else if ( Gia_ObjIsAnd(pObj) )
if ( Gia_ObjIsAnd(pObj) )
pObj->Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
else if ( Gia_ObjIsCi(pObj) )
{
......
......@@ -193,7 +193,7 @@ void Gia_ManHashResize( Gia_Man_t * p )
Counter++;
}
Counter2 = Gia_ManAndNum(p);
assert( p->nPinTypes || Counter == Counter2 );
assert( Counter == Counter2 );
ABC_FREE( pHTableOld );
// if ( p->fVerbose )
// printf( "Resizing GIA hash table: %d -> %d.\n", nHTableOld, p->nHTable );
......
......@@ -311,7 +311,7 @@ void Gia_ManPrintStats( Gia_Man_t * p, int fTents, int fSwitch, int fCut )
printf( " ff =%7d", Gia_ManRegNum(p) );
printf( " and =%8d", Gia_ManAndNum(p) );
printf( " lev =%5d", Gia_ManLevelNum(p) ); Vec_IntFreeP( &p->vLevels );
if ( fCut && p->nPinTypes == 0 )
if ( fCut )
printf( " cut = %d(%d)", Gia_ManCrossCut(p, 0), Gia_ManCrossCut(p, 1) );
// printf( " mem =%5.2f MB", 1.0*(sizeof(Gia_Obj_t)*p->nObjs + sizeof(int)*(Vec_IntSize(p->vCis) + Vec_IntSize(p->vCos)))/(1<<20) );
printf( " mem =%5.2f MB", 1.0*(sizeof(Gia_Obj_t)*p->nObjsAlloc + sizeof(int)*(Vec_IntCap(p->vCis) + Vec_IntCap(p->vCos)))/(1<<20) );
......
......@@ -87,6 +87,8 @@ int Abc_NtkTestTimNodeStrash( Gia_Man_t * pGia, Abc_Obj_t * pNode )
}
#if 0
/**Function*************************************************************
Synopsis [Derives GIA manager using special pins to denote box boundaries.]
......@@ -174,6 +176,7 @@ void Abc_NtkTestPinGia( Abc_Ntk_t * pNtk, int fWhiteBoxOnly, int fVerbose )
Abc_NtkName(pNtk), pFileName );
}
#endif
/**Function*************************************************************
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment