mirror of https://github.com/YosysHQ/abc.git
Integrating sweeping information.
This commit is contained in:
parent
3e59c102e8
commit
aa7daf1e51
|
|
@ -178,7 +178,7 @@ Gia_Man_t * Gia_ManFraigReduceGia( Gia_Man_t * p, int * pReprs )
|
|||
Gia_ManForEachObj( p, pObj, i )
|
||||
{
|
||||
if ( Gia_ObjIsAnd(pObj) )
|
||||
pObj->Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0CopyRepr(p, pObj, pReprs), Gia_ObjFanin1CopyRepr(p, pObj, pReprs) );
|
||||
pObj->Value = Gia_ManHashAnd( pNew, Gia_ObjFanin0CopyRepr(p, pObj, pReprs), Gia_ObjFanin1CopyRepr(p, pObj, pReprs) );
|
||||
else if ( Gia_ObjIsCi(pObj) )
|
||||
pObj->Value = Gia_ManAppendCi( pNew );
|
||||
else if ( Gia_ObjIsCo(pObj) )
|
||||
|
|
@ -188,6 +188,15 @@ Gia_Man_t * Gia_ManFraigReduceGia( Gia_Man_t * p, int * pReprs )
|
|||
else assert( 0 );
|
||||
}
|
||||
Gia_ManHashStop( pNew );
|
||||
/*
|
||||
{
|
||||
Gia_Man_t * pTemp;
|
||||
Gia_ManPrintStats( pNew, 0, 0, 0 );
|
||||
pNew = Gia_ManCleanup( pTemp = pNew );
|
||||
Gia_ManStop( pTemp );
|
||||
Gia_ManPrintStats( pNew, 0, 0, 0 );
|
||||
}
|
||||
*/
|
||||
return pNew;
|
||||
}
|
||||
|
||||
|
|
@ -210,17 +219,6 @@ int * Gia_ManFraigSelectReprs( Gia_Man_t * p, Gia_Man_t * pGia, int fVerbose )
|
|||
int i, iLitGia, iLitGia2, iReprGia, fCompl;
|
||||
int nConsts = 0, nReprs = 0;
|
||||
pGia2Abc[0] = 0;
|
||||
/*
|
||||
Gia_ManForEachObj( p, pObj, i )
|
||||
printf( "%d %d ", i, Gia_ObjValue(pObj) );
|
||||
printf( "\n" );
|
||||
printf( "\n" );
|
||||
|
||||
Gia_ManForEachObj( pGia, pObj, i )
|
||||
printf( "%d %d ", i, Gia_ObjReprSelf(pGia, i) );
|
||||
printf( "\n" );
|
||||
printf( "\n" );
|
||||
*/
|
||||
Gia_ManSetPhase( pGia );
|
||||
Gia_ManForEachObj1( p, pObj, i )
|
||||
{
|
||||
|
|
@ -246,6 +244,8 @@ int * Gia_ManFraigSelectReprs( Gia_Man_t * p, Gia_Man_t * pGia, int fVerbose )
|
|||
nConsts++;
|
||||
else
|
||||
nReprs++;
|
||||
assert( Abc_Lit2Var(pReprs[i]) < i );
|
||||
// printf( "%d -> %d\n", i, Abc_Lit2Var(pReprs[i]) );
|
||||
}
|
||||
}
|
||||
ABC_FREE( pGia2Abc );
|
||||
|
|
@ -308,9 +308,6 @@ Gia_Man_t * Gia_ManFraigSweep( Gia_Man_t * p, void * pPars )
|
|||
pNew = Gia_ManDupWithHierarchy( p, NULL );
|
||||
if ( pNew == NULL )
|
||||
return NULL;
|
||||
// normalizing AIG
|
||||
pNew = Gia_ManDupNormalize( pTemp = pNew );
|
||||
Gia_ManStop( pTemp );
|
||||
// find global equivalences
|
||||
pNew->pManTime = p->pManTime;
|
||||
pGia = Gia_ManDupWithBoxes( pNew, p->pAigExtra );
|
||||
|
|
@ -323,13 +320,6 @@ Gia_Man_t * Gia_ManFraigSweep( Gia_Man_t * p, void * pPars )
|
|||
pNew = Gia_ManFraigReduceGia( pTemp = pNew, pReprs );
|
||||
Gia_ManStop( pTemp );
|
||||
ABC_FREE( pReprs );
|
||||
// order reduced AIG
|
||||
pNew->pManTime = p->pManTime;
|
||||
pNew = Gia_ManDupWithHierarchy( pTemp = pNew, NULL );
|
||||
pTemp->pManTime = NULL;
|
||||
Gia_ManStop( pTemp );
|
||||
if ( pNew == NULL )
|
||||
return NULL;
|
||||
// derive new AIG
|
||||
assert( pNew->pManTime == NULL );
|
||||
assert( pNew->pAigExtra == NULL );
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ Vec_Int_t * Gia_ManDupFindOrderWithHie( Gia_Man_t * p )
|
|||
Gia_Obj_t * pObj;
|
||||
int i, k, curCi, curCo;
|
||||
assert( p->pManTime != NULL );
|
||||
assert( Gia_ManIsNormalized( p ) );
|
||||
// assert( Gia_ManIsNormalized( p ) );
|
||||
// start trav IDs
|
||||
Gia_ManIncrementTravId( p );
|
||||
// start the array
|
||||
|
|
@ -655,21 +655,22 @@ void * Gia_ManUpdateTimMan( Gia_Man_t * p, Vec_Int_t * vBoxPres )
|
|||
***********************************************************************/
|
||||
Gia_Man_t * Gia_ManUpdateExtraAig( void * pTime, Gia_Man_t * pAig, Vec_Int_t * vBoxPres )
|
||||
{
|
||||
Gia_Man_t * pNew;
|
||||
Gia_Man_t * pNew = NULL;
|
||||
Vec_Int_t * vOutPres;
|
||||
Tim_Man_t * pManTime = (Tim_Man_t *)pTime;
|
||||
int i, k, curPo;
|
||||
int i, k, curPo = 0;
|
||||
assert( Vec_IntSize(vBoxPres) == Tim_ManBoxNum(pManTime) );
|
||||
assert( Gia_ManPoNum(pAig) == Tim_ManCoNum(pManTime) - Tim_ManPoNum(pManTime) );
|
||||
assert( Gia_ManPoNum(pAig) == Tim_ManCiNum(pManTime) - Tim_ManPiNum(pManTime) );
|
||||
vOutPres = Vec_IntAlloc( 100 );
|
||||
for ( curPo = i = 0; i < Tim_ManBoxNum(pManTime); i++, curPo += Tim_ManBoxInputNum(pManTime, i) )
|
||||
if ( Vec_IntEntry(vBoxPres, i) )
|
||||
for ( k = 0; k < Tim_ManBoxInputNum(pManTime, i); k++ )
|
||||
Vec_IntPush( vOutPres, curPo + k );
|
||||
assert( curPo == Tim_ManCoNum(pManTime) - Tim_ManPoNum(pManTime) );
|
||||
for ( k = curPo; k < Tim_ManCoNum(pManTime); k++ )
|
||||
Vec_IntPush( vOutPres, k );
|
||||
pNew = Gia_ManDupOutputVec( pAig, vOutPres );
|
||||
for ( i = 0; i < Tim_ManBoxNum(pManTime); i++ )
|
||||
{
|
||||
for ( k = 0; k < Tim_ManBoxOutputNum(pManTime, i); k++ )
|
||||
Vec_IntPush( vOutPres, Vec_IntEntry(vBoxPres, i) );
|
||||
curPo += Tim_ManBoxOutputNum(pManTime, i);
|
||||
}
|
||||
assert( curPo == Gia_ManPoNum(pAig) );
|
||||
if ( Vec_IntSize(vOutPres) > 0 )
|
||||
pNew = Gia_ManDupOutputVec( pAig, vOutPres );
|
||||
Vec_IntFree( vOutPres );
|
||||
return pNew;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -184,7 +184,7 @@ Tim_Man_t * Tim_ManTrim( Tim_Man_t * p, Vec_Int_t * vBoxPres )
|
|||
Tim_ManForEachCo( p, pObj, i )
|
||||
pObj->TravId = 0;
|
||||
// create new manager
|
||||
pNew = Tim_ManStart( p->nCis - nNewCis, p->nCos - nNewCos );
|
||||
pNew = Tim_ManStart( nNewCis, nNewCos );
|
||||
// copy box connectivity information
|
||||
memcpy( pNew->pCis, p->pCis, sizeof(Tim_Obj_t) * Tim_ManPiNum(p) );
|
||||
memcpy( pNew->pCos, p->pCos, sizeof(Tim_Obj_t) * Tim_ManPoNum(p) );
|
||||
|
|
|
|||
Loading…
Reference in New Issue