diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2008-02-09 08:01:00 -0800 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2008-02-09 08:01:00 -0800 |
commit | d9760b04a80adbb44a203aeb614ab6576171aa9b (patch) | |
tree | bf9487e99c91b2d4ca5d56a956a424205c7a18e4 /src/opt | |
parent | f2d4f6c26eb610cf4843004fc6955a1548aa9f8f (diff) | |
download | abc-d9760b04a80adbb44a203aeb614ab6576171aa9b.tar.gz abc-d9760b04a80adbb44a203aeb614ab6576171aa9b.tar.bz2 abc-d9760b04a80adbb44a203aeb614ab6576171aa9b.zip |
Version abc80209
Diffstat (limited to 'src/opt')
-rw-r--r-- | src/opt/mfs/mfsCore.c | 1 | ||||
-rw-r--r-- | src/opt/mfs/mfsInt.h | 1 | ||||
-rw-r--r-- | src/opt/mfs/mfsMan.c | 2 | ||||
-rw-r--r-- | src/opt/mfs/mfsStrash.c | 23 |
4 files changed, 26 insertions, 1 deletions
diff --git a/src/opt/mfs/mfsCore.c b/src/opt/mfs/mfsCore.c index aed0abe5..082b35d4 100644 --- a/src/opt/mfs/mfsCore.c +++ b/src/opt/mfs/mfsCore.c @@ -175,6 +175,7 @@ int Abc_NtkMfs( Abc_Ntk_t * pNtk, Mfs_Par_t * pPars ) pTemp = Abc_NtkStrash( pNtk->pExcare, 0, 0, 0 ); p->pCare = Abc_NtkToDar( pTemp, 0 ); Abc_NtkDelete( pTemp ); + p->vSuppsInv = Aig_ManSupportsInverse( p->pCare ); } // if ( pPars->fVerbose ) { diff --git a/src/opt/mfs/mfsInt.h b/src/opt/mfs/mfsInt.h index ddd16407..e51e0bba 100644 --- a/src/opt/mfs/mfsInt.h +++ b/src/opt/mfs/mfsInt.h @@ -49,6 +49,7 @@ struct Mfs_Man_t_ Mfs_Par_t * pPars; Abc_Ntk_t * pNtk; Aig_Man_t * pCare; + Vec_Ptr_t * vSuppsInv; int nFaninMax; // intermeditate data for the node Vec_Ptr_t * vRoots; // the roots of the window diff --git a/src/opt/mfs/mfsMan.c b/src/opt/mfs/mfsMan.c index 519b855d..768e5295 100644 --- a/src/opt/mfs/mfsMan.c +++ b/src/opt/mfs/mfsMan.c @@ -155,6 +155,8 @@ void Mfs_ManStop( Mfs_Man_t * p ) Mfs_ManPrint( p ); if ( p->pCare ) Aig_ManStop( p->pCare ); + if ( p->vSuppsInv ) + Vec_VecFree( (Vec_Vec_t *)p->vSuppsInv ); Mfs_ManClean( p ); Int_ManFree( p->pMan ); Vec_IntFree( p->vMem ); diff --git a/src/opt/mfs/mfsStrash.c b/src/opt/mfs/mfsStrash.c index 8e945045..a3475752 100644 --- a/src/opt/mfs/mfsStrash.c +++ b/src/opt/mfs/mfsStrash.c @@ -179,7 +179,8 @@ Aig_Man_t * Abc_NtkConstructAig( Mfs_Man_t * p, Abc_Obj_t * pNode ) Aig_Man_t * pMan; Abc_Obj_t * pFanin; Aig_Obj_t * pObjAig, * pPi, * pPo; - int i; + Vec_Int_t * vOuts; + int i, k, iOut; // start the new manager pMan = Aig_ManStart( 1000 ); // construct the root node's AIG cone @@ -197,6 +198,25 @@ Aig_Man_t * Abc_NtkConstructAig( Mfs_Man_t * p, Abc_Obj_t * pNode ) pPi->pData = pFanin->pCopy; } // construct the constraints + Vec_PtrForEachEntry( p->vSupp, pFanin, i ) + { + vOuts = Vec_PtrEntry( p->vSuppsInv, (int)pFanin->pData ); + Vec_IntForEachEntry( vOuts, iOut, k ) + { + pPo = Aig_ManPo( p->pCare, iOut ); + if ( Aig_ObjIsTravIdCurrent( p->pCare, pPo ) ) + continue; + Aig_ObjSetTravIdCurrent( p->pCare, pPo ); + if ( Aig_ObjFanin0(pPo) == Aig_ManConst1(p->pCare) ) + continue; + pObjAig = Abc_NtkConstructCare_rec( p->pCare, Aig_ObjFanin0(pPo), pMan ); + if ( pObjAig == NULL ) + continue; + pObjAig = Aig_NotCond( pObjAig, Aig_ObjFaninC0(pPo) ); + Aig_ObjCreatePo( pMan, pObjAig ); + } + } +/* Aig_ManForEachPo( p->pCare, pPo, i ) { // assert( Aig_ObjFanin0(pPo) != Aig_ManConst1(p->pCare) ); @@ -208,6 +228,7 @@ Aig_Man_t * Abc_NtkConstructAig( Mfs_Man_t * p, Abc_Obj_t * pNode ) pObjAig = Aig_NotCond( pObjAig, Aig_ObjFaninC0(pPo) ); Aig_ObjCreatePo( pMan, pObjAig ); } +*/ } if ( p->pPars->fResub ) { |