From 12c8a54cfff5ecd6a407651fdab37d2a81d00bb4 Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Sun, 16 Mar 2014 22:12:17 -0700 Subject: Adding barrier buffers. --- src/base/abc/abcBarBuf.c | 2 -- src/base/abc/abcNtk.c | 4 ++++ src/base/abci/abcDar.c | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/base/abc/abcBarBuf.c b/src/base/abc/abcBarBuf.c index 856b9f96..52c10ccf 100644 --- a/src/base/abc/abcBarBuf.c +++ b/src/base/abc/abcBarBuf.c @@ -271,8 +271,6 @@ Abc_Ntk_t * Abc_NtkFromBarBufsInt( Abc_Ntk_t * pNtkBase, Abc_Ntk_t * pNtk, int f Abc_ObjFanout0(Abc_ObjFanout0(pLatch))->pCopy = pNet->pCopy; } } - Abc_NtkForEachLatch( pNtk, pObj, i ) - assert( Abc_ObjFanout0(Abc_ObjFanout0(pLatch))->pCopy != NULL ); // build PO cones if ( fRoot ) { diff --git a/src/base/abc/abcNtk.c b/src/base/abc/abcNtk.c index 07ee429b..4567d332 100644 --- a/src/base/abc/abcNtk.c +++ b/src/base/abc/abcNtk.c @@ -113,6 +113,7 @@ Abc_Ntk_t * Abc_NtkStartFrom( Abc_Ntk_t * pNtk, Abc_NtkType_t Type, Abc_NtkFunc_ // start the network pNtkNew = Abc_NtkAlloc( Type, Func, 1 ); pNtkNew->nConstrs = pNtk->nConstrs; + pNtkNew->nBarBufs = pNtk->nBarBufs; // duplicate the name and the spec pNtkNew->pName = Extra_UtilStrsav(pNtk->pName); pNtkNew->pSpec = Extra_UtilStrsav(pNtk->pSpec); @@ -178,6 +179,7 @@ Abc_Ntk_t * Abc_NtkStartFromWithLatches( Abc_Ntk_t * pNtk, Abc_NtkType_t Type, A // start the network pNtkNew = Abc_NtkAlloc( Type, Func, 1 ); pNtkNew->nConstrs = pNtk->nConstrs; + pNtkNew->nBarBufs = pNtk->nBarBufs; // duplicate the name and the spec pNtkNew->pName = Extra_UtilStrsav(pNtk->pName); pNtkNew->pSpec = Extra_UtilStrsav(pNtk->pSpec); @@ -252,6 +254,7 @@ Abc_Ntk_t * Abc_NtkStartFromNoLatches( Abc_Ntk_t * pNtk, Abc_NtkType_t Type, Abc // start the network pNtkNew = Abc_NtkAlloc( Type, Func, 1 ); pNtkNew->nConstrs = pNtk->nConstrs; + pNtkNew->nBarBufs = pNtk->nBarBufs; // duplicate the name and the spec pNtkNew->pName = Extra_UtilStrsav(pNtk->pName); pNtkNew->pSpec = Extra_UtilStrsav(pNtk->pSpec); @@ -564,6 +567,7 @@ Abc_Ntk_t * Abc_NtkDupTransformMiter( Abc_Ntk_t * pNtk ) // start the network pNtkNew = Abc_NtkAlloc( pNtk->ntkType, pNtk->ntkFunc, 1 ); pNtkNew->nConstrs = pNtk->nConstrs; + pNtkNew->nBarBufs = pNtk->nBarBufs; // duplicate the name and the spec pNtkNew->pName = Extra_UtilStrsav(pNtk->pName); pNtkNew->pSpec = Extra_UtilStrsav(pNtk->pSpec); diff --git a/src/base/abci/abcDar.c b/src/base/abci/abcDar.c index 4800557a..22d4fdff 100644 --- a/src/base/abci/abcDar.c +++ b/src/base/abci/abcDar.c @@ -417,6 +417,7 @@ Abc_Ntk_t * Abc_NtkFromDar( Abc_Ntk_t * pNtkOld, Aig_Man_t * pMan ) // perform strashing pNtkNew = Abc_NtkStartFrom( pNtkOld, ABC_NTK_STRASH, ABC_FUNC_AIG ); pNtkNew->nConstrs = pMan->nConstrs; + pNtkNew->nBarBufs = pNtkOld->nBarBufs; // transfer the pointers to the basic nodes Aig_ManConst1(pMan)->pData = Abc_AigConst1(pNtkNew); Aig_ManForEachCi( pMan, pObj, i ) @@ -467,6 +468,7 @@ Abc_Ntk_t * Abc_NtkFromDarSeqSweep( Abc_Ntk_t * pNtkOld, Aig_Man_t * pMan ) Aig_Obj_t * pObj, * pObjLo, * pObjLi; int i, iNodeId, nDigits; assert( pMan->nAsserts == 0 ); + assert( pNtkOld->nBarBufs == 0 ); // assert( Aig_ManRegNum(pMan) != Abc_NtkLatchNum(pNtkOld) ); // perform strashing pNtkNew = Abc_NtkStartFromNoLatches( pNtkOld, ABC_NTK_STRASH, ABC_FUNC_AIG ); @@ -811,6 +813,7 @@ Abc_Ntk_t * Abc_NtkAfterTrim( Aig_Man_t * pMan, Abc_Ntk_t * pNtkOld ) Aig_Obj_t * pObj, * pObjLo, * pObjLi; int i; assert( pMan->nAsserts == 0 ); + assert( pNtkOld->nBarBufs == 0 ); assert( Aig_ManRegNum(pMan) <= Abc_NtkLatchNum(pNtkOld) ); assert( Saig_ManPiNum(pMan) <= Abc_NtkCiNum(pNtkOld) ); assert( Saig_ManPoNum(pMan) == Abc_NtkPoNum(pNtkOld) ); @@ -899,6 +902,7 @@ Abc_Ntk_t * Abc_NtkFromDarChoices( Abc_Ntk_t * pNtkOld, Aig_Man_t * pMan ) // perform strashing pNtkNew = Abc_NtkStartFrom( pNtkOld, ABC_NTK_STRASH, ABC_FUNC_AIG ); pNtkNew->nConstrs = pMan->nConstrs; + pNtkNew->nBarBufs = pNtkOld->nBarBufs; // transfer the pointers to the basic nodes Aig_ManCleanData( pMan ); Aig_ManConst1(pMan)->pData = Abc_AigConst1(pNtkNew); @@ -956,6 +960,7 @@ Abc_Ntk_t * Abc_NtkFromDarSeq( Abc_Ntk_t * pNtkOld, Aig_Man_t * pMan ) Aig_Obj_t * pObj; int i; // assert( Aig_ManLatchNum(pMan) > 0 ); + assert( pNtkOld->nBarBufs == 0 ); // perform strashing pNtkNew = Abc_NtkStartFromNoLatches( pNtkOld, ABC_NTK_STRASH, ABC_FUNC_AIG ); pNtkNew->nConstrs = pMan->nConstrs; -- cgit v1.2.3