ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
acecUtil.c
Go to the documentation of this file.
1
20
21#include "acecInt.h"
22
24
25
29
33
45void Gia_PolynCollectXors_rec( Gia_Man_t * pGia, int iObj, Vec_Int_t * vXors )
46{
47 Gia_Obj_t * pObj = Gia_ManObj( pGia, iObj );
48 if ( Gia_ObjIsTravIdCurrent(pGia, pObj) )
49 return;
50 Gia_ObjSetTravIdCurrent(pGia, pObj);
51 if ( !Gia_ObjIsAnd(pObj) || !Gia_ObjIsXor(pObj) || Gia_ObjRefNum(pGia, pObj) > 1 )
52 return;
53 Gia_PolynCollectXors_rec( pGia, Gia_ObjFaninId0(pObj, iObj), vXors );
54 Gia_PolynCollectXors_rec( pGia, Gia_ObjFaninId1(pObj, iObj), vXors );
55 Vec_IntPushUnique( vXors, iObj );
56}
58{
59 Vec_Int_t * vXors = Vec_IntAlloc( 100 );
60 Gia_Obj_t * pObj = Gia_ManCo( pGia, Gia_ManCoNum(pGia)-1 );
61 ABC_FREE( pGia->pRefs );
62 Gia_ManCreateRefs( pGia );
64 Gia_PolynCollectXors_rec( pGia, Gia_ObjFaninId0p(pGia, pObj), vXors );
65 Vec_IntReverseOrder( vXors );
66 ABC_FREE( pGia->pRefs );
67 return vXors;
68}
69void Gia_PolynAnalyzeXors( Gia_Man_t * pGia, int fVerbose )
70{
71 int i, iDriver, Count = 0;
72 Vec_Int_t * vXors = Vec_IntAlloc( 100 );
73 if ( pGia->pMuxes == NULL )
74 {
75 printf( "AIG does not have XORs extracted.\n" );
76 return;
77 }
78 assert( pGia->pMuxes );
79 Gia_ManForEachCoDriverId( pGia, iDriver, i )
80 {
81 Vec_IntClear( vXors );
83 Gia_PolynCollectXors_rec( pGia, iDriver, vXors );
84 //printf( "%3d : ", i );
85 //Vec_IntPrint( vXors );
86 printf( "%d=%d ", i, Vec_IntSize(vXors) );
87 Count += Vec_IntSize(vXors);
88 }
89 printf( "Total = %d.\n", Count );
90 Vec_IntFree( vXors );
91}
92
105{
106 Gia_Man_t * pNew;
107 Vec_Int_t * vTops = Vec_IntAlloc( 10 );
108 int i;
109 for ( i = 45; i < 52; i++ )
110 Vec_IntPush( vTops, Gia_ObjId( p, Gia_ObjFanin0(Gia_ManCo(p, i)) ) );
111 pNew = Gia_ManDupAndConesLimit( p, Vec_IntArray(vTops), Vec_IntSize(vTops), 100 );
112 Vec_IntFree( vTops );
113 return pNew;
114}
115
119
120
122
#define ABC_FREE(obj)
Definition abc_global.h:267
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
Vec_Int_t * Gia_PolynCollectLastXor(Gia_Man_t *pGia, int fVerbose)
Definition acecUtil.c:57
Gia_Man_t * Gia_ManDupTopMostRange(Gia_Man_t *p)
Definition acecUtil.c:104
ABC_NAMESPACE_IMPL_START void Gia_PolynCollectXors_rec(Gia_Man_t *pGia, int iObj, Vec_Int_t *vXors)
DECLARATIONS ///.
Definition acecUtil.c:45
void Gia_PolynAnalyzeXors(Gia_Man_t *pGia, int fVerbose)
Definition acecUtil.c:69
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
Cube * p
Definition exorList.c:222
#define Gia_ManForEachCoDriverId(p, DriverId, i)
Definition gia.h:1246
struct Gia_Obj_t_ Gia_Obj_t
Definition gia.h:76
Gia_Man_t * Gia_ManDupAndConesLimit(Gia_Man_t *p, int *pAnds, int nAnds, int Level)
Definition giaDup.c:4021
struct Gia_Man_t_ Gia_Man_t
Definition gia.h:96
void Gia_ManCreateRefs(Gia_Man_t *p)
Definition giaUtil.c:779
void Gia_ManIncrementTravId(Gia_Man_t *p)
Definition giaUtil.c:190
unsigned * pMuxes
Definition gia.h:106
int * pRefs
Definition gia.h:118
#define assert(ex)
Definition util_old.h:213