abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
nwkCheck.c
Go to the documentation of this file.
1 /**CFile****************************************************************
2 
3  FileName [nwkCheck.c]
4 
5  SystemName [ABC: Logic synthesis and verification system.]
6 
7  PackageName [Logic network representation.]
8 
9  Synopsis [Consistency checking procedures.]
10 
11  Author [Alan Mishchenko]
12 
13  Affiliation [UC Berkeley]
14 
15  Date [Ver. 1.0. Started - June 20, 2005.]
16 
17  Revision [$Id: nwkCheck.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
18 
19 ***********************************************************************/
20 
21 #include "nwk.h"
22 
24 
25 
26 ////////////////////////////////////////////////////////////////////////
27 /// DECLARATIONS ///
28 ////////////////////////////////////////////////////////////////////////
29 
30 ////////////////////////////////////////////////////////////////////////
31 /// FUNCTION DEFINITIONS ///
32 ////////////////////////////////////////////////////////////////////////
33 
34 /**Function*************************************************************
35 
36  Synopsis [Checking the logic network for consistency.]
37 
38  Description []
39 
40  SideEffects []
41 
42  SeeAlso []
43 
44 ***********************************************************************/
46 {
47  Nwk_Obj_t * pObj, * pNext;
48  int i, k, m;
49  // check if the nodes have duplicated fanins
50  Nwk_ManForEachNode( p, pObj, i )
51  {
52  for ( k = 0; k < pObj->nFanins; k++ )
53  for ( m = k + 1; m < pObj->nFanins; m++ )
54  if ( pObj->pFanio[k] == pObj->pFanio[m] )
55  printf( "Node %d has duplicated fanin %d.\n", pObj->Id, pObj->pFanio[k]->Id );
56  }
57  // check if all nodes are in the correct fanin/fanout relationship
58  Nwk_ManForEachObj( p, pObj, i )
59  {
60  Nwk_ObjForEachFanin( pObj, pNext, k )
61  if ( Nwk_ObjFanoutNum(pNext) < 100 && Nwk_ObjFindFanout( pNext, pObj ) == -1 )
62  printf( "Nwk_ManCheck(): Object %d has fanin %d which does not have a corresponding fanout.\n", pObj->Id, pNext->Id );
63  Nwk_ObjForEachFanout( pObj, pNext, k )
64  if ( Nwk_ObjFindFanin( pNext, pObj ) == -1 )
65  printf( "Nwk_ManCheck(): Object %d has fanout %d which does not have a corresponding fanin.\n", pObj->Id, pNext->Id );
66  }
67  return 1;
68 }
69 
70 ////////////////////////////////////////////////////////////////////////
71 /// END OF FILE ///
72 ////////////////////////////////////////////////////////////////////////
73 
74 
76 
ABC_DLL int Nwk_ObjFindFanout(Nwk_Obj_t *pObj, Nwk_Obj_t *pFanout)
Definition: nwkFanio.c:106
static int Nwk_ObjFanoutNum(Nwk_Obj_t *p)
Definition: nwk.h:138
typedefABC_NAMESPACE_HEADER_START struct Nwk_Obj_t_ Nwk_Obj_t
INCLUDES ///.
Definition: nwk.h:49
static Llb_Mgr_t * p
Definition: llb3Image.c:950
#define Nwk_ObjForEachFanout(pObj, pFanout, i)
Definition: nwk.h:201
ABC_DLL int Nwk_ObjFindFanin(Nwk_Obj_t *pObj, Nwk_Obj_t *pFanin)
Definition: nwkFanio.c:85
Definition: nwk.h:61
#define ABC_NAMESPACE_IMPL_END
Definition: abc_global.h:108
#define ABC_NAMESPACE_IMPL_START
Definition: abc_global.h:107
ABC_NAMESPACE_IMPL_START int Nwk_ManCheck(Nwk_Man_t *p)
DECLARATIONS ///.
Definition: nwkCheck.c:45
#define Nwk_ObjForEachFanin(pObj, pFanin, i)
Definition: nwk.h:199
#define Nwk_ManForEachObj(p, pObj, i)
Definition: nwk.h:189
#define Nwk_ManForEachNode(p, pObj, i)
Definition: nwk.h:192