ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
nwkObj.c
Go to the documentation of this file.
1
20
21#include "nwk.h"
22
24
25
29
33
45Nwk_Obj_t * Nwk_ManCreateObj( Nwk_Man_t * p, int nFanins, int nFanouts )
46{
47 Nwk_Obj_t * pObj;
48 pObj = (Nwk_Obj_t *)Aig_MmFlexEntryFetch( p->pMemObjs, sizeof(Nwk_Obj_t) + (nFanins + nFanouts + p->nFanioPlus) * sizeof(Nwk_Obj_t *) );
49 memset( pObj, 0, sizeof(Nwk_Obj_t) );
50 pObj->pFanio = (Nwk_Obj_t **)((char *)pObj + sizeof(Nwk_Obj_t));
51 pObj->Id = Vec_PtrSize( p->vObjs );
52 Vec_PtrPush( p->vObjs, pObj );
53 pObj->pMan = p;
54 pObj->nFanioAlloc = nFanins + nFanouts + p->nFanioPlus;
55 return pObj;
56}
57
58
71{
72 Nwk_Obj_t * pObj;
73 pObj = Nwk_ManCreateObj( p, 1, nFanouts );
74 pObj->PioId = Vec_PtrSize( p->vCis );
75 Vec_PtrPush( p->vCis, pObj );
76 pObj->Type = NWK_OBJ_CI;
77 p->nObjs[NWK_OBJ_CI]++;
78 return pObj;
79}
80
93{
94 Nwk_Obj_t * pObj;
95 pObj = Nwk_ManCreateObj( p, 1, 1 );
96 pObj->PioId = Vec_PtrSize( p->vCos );
97 Vec_PtrPush( p->vCos, pObj );
98 pObj->Type = NWK_OBJ_CO;
99 p->nObjs[NWK_OBJ_CO]++;
100 return pObj;
101}
102
115{
116 Nwk_Obj_t * pObj;
117 pObj = Nwk_ManCreateObj( p, 1, 1 );
118 pObj->Type = NWK_OBJ_LATCH;
119 p->nObjs[NWK_OBJ_LATCH]++;
120 return pObj;
121}
122
134Nwk_Obj_t * Nwk_ManCreateNode( Nwk_Man_t * p, int nFanins, int nFanouts )
135{
136 Nwk_Obj_t * pObj;
137 pObj = Nwk_ManCreateObj( p, nFanins, nFanouts );
138 pObj->Type = NWK_OBJ_NODE;
139 p->nObjs[NWK_OBJ_NODE]++;
140 return pObj;
141}
142
143
156{
157 Vec_Ptr_t * vNodes = pObj->pMan->vTemp;
158 Nwk_Obj_t * pTemp;
159 int i;
160 assert( Nwk_ObjFanoutNum(pObj) == 0 );
161 // delete fanins
162 Nwk_ObjCollectFanins( pObj, vNodes );
163 Vec_PtrForEachEntry( Nwk_Obj_t *, vNodes, pTemp, i )
164 Nwk_ObjDeleteFanin( pObj, pTemp );
165 // remove from the list of objects
166 Vec_PtrWriteEntry( pObj->pMan->vObjs, pObj->Id, NULL );
167 pObj->pMan->nObjs[pObj->Type]--;
168 memset( pObj, 0, sizeof(Nwk_Obj_t) );
169 pObj->Id = -1;
170}
171
184{
185 Vec_Ptr_t * vNodes;
186 int i;
187 assert( !Nwk_ObjIsCi(pObj) );
188 assert( Nwk_ObjFanoutNum(pObj) == 0 );
189 vNodes = Vec_PtrAlloc( 100 );
190 Nwk_ObjCollectFanins( pObj, vNodes );
191 Nwk_ManDeleteNode( pObj );
192 Vec_PtrForEachEntry( Nwk_Obj_t *, vNodes, pObj, i )
193 if ( Nwk_ObjIsNode(pObj) && Nwk_ObjFanoutNum(pObj) == 0 )
194 Nwk_ManDeleteNode_rec( pObj );
195 Vec_PtrFree( vNodes );
196}
197
201
202
204
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
char * Aig_MmFlexEntryFetch(Aig_MmFlex_t *p, int nBytes)
Definition aigMem.c:366
Cube * p
Definition exorList.c:222
struct Nwk_Man_t_ Nwk_Man_t
Definition ntlnwk.h:41
Nwk_Obj_t * Nwk_ManCreateCo(Nwk_Man_t *p)
Definition nwkObj.c:92
void Nwk_ManDeleteNode(Nwk_Obj_t *pObj)
Definition nwkObj.c:155
void Nwk_ManDeleteNode_rec(Nwk_Obj_t *pObj)
Definition nwkObj.c:183
Nwk_Obj_t * Nwk_ManCreateNode(Nwk_Man_t *p, int nFanins, int nFanouts)
Definition nwkObj.c:134
Nwk_Obj_t * Nwk_ManCreateLatch(Nwk_Man_t *p)
Definition nwkObj.c:114
ABC_NAMESPACE_IMPL_START Nwk_Obj_t * Nwk_ManCreateObj(Nwk_Man_t *p, int nFanins, int nFanouts)
DECLARATIONS ///.
Definition nwkObj.c:45
Nwk_Obj_t * Nwk_ManCreateCi(Nwk_Man_t *p, int nFanouts)
Definition nwkObj.c:70
ABC_DLL void Nwk_ObjDeleteFanin(Nwk_Obj_t *pObj, Nwk_Obj_t *pFanin)
Definition nwkFanio.c:192
typedefABC_NAMESPACE_HEADER_START struct Nwk_Obj_t_ Nwk_Obj_t
INCLUDES ///.
Definition nwk.h:49
ABC_DLL void Nwk_ObjCollectFanins(Nwk_Obj_t *pNode, Vec_Ptr_t *vNodes)
DECLARATIONS ///.
Definition nwkFanio.c:45
@ NWK_OBJ_CO
Definition nwk.h:55
@ NWK_OBJ_LATCH
Definition nwk.h:57
@ NWK_OBJ_CI
Definition nwk.h:54
@ NWK_OBJ_NODE
Definition nwk.h:56
#define assert(ex)
Definition util_old.h:213
char * memset()
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
Definition vecPtr.h:55