ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
saigScl.c
Go to the documentation of this file.
1
20
21#include "saig.h"
22
24
25
29
33
46{
47 Aig_Obj_t * pObj, * pDriver;
48 int i, Counter1, Counter2;
49 // set PIO numbers
50 Aig_ManSetCioIds( pAig );
51 // check how many POs are driven by a register whose ref count is 1
52 Counter1 = 0;
53 Saig_ManForEachPo( pAig, pObj, i )
54 {
55 pDriver = Aig_ObjFanin0(pObj);
56 if ( Saig_ObjIsLo(pAig, pDriver) && Aig_ObjRefs(pDriver) == 1 )
57 Counter1++;
58 }
59 // check how many PIs have ref count 1 and drive a register
60 Counter2 = 0;
61 Saig_ManForEachLi( pAig, pObj, i )
62 {
63 pDriver = Aig_ObjFanin0(pObj);
64 if ( Saig_ObjIsPi(pAig, pDriver) && Aig_ObjRefs(pDriver) == 1 )
65 Counter2++;
66 }
67 if ( Counter1 )
68 printf( "Network has %d (out of %d) registers driving POs.\n", Counter1, Saig_ManRegNum(pAig) );
69 if ( Counter2 )
70 printf( "Network has %d (out of %d) registers driven by PIs.\n", Counter2, Saig_ManRegNum(pAig) );
71}
72
73
86{
87 Aig_Obj_t * pObj, * pFanin;
88 int i, Counter = 0;
89 assert( Aig_ManRegNum(p) > 0 );
90 Aig_ManForEachObj( p, pObj, i )
91 assert( !pObj->fMarkA );
92 Aig_ManForEachLiSeq( p, pObj, i )
93 {
94 pFanin = Aig_ObjFanin0(pObj);
95 if ( pFanin->fMarkA )
96 Counter++;
97 else
98 pFanin->fMarkA = 1;
99 }
100 // count fanins that have both attributes
101 Aig_ManForEachLiSeq( p, pObj, i )
102 {
103 pFanin = Aig_ObjFanin0(pObj);
104 pFanin->fMarkA = 0;
105 }
106 return Counter;
107}
108
112
113
115
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Aig_ManSetCioIds(Aig_Man_t *p)
Definition aigUtil.c:978
#define Aig_ManForEachObj(p, pObj, i)
Definition aig.h:403
#define Aig_ManForEachLiSeq(p, pObj, i)
Definition aig.h:447
struct Aig_Obj_t_ Aig_Obj_t
Definition aig.h:51
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
Definition aig.h:50
Cube * p
Definition exorList.c:222
ABC_NAMESPACE_IMPL_START void Saig_ManReportUselessRegisters(Aig_Man_t *pAig)
DECLARATIONS ///.
Definition saigScl.c:45
int Saig_ManReportComplements(Aig_Man_t *p)
Definition saigScl.c:85
#define Saig_ManForEachLi(p, pObj, i)
Definition saig.h:98
#define Saig_ManForEachPo(p, pObj, i)
Definition saig.h:93
unsigned int fMarkA
Definition aig.h:79
#define assert(ex)
Definition util_old.h:213