summaryrefslogtreecommitdiffstats
path: root/src/base
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2014-03-18 17:50:53 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2014-03-18 17:50:53 -0700
commita1cdcb0b4359d9fb3f985d3b17e696f5375e6e99 (patch)
tree02b2dd91317fe64697703e9673997d49ddfebe6b /src/base
parente5b9817a723238a469b785565e8130c6fb116070 (diff)
downloadabc-a1cdcb0b4359d9fb3f985d3b17e696f5375e6e99.tar.gz
abc-a1cdcb0b4359d9fb3f985d3b17e696f5375e6e99.tar.bz2
abc-a1cdcb0b4359d9fb3f985d3b17e696f5375e6e99.zip
Updating code to support barrier buffers.
Diffstat (limited to 'src/base')
-rw-r--r--src/base/abc/abc.h2
-rw-r--r--src/base/abc/abcBarBuf.c6
-rw-r--r--src/base/abci/abcDar.c7
3 files changed, 11 insertions, 4 deletions
diff --git a/src/base/abc/abc.h b/src/base/abc/abc.h
index 93e0d02b..f5e6a694 100644
--- a/src/base/abc/abc.h
+++ b/src/base/abc/abc.h
@@ -508,7 +508,7 @@ static inline void Abc_ObjSetMvVar( Abc_Obj_t * pObj, void * pV) { Vec_At
#define Abc_NtkForEachCo( pNtk, pCo, i ) \
for ( i = 0; (i < Abc_NtkCoNum(pNtk)) && (((pCo) = Abc_NtkCo(pNtk, i)), 1); i++ )
#define Abc_NtkForEachLiPo( pNtk, pCo, i ) \
-for ( i = 0; (i < Abc_NtkCoNum(pNtk)) && (((pCo) = Abc_NtkCo(pNtk, i < pNtk->nBarBufs ? Abc_NtkCoNum(pNtk) - pNtk->nBarBufs + i : i - pNtk->nBarBufs)), 1); i++ )
+ for ( i = 0; (i < Abc_NtkCoNum(pNtk)) && (((pCo) = Abc_NtkCo(pNtk, i < pNtk->nBarBufs ? Abc_NtkCoNum(pNtk) - pNtk->nBarBufs + i : i - pNtk->nBarBufs)), 1); i++ )
// fanin and fanouts
#define Abc_ObjForEachFanin( pObj, pFanin, i ) \
for ( i = 0; (i < Abc_ObjFaninNum(pObj)) && (((pFanin) = Abc_ObjFanin(pObj, i)), 1); i++ )
diff --git a/src/base/abc/abcBarBuf.c b/src/base/abc/abcBarBuf.c
index 555b1240..927c718f 100644
--- a/src/base/abc/abcBarBuf.c
+++ b/src/base/abc/abcBarBuf.c
@@ -256,7 +256,7 @@ Abc_Ntk_t * Abc_NtkFromBarBufs( Abc_Ntk_t * pNtkBase, Abc_Ntk_t * pNtk )
Abc_Ntk_t * pNtkNew, * pTemp;
Vec_Ptr_t * vLiMaps, * vLoMaps;
Abc_Obj_t * pObj, * pLiMap, * pLoMap;
- int i;
+ int i, k;
assert( pNtkBase->pDesign != NULL );
assert( Abc_NtkIsNetlist(pNtk) );
assert( Abc_NtkIsNetlist(pNtkBase) );
@@ -271,8 +271,8 @@ Abc_Ntk_t * Abc_NtkFromBarBufs( Abc_Ntk_t * pNtkBase, Abc_Ntk_t * pNtk )
Vec_PtrForEachEntry( Abc_Ntk_t *, pNtkBase->pDesign->vModules, pTemp, i )
pTemp->pCopy = Abc_NtkStartFrom( pTemp, pNtk->ntkType, pNtk->ntkFunc );
// update box models
- Vec_PtrForEachEntry( Abc_Ntk_t *, pNtkBase->pDesign->vTops, pTemp, i )
- Abc_NtkForEachBox( pTemp, pObj, i )
+ Vec_PtrForEachEntry( Abc_Ntk_t *, pNtkBase->pDesign->vModules, pTemp, i )
+ Abc_NtkForEachBox( pTemp, pObj, k )
if ( Abc_ObjIsWhitebox(pObj) || Abc_ObjIsBlackbox(pObj) )
pObj->pCopy->pData = Abc_ObjModel(pObj)->pCopy;
// create the design
diff --git a/src/base/abci/abcDar.c b/src/base/abci/abcDar.c
index 22d4fdff..d5fdd1de 100644
--- a/src/base/abci/abcDar.c
+++ b/src/base/abci/abcDar.c
@@ -158,6 +158,7 @@ Aig_Man_t * Abc_NtkToDarBmc( Abc_Ntk_t * pNtk, Vec_Int_t ** pvMap )
// create network
pMan = Aig_ManStart( Abc_NtkNodeNum(pNtk) + 100 );
pMan->nConstrs = pNtk->nConstrs;
+ pMan->nBarBufs = pNtk->nBarBufs;
pMan->pName = Extra_UtilStrsav( pNtk->pName );
// transfer the pointers to the basic nodes
@@ -277,6 +278,7 @@ Aig_Man_t * Abc_NtkToDar( Abc_Ntk_t * pNtk, int fExors, int fRegisters )
pMan = Aig_ManStart( Abc_NtkNodeNum(pNtk) + 100 );
pMan->fCatchExor = fExors;
pMan->nConstrs = pNtk->nConstrs;
+ pMan->nBarBufs = pNtk->nBarBufs;
pMan->pName = Extra_UtilStrsav( pNtk->pName );
// transfer the pointers to the basic nodes
@@ -359,6 +361,7 @@ Aig_Man_t * Abc_NtkToDarChoices( Abc_Ntk_t * pNtk )
pMan = Aig_ManStart( Abc_NtkNodeNum(pNtk) + 100 );
pMan->pName = Extra_UtilStrsav( pNtk->pName );
pMan->nConstrs = pNtk->nConstrs;
+ pMan->nBarBufs = pNtk->nBarBufs;
if ( Abc_NtkGetChoiceNum(pNtk) )
{
pMan->pEquivs = ABC_ALLOC( Aig_Obj_t *, Abc_NtkObjNum(pNtk) );
@@ -473,6 +476,7 @@ Abc_Ntk_t * Abc_NtkFromDarSeqSweep( Abc_Ntk_t * pNtkOld, Aig_Man_t * pMan )
// perform strashing
pNtkNew = Abc_NtkStartFromNoLatches( pNtkOld, ABC_NTK_STRASH, ABC_FUNC_AIG );
pNtkNew->nConstrs = pMan->nConstrs;
+ pNtkNew->nBarBufs = pMan->nBarBufs;
// consider the case of target enlargement
if ( Abc_NtkCiNum(pNtkNew) < Aig_ManCiNum(pMan) - Aig_ManRegNum(pMan) )
{
@@ -592,6 +596,7 @@ Abc_Ntk_t * Abc_NtkFromAigPhase( Aig_Man_t * pMan )
// perform strashing
pNtkNew = Abc_NtkAlloc( ABC_NTK_STRASH, ABC_FUNC_AIG, 1 );
pNtkNew->nConstrs = pMan->nConstrs;
+ pNtkNew->nBarBufs = pMan->nBarBufs;
// duplicate the name and the spec
// pNtkNew->pName = Extra_UtilStrsav(pMan->pName);
// pNtkNew->pSpec = Extra_UtilStrsav(pMan->pSpec);
@@ -821,6 +826,7 @@ Abc_Ntk_t * Abc_NtkAfterTrim( Aig_Man_t * pMan, Abc_Ntk_t * pNtkOld )
// perform strashing
pNtkNew = Abc_NtkAlloc( ABC_NTK_STRASH, ABC_FUNC_AIG, 1 );
pNtkNew->nConstrs = pMan->nConstrs;
+ pNtkNew->nBarBufs = pMan->nBarBufs;
// duplicate the name and the spec
// pNtkNew->pName = Extra_UtilStrsav(pMan->pName);
// pNtkNew->pSpec = Extra_UtilStrsav(pMan->pSpec);
@@ -964,6 +970,7 @@ Abc_Ntk_t * Abc_NtkFromDarSeq( Abc_Ntk_t * pNtkOld, Aig_Man_t * pMan )
// perform strashing
pNtkNew = Abc_NtkStartFromNoLatches( pNtkOld, ABC_NTK_STRASH, ABC_FUNC_AIG );
pNtkNew->nConstrs = pMan->nConstrs;
+ pNtkNew->nBarBufs = pMan->nBarBufs;
// transfer the pointers to the basic nodes
Aig_ManConst1(pMan)->pData = Abc_AigConst1(pNtkNew);
Aig_ManForEachCi( pMan, pObj, i )