diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/aig/gia/gia.h | 2 | ||||
| -rw-r--r-- | src/aig/gia/giaAig.c | 8 | ||||
| -rw-r--r-- | src/aig/gia/giaAiger.c | 9 | ||||
| -rw-r--r-- | src/aig/gia/giaBalance.c | 6 | ||||
| -rw-r--r-- | src/aig/gia/giaIf.c | 28 | ||||
| -rw-r--r-- | src/aig/gia/giaSweep.c | 4 | ||||
| -rw-r--r-- | src/base/abci/abc.c | 14 | ||||
| -rw-r--r-- | src/misc/tim/timMan.c | 2 | ||||
| -rw-r--r-- | src/misc/tim/timTime.c | 2 | 
9 files changed, 34 insertions, 41 deletions
| diff --git a/src/aig/gia/gia.h b/src/aig/gia/gia.h index d4582b59..d7ad4300 100644 --- a/src/aig/gia/gia.h +++ b/src/aig/gia/gia.h @@ -1184,6 +1184,8 @@ extern void                Gia_ManSetRefsMapped( Gia_Man_t * p );  extern void                Gia_ManSetIfParsDefault( void * pIfPars );  extern void                Gia_ManMappingVerify( Gia_Man_t * p );  extern void                Gia_ManTransferMapping( Gia_Man_t * pGia, Gia_Man_t * p ); +extern void                Gia_ManTransferPacking( Gia_Man_t * pGia, Gia_Man_t * p ); +extern void                Gia_ManTransferTiming( Gia_Man_t * pGia, Gia_Man_t * p );  extern Gia_Man_t *         Gia_ManPerformMapping( Gia_Man_t * p, void * pIfPars, int fNormalized );  extern Gia_Man_t *         Gia_ManPerformSopBalance( Gia_Man_t * p, int nCutNum, int nRelaxRatio, int fVerbose );  extern Gia_Man_t *         Gia_ManPerformDsdBalance( Gia_Man_t * p, int nCutNum, int nRelaxRatio, int fVerbose ); diff --git a/src/aig/gia/giaAig.c b/src/aig/gia/giaAig.c index 0128ed91..06c91853 100644 --- a/src/aig/gia/giaAig.c +++ b/src/aig/gia/giaAig.c @@ -559,9 +559,7 @@ Gia_Man_t * Gia_ManCompress2( Gia_Man_t * p, int fUpdateLevel, int fVerbose )      Aig_ManStop( pTemp );      pGia = Gia_ManFromAig( pNew );      Aig_ManStop( pNew ); -    pGia->pManTime   = p->pManTime;   p->pManTime   = NULL; -    pGia->pAigExtra  = p->pAigExtra;  p->pAigExtra  = NULL; -    pGia->nAnd2Delay = p->nAnd2Delay; p->nAnd2Delay = 0; +    Gia_ManTransferTiming( p, pGia );      return pGia;  } @@ -587,9 +585,7 @@ Gia_Man_t * Gia_ManPerformDch( Gia_Man_t * p, void * pPars )  //    pGia = Gia_ManFromAig( pNew );      pGia = Gia_ManFromAigChoices( pNew );      Aig_ManStop( pNew ); -    pGia->pManTime   = p->pManTime;   p->pManTime   = NULL; -    pGia->pAigExtra  = p->pAigExtra;  p->pAigExtra  = NULL; -    pGia->nAnd2Delay = p->nAnd2Delay; p->nAnd2Delay = 0; +    Gia_ManTransferTiming( p, pGia );      return pGia;  } diff --git a/src/aig/gia/giaAiger.c b/src/aig/gia/giaAiger.c index 6821aab2..e1833310 100644 --- a/src/aig/gia/giaAiger.c +++ b/src/aig/gia/giaAiger.c @@ -785,7 +785,10 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS      }      Vec_IntFreeP( &vInits );      if ( !fSkipStrash && pNew->vMapping ) -        Abc_Print( 0, "Structural hashing enabled while reading AIGER may have invalidated the mapping.  Consider using \"&r -s\".\n" ); +    { +        Abc_Print( 0, "Structural hashing enabled while reading AIGER invalidated the mapping.  Consider using \"&r -s\".\n" ); +        Vec_IntFreeP( &pNew->vMapping ); +    }      return pNew;  } @@ -1035,11 +1038,9 @@ void Gia_AigerWrite( Gia_Man_t * pInit, char * pFileName, int fWriteSymbols, int      {  //        printf( "Gia_AigerWrite(): Normalizing AIG for writing.\n" );          p = Gia_ManDupNormalize( pInit ); -        p->pManTime   = pInit->pManTime;   pInit->pManTime   = NULL; +        Gia_ManTransferTiming( pInit, p );          p->vNamesIn   = pInit->vNamesIn;   pInit->vNamesIn   = NULL;          p->vNamesOut  = pInit->vNamesOut;  pInit->vNamesOut  = NULL; -        p->pAigExtra  = pInit->pAigExtra;  pInit->pAigExtra  = NULL; -        p->nAnd2Delay = pInit->nAnd2Delay; pInit->nAnd2Delay = 0;          p->nConstrs   = pInit->nConstrs;   pInit->nConstrs   = 0;      }      else diff --git a/src/aig/gia/giaBalance.c b/src/aig/gia/giaBalance.c index 02315747..918b3009 100644 --- a/src/aig/gia/giaBalance.c +++ b/src/aig/gia/giaBalance.c @@ -970,6 +970,12 @@ Gia_Man_t * Gia_ManAreaBalance( Gia_Man_t * p, int fSimpleAnd, int nNewNodesMax,      pNew2 = Gia_ManDupNoMuxes( pNew1 );      if ( fVerbose )     Gia_ManPrintStats( pNew2, NULL );      Gia_ManStop( pNew1 ); +    // normalize if needed +    if ( !Gia_ManIsNormalized(pNew2) ) +    { +        pNew2 = Gia_ManDupNormalize( pNew1 = pNew2 ); +        Gia_ManStop( pNew1 ); +    }      return pNew2;  } diff --git a/src/aig/gia/giaIf.c b/src/aig/gia/giaIf.c index 61b40117..6e04efd4 100644 --- a/src/aig/gia/giaIf.c +++ b/src/aig/gia/giaIf.c @@ -1583,18 +1583,6 @@ void Gia_ManTransferMapping( Gia_Man_t * pGia, Gia_Man_t * p )      }      Gia_ManMappingVerify( p );  } - -/**Function************************************************************* - -  Synopsis    [Transfers packing from hie GIA to normalized GIA.] - -  Description [Hie GIA (pGia) points to normalized GIA (p).] -                -  SideEffects [] - -  SeeAlso     [] - -***********************************************************************/  void Gia_ManTransferPacking( Gia_Man_t * pGia, Gia_Man_t * p )  {      Vec_Int_t * vPackingNew; @@ -1629,6 +1617,12 @@ void Gia_ManTransferPacking( Gia_Man_t * pGia, Gia_Man_t * p )      assert( p->vPacking == NULL );      p->vPacking = vPackingNew;  } +void Gia_ManTransferTiming( Gia_Man_t * pGia, Gia_Man_t * p ) +{ +    p->pManTime   = pGia->pManTime;   pGia->pManTime   = NULL; +    p->pAigExtra  = pGia->pAigExtra;  pGia->pAigExtra  = NULL; +    p->nAnd2Delay = pGia->nAnd2Delay; pGia->nAnd2Delay = 0; +}  /**Function************************************************************* @@ -1699,7 +1693,7 @@ Gia_Man_t * Gia_ManPerformMapping( Gia_Man_t * p, void * pp, int fNormalized )              Abc_Print( 0, "Switching activity computation for designs with boxes is disabled.\n" );      }      if ( p->pManTime ) -        pIfMan->pManTim = Tim_ManDup( (Tim_Man_t *)p->pManTime, 0 ); +        pIfMan->pManTim = Tim_ManDup( (Tim_Man_t *)p->pManTime, pPars->fDelayOpt || pPars->fDelayOptLut || pPars->fDsdBalance || pPars->fUserRecLib );      if ( !If_ManPerformMapping( pIfMan ) )      {          If_ManStop( pIfMan ); @@ -1718,17 +1712,13 @@ Gia_Man_t * Gia_ManPerformMapping( Gia_Man_t * p, void * pp, int fNormalized )      pNew->pSpec = Abc_UtilStrsav( p->pSpec );      Gia_ManSetRegNum( pNew, Gia_ManRegNum(p) );      // return the original (unmodified by the mapper) timing manager -    pNew->pManTime   = p->pManTime;   p->pManTime   = NULL; -    pNew->pAigExtra  = p->pAigExtra;  p->pAigExtra  = NULL; -    pNew->nAnd2Delay = p->nAnd2Delay; p->nAnd2Delay = 0; +    Gia_ManTransferTiming( p, pNew );      Gia_ManStop( p );      // normalize and transfer mapping      pNew = Gia_ManDupNormalize( p = pNew );      Gia_ManTransferMapping( p, pNew );      Gia_ManTransferPacking( p, pNew ); -    pNew->pManTime   = p->pManTime;   p->pManTime   = NULL; -    pNew->pAigExtra  = p->pAigExtra;  p->pAigExtra  = NULL; -    pNew->nAnd2Delay = p->nAnd2Delay; p->nAnd2Delay = 0; +    Gia_ManTransferTiming( p, pNew );      Gia_ManStop( p );      return pNew;  } diff --git a/src/aig/gia/giaSweep.c b/src/aig/gia/giaSweep.c index 4517bb7b..d8bafca9 100644 --- a/src/aig/gia/giaSweep.c +++ b/src/aig/gia/giaSweep.c @@ -328,9 +328,7 @@ Gia_Man_t * Gia_ManFraigSweep( Gia_Man_t * p, void * pPars )      Gia_ManStop( pTemp );      // normalize the result      pNew = Gia_ManDupNormalize( pTemp = pNew ); -    pNew->pManTime   = pTemp->pManTime;   pTemp->pManTime   = NULL; -    pNew->pAigExtra  = pTemp->pAigExtra;  pTemp->pAigExtra  = NULL; -    pNew->nAnd2Delay = pTemp->nAnd2Delay; pTemp->nAnd2Delay = 0; +    Gia_ManTransferTiming( pTemp, pNew );      Gia_ManStop( pTemp );      // return the result      assert( pNew->pManTime  != NULL ); diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index fbd6e2c4..338033b9 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -28068,13 +28068,13 @@ usage:  int Abc_CommandAbc9Syn2( Abc_Frame_t * pAbc, int argc, char ** argv )  {      Gia_Man_t * pTemp; -    int c, fVerbose = 0; -    int fOldAlgo = 0; -    int fCoarsen = 1; -    int fCutMin = 0; -    int nRelaxRatio = 20; -    int fDelayMin = 1; -    int fVeryVerbose = 0; +    int c, fVerbose  =  0; +    int fOldAlgo     =  0; +    int fCoarsen     =  1; +    int fCutMin      =  0; +    int nRelaxRatio  = 20; +    int fDelayMin    =  0; +    int fVeryVerbose =  0;      Extra_UtilGetoptReset();      while ( ( c = Extra_UtilGetopt( argc, argv, "Rakmdvwh" ) ) != EOF )      { diff --git a/src/misc/tim/timMan.c b/src/misc/tim/timMan.c index 42f2fe1a..0900b7ae 100644 --- a/src/misc/tim/timMan.c +++ b/src/misc/tim/timMan.c @@ -128,7 +128,7 @@ Tim_Man_t * Tim_ManDup( Tim_Man_t * p, int fUnitDelay )              pDelayTableNew[1] = (int)pDelayTable[1];              pDelayTableNew[2] = (int)pDelayTable[2];              for ( k = 0; k < nInputs * nOutputs; k++ ) -                pDelayTableNew[3+k] = fUnitDelay ? 1.0 : pDelayTable[3+k]; +                pDelayTableNew[3+k] = fUnitDelay ? (float)fUnitDelay : pDelayTable[3+k];  //            assert( (int)pDelayTableNew[0] == Vec_PtrSize(pNew->vDelayTables) );              assert( Vec_PtrEntry(pNew->vDelayTables, i) == NULL );              Vec_PtrWriteEntry( pNew->vDelayTables, i, pDelayTableNew ); diff --git a/src/misc/tim/timTime.c b/src/misc/tim/timTime.c index ddec4c62..7d3dd082 100644 --- a/src/misc/tim/timTime.c +++ b/src/misc/tim/timTime.c @@ -154,7 +154,7 @@ void Tim_ManSetCiRequired( Tim_Man_t * p, int iCi, float Delay )  void Tim_ManSetCoRequired( Tim_Man_t * p, int iCo, float Delay )  {      assert( iCo < p->nCos ); -    assert( !p->fUseTravId || p->pCos[iCo].TravId != p->nTravIds ); +    assert( !p->fUseTravId || !p->nTravIds || p->pCos[iCo].TravId != p->nTravIds );      p->pCos[iCo].timeReq = Delay;      p->pCos[iCo].TravId = p->nTravIds;  } | 
