diff options
| author | Alan Mishchenko <alanmi@berkeley.edu> | 2013-02-20 17:13:29 -0800 | 
|---|---|---|
| committer | Alan Mishchenko <alanmi@berkeley.edu> | 2013-02-20 17:13:29 -0800 | 
| commit | aa7daf1e51742a2f9748237263d0114738873b3b (patch) | |
| tree | 2a449cd2c2869f9613aa6146199289f4e451b3cf /src | |
| parent | 3e59c102e8abddc7cadb6d0cbbaa9b82011aa9d1 (diff) | |
| download | abc-aa7daf1e51742a2f9748237263d0114738873b3b.tar.gz abc-aa7daf1e51742a2f9748237263d0114738873b3b.tar.bz2 abc-aa7daf1e51742a2f9748237263d0114738873b3b.zip  | |
Integrating sweeping information.
Diffstat (limited to 'src')
| -rw-r--r-- | src/aig/gia/giaSweep.c | 34 | ||||
| -rw-r--r-- | src/aig/gia/giaTim.c | 25 | ||||
| -rw-r--r-- | src/misc/tim/timMan.c | 2 | 
3 files changed, 26 insertions, 35 deletions
diff --git a/src/aig/gia/giaSweep.c b/src/aig/gia/giaSweep.c index fe4c275c..358fb5fb 100644 --- a/src/aig/gia/giaSweep.c +++ b/src/aig/gia/giaSweep.c @@ -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 ); diff --git a/src/aig/gia/giaTim.c b/src/aig/gia/giaTim.c index 5d08b783..c774e309 100644 --- a/src/aig/gia/giaTim.c +++ b/src/aig/gia/giaTim.c @@ -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;  } diff --git a/src/misc/tim/timMan.c b/src/misc/tim/timMan.c index bfebef05..3ec2d8ac 100644 --- a/src/misc/tim/timMan.c +++ b/src/misc/tim/timMan.c @@ -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) );  | 
