diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2017-04-04 15:37:10 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2017-04-04 15:37:10 -0700 |
commit | 304c63e8603b34909f89ae84e6939bd77147c29c (patch) | |
tree | 90a557fcb31a8948d26c2a62b4a4601b3108c1d7 /src/base/acb/acbAbc.c | |
parent | 44605f5af647cc6963603116091fcbe98080d660 (diff) | |
download | abc-304c63e8603b34909f89ae84e6939bd77147c29c.tar.gz abc-304c63e8603b34909f89ae84e6939bd77147c29c.tar.bz2 abc-304c63e8603b34909f89ae84e6939bd77147c29c.zip |
Experiments with don't-cares.
Diffstat (limited to 'src/base/acb/acbAbc.c')
-rw-r--r-- | src/base/acb/acbAbc.c | 46 |
1 files changed, 36 insertions, 10 deletions
diff --git a/src/base/acb/acbAbc.c b/src/base/acb/acbAbc.c index d3c511ff..2b07a202 100644 --- a/src/base/acb/acbAbc.c +++ b/src/base/acb/acbAbc.c @@ -44,27 +44,18 @@ ABC_NAMESPACE_IMPL_START SeeAlso [] ***********************************************************************/ -Acb_Ntk_t * Acb_NtkFromAbc( Abc_Ntk_t * p ) +Acb_Ntk_t * Acb_NtkFromAbc2( Abc_Ntk_t * p ) { - int fTrack = 1; Acb_Man_t * pMan = Acb_ManAlloc( Abc_NtkSpec(p), 1, NULL, NULL, NULL, NULL ); int i, k, NameId = Abc_NamStrFindOrAdd( pMan->pStrs, Abc_NtkName(p), NULL ); Acb_Ntk_t * pNtk = Acb_NtkAlloc( pMan, NameId, Abc_NtkCiNum(p), Abc_NtkCoNum(p), Abc_NtkObjNum(p) ); Abc_Obj_t * pObj, * pFanin; assert( Abc_NtkIsSopLogic(p) ); pNtk->nFaninMax = 6; - if ( fTrack ) Vec_IntFill( &pNtk->vArray2, Abc_NtkObjNumMax(p), -1 ); Abc_NtkForEachCi( p, pObj, i ) - { pObj->iTemp = Acb_ObjAlloc( pNtk, ABC_OPER_CI, 0, 0 ); - if ( fTrack ) Vec_IntWriteEntry( &pNtk->vArray2, pObj->iTemp, Abc_ObjId(pObj) ); - } Abc_NtkForEachNode( p, pObj, i ) - { pObj->iTemp = Acb_ObjAlloc( pNtk, ABC_OPER_LUT, Abc_ObjFaninNum(pObj), 0 ); - if ( fTrack ) Vec_IntWriteEntry( &pNtk->vArray2, pObj->iTemp, Abc_ObjId(pObj) ); -// printf( "%d -> %d\n%s", i, pObj->iTemp, (char *)pObj->pData ); - } Abc_NtkForEachCo( p, pObj, i ) pObj->iTemp = Acb_ObjAlloc( pNtk, ABC_OPER_CO, 1, 0 ); Abc_NtkForEachNode( p, pObj, i ) @@ -79,6 +70,40 @@ Acb_Ntk_t * Acb_NtkFromAbc( Abc_Ntk_t * p ) Acb_NtkAdd( pMan, pNtk ); return pNtk; } +Acb_Ntk_t * Acb_NtkFromAbc( Abc_Ntk_t * p ) +{ + Acb_Man_t * pMan = Acb_ManAlloc( Abc_NtkSpec(p), 1, NULL, NULL, NULL, NULL ); + int i, k, NameId = Abc_NamStrFindOrAdd( pMan->pStrs, Abc_NtkName(p), NULL ); + Acb_Ntk_t * pNtk = Acb_NtkAlloc( pMan, NameId, Abc_NtkCiNum(p), Abc_NtkCoNum(p), Abc_NtkObjNumMax(p)-1 ); + Abc_Obj_t * pObj, * pFanin; + assert( Abc_NtkIsSopLogic(p) ); + pNtk->nFaninMax = 6; + for ( i = 1; i < Abc_NtkObjNumMax(p); i++ ) + { + pObj = Abc_NtkObj( p, i ); + if ( pObj == NULL ) + Acb_ObjAlloc( pNtk, ABC_OPER_NONE, 0, 0 ); + else if ( Abc_ObjIsCi(pObj) ) + pObj->iTemp = Acb_ObjAlloc( pNtk, ABC_OPER_CI, 0, 0 ); + else if ( Abc_ObjIsCo(pObj) ) + pObj->iTemp = Acb_ObjAlloc( pNtk, ABC_OPER_CO, 1, 0 ); + else if ( Abc_ObjIsNode(pObj) ) + pObj->iTemp = Acb_ObjAlloc( pNtk, ABC_OPER_LUT, Abc_ObjFaninNum(pObj), 0 ); + else assert( 0 ); + assert( pObj == NULL || pObj->iTemp == (int)Abc_ObjId(pObj) ); + } + Abc_NtkForEachNode( p, pObj, i ) + Abc_ObjForEachFanin( pObj, pFanin, k ) + Acb_ObjAddFanin( pNtk, pObj->iTemp, pFanin->iTemp ); + Abc_NtkForEachCo( p, pObj, i ) + Acb_ObjAddFanin( pNtk, pObj->iTemp, Abc_ObjFanin(pObj, 0)->iTemp ); + Acb_NtkCleanObjTruths( pNtk ); + Abc_NtkForEachNode( p, pObj, i ) + Acb_ObjSetTruth( pNtk, pObj->iTemp, Abc_SopToTruth((char *)pObj->pData, Abc_ObjFaninNum(pObj)) ); + Acb_NtkSetRegNum( pNtk, Abc_NtkLatchNum(p) ); + Acb_NtkAdd( pMan, pNtk ); + return pNtk; +} /**Function************************************************************* @@ -218,6 +243,7 @@ void Acb_ParSetDefault( Acb_Par_t * pPars ) pPars->nNodesMax = 0; // the maximum number of nodes to try pPars->iNodeOne = 0; // one particular node to try pPars->fArea = 1; // performs optimization for area + pPars->fUseAshen = 0; // use Ashenhurst decomposition pPars->fMoreEffort = 0; // enables using more effort pPars->fVerbose = 0; // enable basic stats pPars->fVeryVerbose = 0; // enable detailed stats |