diff options
Diffstat (limited to 'src/aig/nwk/nwkStrash.c')
-rw-r--r-- | src/aig/nwk/nwkStrash.c | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/src/aig/nwk/nwkStrash.c b/src/aig/nwk/nwkStrash.c deleted file mode 100644 index 54f1f027..00000000 --- a/src/aig/nwk/nwkStrash.c +++ /dev/null @@ -1,149 +0,0 @@ -/**CFile**************************************************************** - - FileName [nwkStrash.c] - - SystemName [ABC: Logic synthesis and verification system.] - - PackageName [Logic network representation.] - - Synopsis [Performs structural hashing for the network.] - - Author [Alan Mishchenko] - - Affiliation [UC Berkeley] - - Date [Ver. 1.0. Started - June 20, 2005.] - - Revision [$Id: nwkStrash.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $] - -***********************************************************************/ - -#include "nwk.h" - -ABC_NAMESPACE_IMPL_START - - -//////////////////////////////////////////////////////////////////////// -/// DECLARATIONS /// -//////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////// -/// FUNCTION DEFINITIONS /// -//////////////////////////////////////////////////////////////////////// - -/**Function************************************************************* - - Synopsis [Derives AIG from the local functions of the node.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Nwk_ManStrashNode_rec( Aig_Man_t * p, Hop_Obj_t * pObj ) -{ - assert( !Hop_IsComplement(pObj) ); - if ( !Hop_ObjIsNode(pObj) || Hop_ObjIsMarkA(pObj) ) - return; - Nwk_ManStrashNode_rec( p, Hop_ObjFanin0(pObj) ); - Nwk_ManStrashNode_rec( p, Hop_ObjFanin1(pObj) ); - pObj->pData = Aig_And( p, (Aig_Obj_t *)Hop_ObjChild0Copy(pObj), (Aig_Obj_t *)Hop_ObjChild1Copy(pObj) ); - assert( !Hop_ObjIsMarkA(pObj) ); // loop detection - Hop_ObjSetMarkA( pObj ); -} - -/**Function************************************************************* - - Synopsis [Derives AIG from the local functions of the node.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -Aig_Obj_t * Nwk_ManStrashNode( Aig_Man_t * p, Nwk_Obj_t * pObj ) -{ - Hop_Man_t * pMan = pObj->pMan->pManHop; - Hop_Obj_t * pRoot = pObj->pFunc; - Nwk_Obj_t * pFanin; - int i; - assert( Nwk_ObjIsNode(pObj) ); - // check the constant case - if ( Hop_Regular(pRoot) == Hop_ManConst1(pMan) ) - return Aig_NotCond( Aig_ManConst1(p), Hop_IsComplement(pRoot) ); - // set elementary variables - Nwk_ObjForEachFanin( pObj, pFanin, i ) - Hop_IthVar(pMan, i)->pData = pFanin->pCopy; - // strash the AIG of this node - Nwk_ManStrashNode_rec( p, Hop_Regular(pRoot) ); - Hop_ConeUnmark_rec( Hop_Regular(pRoot) ); - // return the final node - return Aig_NotCond( (Aig_Obj_t *)Hop_Regular(pRoot)->pData, Hop_IsComplement(pRoot) ); -} - -/**Function************************************************************* - - Synopsis [Derives AIG from the logic network.] - - Description [Assumes topological ordering of nodes.] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -Aig_Man_t * Nwk_ManStrash( Nwk_Man_t * pNtk ) -{ - Vec_Ptr_t * vObjs; - Aig_Man_t * pMan; - Aig_Obj_t * pObjNew; - Nwk_Obj_t * pObj; - int i, Level; - pMan = Aig_ManStart( Nwk_ManGetAigNodeNum(pNtk) ); - pMan->pName = Aig_UtilStrsav( pNtk->pName ); - pMan->pSpec = Aig_UtilStrsav( pNtk->pSpec ); - pMan->pManTime = Tim_ManDup( (Tim_Man_t *)pNtk->pManTime, 1 ); - Tim_ManIncrementTravId( (Tim_Man_t *)pMan->pManTime ); - Nwk_ManForEachObj( pNtk, pObj, i ) - pObj->pCopy = NULL; -// Nwk_ManForEachObj( pNtk, pObj, i ) - vObjs = Nwk_ManDfs( pNtk ); - Vec_PtrForEachEntry( Nwk_Obj_t *, vObjs, pObj, i ) - { - if ( Nwk_ObjIsCi(pObj) ) - { - pObjNew = Aig_ObjCreatePi(pMan); - Level = Tim_ManGetCiArrival( (Tim_Man_t *)pMan->pManTime, pObj->PioId ); - Aig_ObjSetLevel( pObjNew, Level ); - } - else if ( Nwk_ObjIsCo(pObj) ) - { - pObjNew = Aig_ObjCreatePo( pMan, Aig_NotCond((Aig_Obj_t *)Nwk_ObjFanin0(pObj)->pCopy, pObj->fInvert) ); - Level = Aig_ObjLevel( pObjNew ); - Tim_ManSetCoArrival( (Tim_Man_t *)pMan->pManTime, pObj->PioId, (float)Level ); - } - else if ( Nwk_ObjIsNode(pObj) ) - { - pObjNew = Nwk_ManStrashNode( pMan, pObj ); - } - else - assert( 0 ); - pObj->pCopy = pObjNew; - } - Vec_PtrFree( vObjs ); - Aig_ManCleanup( pMan ); - Aig_ManSetRegNum( pMan, 0 ); - return pMan; -} - -//////////////////////////////////////////////////////////////////////// -/// END OF FILE /// -//////////////////////////////////////////////////////////////////////// - - -ABC_NAMESPACE_IMPL_END - |