72{
78 int i, k, iFanin, fCompl;
79 float TotalArea = 0.0;
81
82 vNodes = Vec_PtrAlloc( 10 );
84 {
85 if ( Amap_ObjIsPi(pObj) )
86 {
91
92 pObj->
iData = Vec_PtrSize( vNodes );
93 Vec_PtrPush( vNodes, pRes );
94
96 {
99
100 Vec_PtrPush( vNodes, pRes );
101 TotalArea +=
p->pLib->pGateInv->dArea;
102 }
103 continue;
104 }
105 if ( Amap_ObjIsNode(pObj) )
106 {
107
108 if ( Amap_ObjRefsTotal(pObj) == 0 )
109 continue;
110
113
116 {
117 assert( Amap_ObjRefsTotal(pFanin) );
118 if ( (
int)pFanin->
fPolar == fCompl )
120 else
122 }
123
124 pObj->
iData = Vec_PtrSize( vNodes );
125 Vec_PtrPush( vNodes, pRes );
126 TotalArea += pGate->
dArea;
127
129 {
132
133 Vec_PtrPush( vNodes, pRes );
134 TotalArea +=
p->pLib->pGateInv->dArea;
135 }
136 continue;
137 }
138 if ( Amap_ObjIsPo(pObj) )
139 {
141 pFanin = Amap_ObjFanin0(
p, pObj);
142 assert( Amap_ObjRefsTotal(pFanin) );
143 if ( Amap_ObjIsConst1(pFanin) )
144 {
145 if ( Amap_ObjFaninC0(pObj) )
146 {
148 TotalArea +=
p->pLib->pGate0->dArea;
149 }
150 else
151 {
153 TotalArea +=
p->pLib->pGate1->dArea;
154 }
155
156 iFanin = Vec_PtrSize( vNodes );
157 Vec_PtrPush( vNodes, pRes );
158 }
159 else
160 {
161 if ( (
int)pFanin->
fPolar == Amap_ObjFaninC0(pObj) )
162 iFanin = pFanin->
iData;
163 else
164 iFanin = pFanin->
iData + 1;
165 }
166
169 pRes->
pFans[0] = iFanin;
170
171 Vec_PtrPush( vNodes, pRes );
172 }
173 }
174
175 Vec_PtrPush( vNodes, pMem );
176 return vNodes;
177}
struct Aig_MmFlex_t_ Aig_MmFlex_t
Aig_MmFlex_t * Aig_MmFlexStart()
struct Amap_Obj_t_ Amap_Obj_t
#define Amap_MatchForEachFaninCompl(p, pM, pFanin, fCompl, i)
#define Amap_ManForEachObj(p, pObj, i)
struct Amap_Gat_t_ Amap_Gat_t
Amap_Out_t * Amap_OutputStructAlloc(Aig_MmFlex_t *pMem, Amap_Gat_t *pGate)
FUNCTION DEFINITIONS ///.
struct Amap_Out_t_ Amap_Out_t
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.