ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
abcCheck.c File Reference
#include "abc.h"
#include "base/main/main.h"
Include dependency graph for abcCheck.c:

Go to the source code of this file.

Functions

int Abc_NtkCheck (Abc_Ntk_t *pNtk)
 FUNCTION DEFINITIONS ///.
 
int Abc_NtkCheckRead (Abc_Ntk_t *pNtk)
 
int Abc_NtkDoCheck (Abc_Ntk_t *pNtk)
 
int Abc_NtkCheckObj (Abc_Ntk_t *pNtk, Abc_Obj_t *pObj)
 
int Abc_NtkCompareBoxes (Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fComb)
 
int Abc_NtkCompareSignals (Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fOnlyPis, int fComb)
 
int Abc_NtkIsAcyclicHierarchy_rec (Abc_Ntk_t *pNtk)
 
int Abc_NtkIsAcyclicHierarchy (Abc_Ntk_t *pNtk)
 
int Abc_NtkNamesCompare (char **pName1, char **pName2)
 
int Abc_NtkCheckUniqueCiNames (Abc_Ntk_t *pNtk)
 
int Abc_NtkCheckUniqueCoNames (Abc_Ntk_t *pNtk)
 
int Abc_NtkCheckUniqueCioNames (Abc_Ntk_t *pNtk)
 

Function Documentation

◆ Abc_NtkCheck()

int Abc_NtkCheck ( Abc_Ntk_t * pNtk)

FUNCTION DEFINITIONS ///.

Function*************************************************************

Synopsis [Checks the integrity of the network.]

Description []

SideEffects []

SeeAlso []

Definition at line 64 of file abcCheck.c.

65{
66 return !Abc_FrameIsFlagEnabled( "check" ) || Abc_NtkDoCheck( pNtk );
67}
int Abc_NtkDoCheck(Abc_Ntk_t *pNtk)
Definition abcCheck.c:96
ABC_DLL int Abc_FrameIsFlagEnabled(char *pFlag)
Definition mainFrame.c:138
Here is the call graph for this function:

◆ Abc_NtkCheckObj()

int Abc_NtkCheckObj ( Abc_Ntk_t * pNtk,
Abc_Obj_t * pObj )

Function*************************************************************

Synopsis [Checks the connectivity of the object.]

Description []

SideEffects []

SeeAlso []

Definition at line 420 of file abcCheck.c.

421{
422 Abc_Obj_t * pFanin, * pFanout;
423 int Value = 1;
424 int i, k;
425
426 // check the network
427 if ( pObj->pNtk != pNtk )
428 {
429 fprintf( stdout, "NetworkCheck: Object \"%s\" does not belong to the network.\n", Abc_ObjName(pObj) );
430 return 0;
431 }
432 // check the object ID
433 if ( pObj->Id < 0 || (int)pObj->Id >= Abc_NtkObjNumMax(pNtk) )
434 {
435 fprintf( stdout, "NetworkCheck: Object \"%s\" has incorrect ID.\n", Abc_ObjName(pObj) );
436 return 0;
437 }
438
439 if ( !Abc_FrameIsFlagEnabled("checkfio") )
440 return Value;
441
442 // go through the fanins of the object and make sure fanins have this object as a fanout
443 Abc_ObjForEachFanin( pObj, pFanin, i )
444 {
445 if ( Vec_IntFind( &pFanin->vFanouts, pObj->Id ) == -1 )
446 {
447 fprintf( stdout, "NodeCheck: Object \"%s\" has fanin ", Abc_ObjName(pObj) );
448 fprintf( stdout, "\"%s\" but the fanin does not have it as a fanout.\n", Abc_ObjName(pFanin) );
449 Value = 0;
450 }
451 }
452 // go through the fanouts of the object and make sure fanouts have this object as a fanin
453 Abc_ObjForEachFanout( pObj, pFanout, i )
454 {
455 if ( Vec_IntFind( &pFanout->vFanins, pObj->Id ) == -1 )
456 {
457 fprintf( stdout, "NodeCheck: Object \"%s\" has fanout ", Abc_ObjName(pObj) );
458 fprintf( stdout, "\"%s\" but the fanout does not have it as a fanin.\n", Abc_ObjName(pFanout) );
459 Value = 0;
460 }
461 }
462
463 // make sure fanins are not duplicated
464 for ( i = 0; i < pObj->vFanins.nSize; i++ )
465 for ( k = i + 1; k < pObj->vFanins.nSize; k++ )
466 if ( pObj->vFanins.pArray[k] == pObj->vFanins.pArray[i] )
467 {
468 printf( "Warning: Node %s has", Abc_ObjName(pObj) );
469 printf( " duplicated fanin %s.\n", Abc_ObjName(Abc_ObjFanin(pObj,k)) );
470 }
471
472 // save time: do not check large fanout lists
473 if ( pObj->vFanouts.nSize > 100 )
474 return Value;
475
476 // make sure fanouts are not duplicated
477 for ( i = 0; i < pObj->vFanouts.nSize; i++ )
478 for ( k = i + 1; k < pObj->vFanouts.nSize; k++ )
479 if ( pObj->vFanouts.pArray[k] == pObj->vFanouts.pArray[i] )
480 {
481 printf( "Warning: Node %s has", Abc_ObjName(pObj) );
482 printf( " duplicated fanout %s.\n", Abc_ObjName(Abc_ObjFanout(pObj,k)) );
483 }
484
485 return Value;
486}
struct Abc_Obj_t_ Abc_Obj_t
Definition abc.h:116
#define Abc_ObjForEachFanin(pObj, pFanin, i)
Definition abc.h:527
#define Abc_ObjForEachFanout(pObj, pFanout, i)
Definition abc.h:529
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
Definition abcNames.c:49
Vec_Int_t vFanins
Definition abc.h:143
Abc_Ntk_t * pNtk
Definition abc.h:130
int Id
Definition abc.h:132
Vec_Int_t vFanouts
Definition abc.h:144
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_NtkCheckRead()

int Abc_NtkCheckRead ( Abc_Ntk_t * pNtk)

Function*************************************************************

Synopsis [Checks the integrity of the network after reading.]

Description []

SideEffects []

SeeAlso []

Definition at line 80 of file abcCheck.c.

81{
82 return !Abc_FrameIsFlagEnabled( "checkread" ) || Abc_NtkDoCheck( pNtk );
83}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_NtkCheckUniqueCiNames()

int Abc_NtkCheckUniqueCiNames ( Abc_Ntk_t * pNtk)

Function*************************************************************

Synopsis [Returns 0 if CI names are repeated.]

Description []

SideEffects []

SeeAlso []

Definition at line 862 of file abcCheck.c.

863{
864 Vec_Ptr_t * vNames;
865 Abc_Obj_t * pObj;
866 int i, fRetValue = 1;
867 assert( !Abc_NtkIsNetlist(pNtk) );
868 vNames = Vec_PtrAlloc( Abc_NtkCiNum(pNtk) );
869 Abc_NtkForEachCi( pNtk, pObj, i )
870 Vec_PtrPush( vNames, Abc_ObjName(pObj) );
871 Vec_PtrSort( vNames, (int (*)(const void *, const void *))Abc_NtkNamesCompare );
872 for ( i = 1; i < Abc_NtkCiNum(pNtk); i++ )
873 if ( !strcmp( (const char *)Vec_PtrEntry(vNames,i-1), (const char *)Vec_PtrEntry(vNames,i) ) )
874 {
875 printf( "Abc_NtkCheck: Repeated CI names: %s and %s.\n", (char*)Vec_PtrEntry(vNames,i-1), (char*)Vec_PtrEntry(vNames,i) );
876 fRetValue = 0;
877 }
878 Vec_PtrFree( vNames );
879 return fRetValue;
880}
int Abc_NtkNamesCompare(char **pName1, char **pName2)
Definition abcCheck.c:846
#define Abc_NtkForEachCi(pNtk, pCi, i)
Definition abc.h:518
#define assert(ex)
Definition util_old.h:213
int strcmp()
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
Here is the call graph for this function:

◆ Abc_NtkCheckUniqueCioNames()

int Abc_NtkCheckUniqueCioNames ( Abc_Ntk_t * pNtk)

Function*************************************************************

Synopsis [Returns 0 if there is a pair of CI/CO with the same name and logic in between.]

Description []

SideEffects []

SeeAlso []

Definition at line 927 of file abcCheck.c.

928{
929 Abc_Obj_t * pObj, * pObjCi, * pFanin;
930 int i, nCiId, fRetValue = 1;
931 assert( !Abc_NtkIsNetlist(pNtk) );
932 Abc_NtkForEachCo( pNtk, pObj, i )
933 {
935 if ( nCiId == -1 )
936 continue;
937 pObjCi = Abc_NtkObj( pNtk, nCiId );
938 assert( !strcmp( Abc_ObjName(pObj), Abc_ObjName(pObjCi) ) );
939 pFanin = Abc_ObjFanin0(pObj);
940 if ( pFanin != pObjCi )
941 {
942 printf( "Abc_NtkCheck: A CI/CO pair share the name (%s) but do not link directly. The name of the CO fanin is %s.\n",
943 Abc_ObjName(pObj), Abc_ObjName(Abc_ObjFanin0(pObj)) );
944 fRetValue = 0;
945 }
946 }
947 return fRetValue;
948}
#define Abc_NtkForEachCo(pNtk, pCo, i)
Definition abc.h:522
@ ABC_OBJ_BO
Definition abc.h:92
@ ABC_OBJ_PI
Definition abc.h:89
int Nm_ManFindIdByNameTwoTypes(Nm_Man_t *p, char *pName, int Type1, int Type2)
Definition nmApi.c:239
Nm_Man_t * pManName
Definition abc.h:160
Here is the call graph for this function:

◆ Abc_NtkCheckUniqueCoNames()

int Abc_NtkCheckUniqueCoNames ( Abc_Ntk_t * pNtk)

Function*************************************************************

Synopsis [Returns 0 if CO names are repeated.]

Description []

SideEffects []

SeeAlso []

Definition at line 893 of file abcCheck.c.

894{
895 Vec_Ptr_t * vNames;
896 Abc_Obj_t * pObj;
897 int i, fRetValue = 1;
898 assert( !Abc_NtkIsNetlist(pNtk) );
899 vNames = Vec_PtrAlloc( Abc_NtkCoNum(pNtk) );
900 Abc_NtkForEachCo( pNtk, pObj, i )
901 Vec_PtrPush( vNames, Abc_ObjName(pObj) );
902 Vec_PtrSort( vNames, (int (*)(const void *, const void *))Abc_NtkNamesCompare );
903 for ( i = 1; i < Abc_NtkCoNum(pNtk); i++ )
904 {
905// printf( "%s\n", Vec_PtrEntry(vNames,i) );
906 if ( !strcmp( (const char *)Vec_PtrEntry(vNames,i-1), (const char *)Vec_PtrEntry(vNames,i) ) )
907 {
908 printf( "Abc_NtkCheck: Repeated CO names: %s and %s.\n", (char*)Vec_PtrEntry(vNames,i-1), (char*)Vec_PtrEntry(vNames,i) );
909 fRetValue = 0;
910 }
911 }
912 Vec_PtrFree( vNames );
913 return fRetValue;
914}
Here is the call graph for this function:

◆ Abc_NtkCompareBoxes()

int Abc_NtkCompareBoxes ( Abc_Ntk_t * pNtk1,
Abc_Ntk_t * pNtk2,
int fComb )

Function*************************************************************

Synopsis [Compares the latches of the two networks.]

Description []

SideEffects []

SeeAlso []

Definition at line 711 of file abcCheck.c.

712{
713 Abc_Obj_t * pObj1;
714 int i;
715 assert( Abc_NtkHasOnlyLatchBoxes(pNtk1) );
716 assert( Abc_NtkHasOnlyLatchBoxes(pNtk2) );
717 if ( !fComb )
718 return 1;
719 if ( Abc_NtkBoxNum(pNtk1) != Abc_NtkBoxNum(pNtk2) )
720 {
721 printf( "Networks have different number of latches.\n" );
722 return 0;
723 }
724 // for each PI of pNet1 find corresponding PI of pNet2 and reorder them
725 Abc_NtkForEachBox( pNtk1, pObj1, i )
726 {
727 if ( strcmp( Abc_ObjName(Abc_ObjFanout0(pObj1)), Abc_ObjName(Abc_ObjFanout0(Abc_NtkBox(pNtk2,i))) ) != 0 )
728 {
729 printf( "Box #%d is different in network 1 ( \"%s\") and in network 2 (\"%s\").\n",
730 i, Abc_ObjName(Abc_ObjFanout0(pObj1)), Abc_ObjName(Abc_ObjFanout0(Abc_NtkBox(pNtk2,i))) );
731 return 0;
732 }
733 }
734 return 1;
735}
#define Abc_NtkForEachBox(pNtk, pObj, i)
Definition abc.h:498
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_NtkCompareSignals()

int Abc_NtkCompareSignals ( Abc_Ntk_t * pNtk1,
Abc_Ntk_t * pNtk2,
int fOnlyPis,
int fComb )

Function*************************************************************

Synopsis [Compares the signals of the networks.]

Description []

SideEffects [Ordering POs by name is a very bad idea! It destroys the natural order of the logic in the circuit.]

SeeAlso []

Definition at line 749 of file abcCheck.c.

750{
751 Abc_NtkOrderObjsByName( pNtk1, fComb );
752 Abc_NtkOrderObjsByName( pNtk2, fComb );
753 if ( !Abc_NtkComparePis( pNtk1, pNtk2, fComb ) )
754 return 0;
755 if ( !fOnlyPis )
756 {
757 if ( !Abc_NtkCompareBoxes( pNtk1, pNtk2, fComb ) )
758 return 0;
759 if ( !Abc_NtkComparePos( pNtk1, pNtk2, fComb ) )
760 return 0;
761 }
762 return 1;
763}
int Abc_NtkCompareBoxes(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fComb)
Definition abcCheck.c:711
ABC_DLL void Abc_NtkOrderObjsByName(Abc_Ntk_t *pNtk, int fComb)
Definition abcNames.c:330
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_NtkDoCheck()

int Abc_NtkDoCheck ( Abc_Ntk_t * pNtk)

Function*************************************************************

Synopsis [Checks the integrity of the network.]

Description []

SideEffects []

SeeAlso []

Definition at line 96 of file abcCheck.c.

97{
98 Abc_Obj_t * pObj, * pNet, * pNode;
99 int i;
100
101 // check network types
102 if ( !Abc_NtkIsNetlist(pNtk) && !Abc_NtkIsLogic(pNtk) && !Abc_NtkIsStrash(pNtk) )
103 {
104 fprintf( stdout, "NetworkCheck: Unknown network type.\n" );
105 return 0;
106 }
107 if ( !Abc_NtkHasSop(pNtk) && !Abc_NtkHasBdd(pNtk) && !Abc_NtkHasAig(pNtk) && !Abc_NtkHasMapping(pNtk) && !Abc_NtkHasBlifMv(pNtk) && !Abc_NtkHasBlackbox(pNtk) )
108 {
109 fprintf( stdout, "NetworkCheck: Unknown functionality type.\n" );
110 return 0;
111 }
112 if ( Abc_NtkHasMapping(pNtk) )
113 {
114 if ( pNtk->pManFunc != Abc_FrameReadLibGen() )
115 {
116 fprintf( stdout, "NetworkCheck: The library of the mapped network is not the global library.\n" );
117 return 0;
118 }
119 }
120
121 if ( Abc_NtkHasOnlyLatchBoxes(pNtk) )
122 {
123 // check CI/CO numbers
124 if ( Abc_NtkPiNum(pNtk) + Abc_NtkLatchNum(pNtk) != Abc_NtkCiNum(pNtk) )
125 {
126 fprintf( stdout, "NetworkCheck: Number of CIs does not match number of PIs and latches.\n" );
127 fprintf( stdout, "One possible reason is that latches are added twice:\n" );
128 fprintf( stdout, "in procedure Abc_NtkCreateObj() and in the user's code.\n" );
129 return 0;
130 }
131 if ( Abc_NtkPoNum(pNtk) + Abc_NtkLatchNum(pNtk) != Abc_NtkCoNum(pNtk) )
132 {
133 fprintf( stdout, "NetworkCheck: Number of COs does not match number of POs, asserts, and latches.\n" );
134 fprintf( stdout, "One possible reason is that latches are added twice:\n" );
135 fprintf( stdout, "in procedure Abc_NtkCreateObj() and in the user's code.\n" );
136 return 0;
137 }
138 }
139
140 // check the names
141 if ( !Abc_NtkCheckNames( pNtk ) )
142 return 0;
143
144 // check PIs and POs
145 Abc_NtkCleanCopy( pNtk );
146 if ( !Abc_NtkCheckPis( pNtk ) )
147 return 0;
148 if ( !Abc_NtkCheckPos( pNtk ) )
149 return 0;
150
151 if ( Abc_NtkHasBlackbox(pNtk) )
152 return 1;
153
154 // check the connectivity of objects
155 Abc_NtkForEachObj( pNtk, pObj, i )
156 if ( !Abc_NtkCheckObj( pNtk, pObj ) )
157 return 0;
158
159 // if it is a netlist change nets and latches
160 if ( Abc_NtkIsNetlist(pNtk) )
161 {
162 if ( Abc_NtkNetNum(pNtk) == 0 )
163 fprintf( stdout, "NetworkCheck: Warning! Netlist has no nets.\n" );
164 // check the nets
165 Abc_NtkForEachNet( pNtk, pNet, i )
166 if ( !Abc_NtkCheckNet( pNtk, pNet ) )
167 return 0;
168 }
169 else
170 {
171 if ( Abc_NtkNetNum(pNtk) != 0 )
172 {
173 fprintf( stdout, "NetworkCheck: A network that is not a netlist has nets.\n" );
174 return 0;
175 }
176 }
177
178 // check the nodes
179 if ( Abc_NtkIsStrash(pNtk) )
180 {
181 if ( !Abc_AigCheck( (Abc_Aig_t *)pNtk->pManFunc ) )
182 return 0;
183 }
184 else
185 {
186 Abc_NtkForEachNode( pNtk, pNode, i )
187 if ( !Abc_NtkCheckNode( pNtk, pNode ) )
188 return 0;
189 }
190
191 // check the latches
192 Abc_NtkForEachLatch( pNtk, pNode, i )
193 if ( !Abc_NtkCheckLatch( pNtk, pNode ) )
194 return 0;
195
196 // finally, check for combinational loops
197// clk = Abc_Clock();
198 if ( !Abc_NtkIsAcyclic( pNtk ) )
199 {
200 fprintf( stdout, "NetworkCheck: Network contains a combinational loop.\n" );
201 return 0;
202 }
203// ABC_PRT( "Acyclic ", Abc_Clock() - clk );
204
205 // check the EXDC network if present
206 if ( pNtk->pExdc )
207 Abc_NtkCheck( pNtk->pExdc );
208/*
209 // check the hierarchy
210 if ( Abc_NtkIsNetlist(pNtk) && pNtk->tName2Model )
211 {
212 stmm_generator * gen;
213 Abc_Ntk_t * pNtkTemp;
214 char * pName;
215 // check other networks
216 stmm_foreach_item( pNtk->tName2Model, gen, &pName, (char **)&pNtkTemp )
217 {
218 pNtkTemp->fHiePath = pNtkTemp->fHieVisited = 0;
219 if ( !Abc_NtkCheck( pNtkTemp ) )
220 return 0;
221 }
222 // check acyclic dependency of the models
223 if ( !Abc_NtkIsAcyclicHierarchy( pNtk ) )
224 {
225 fprintf( stdout, "NetworkCheck: Network hierarchical dependences contains a cycle.\n" );
226 return 0;
227 }
228 }
229*/
230 return 1;
231}
int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
Definition abcCheck.c:64
int Abc_NtkCheckObj(Abc_Ntk_t *pNtk, Abc_Obj_t *pObj)
Definition abcCheck.c:420
#define Abc_NtkForEachNet(pNtk, pNet, i)
Definition abc.h:461
#define Abc_NtkForEachLatch(pNtk, pObj, i)
Definition abc.h:500
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
Definition abc.h:449
struct Abc_Aig_t_ Abc_Aig_t
Definition abc.h:117
ABC_DLL int Abc_AigCheck(Abc_Aig_t *pMan)
Definition abcAig.c:226
ABC_DLL void Abc_NtkCleanCopy(Abc_Ntk_t *pNtk)
Definition abcUtil.c:540
ABC_DLL int Abc_NtkIsAcyclic(Abc_Ntk_t *pNtk)
Definition abcDfs.c:1614
#define Abc_NtkForEachNode(pNtk, pNode, i)
Definition abc.h:464
ABC_DLL void * Abc_FrameReadLibGen()
Definition mainFrame.c:59
Abc_Ntk_t * pExdc
Definition abc.h:201
void * pManFunc
Definition abc.h:191
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_NtkIsAcyclicHierarchy()

int Abc_NtkIsAcyclicHierarchy ( Abc_Ntk_t * pNtk)

Function*************************************************************

Synopsis [Returns 0 if the network hierachy contains a cycle.]

Description []

SideEffects []

SeeAlso []

Definition at line 817 of file abcCheck.c.

818{
819 Abc_Ntk_t * pTemp;
820 int i, RetValue;
821 assert( Abc_NtkIsNetlist(pNtk) && pNtk->pDesign );
822 // clear the modules
823 Vec_PtrForEachEntry( Abc_Ntk_t *, pNtk->pDesign->vModules, pTemp, i )
824 pTemp->fHieVisited = pTemp->fHiePath = 0;
825 // traverse
826 pNtk->fHiePath = 1;
827 RetValue = Abc_NtkIsAcyclicHierarchy_rec( pNtk );
828 pNtk->fHiePath = 0;
829 // clear the modules
830 Vec_PtrForEachEntry( Abc_Ntk_t *, pNtk->pDesign->vModules, pTemp, i )
831 pTemp->fHieVisited = pTemp->fHiePath = 0;
832 return RetValue;
833}
int Abc_NtkIsAcyclicHierarchy_rec(Abc_Ntk_t *pNtk)
Definition abcCheck.c:776
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
Vec_Ptr_t * vModules
Definition abc.h:225
Abc_Des_t * pDesign
Definition abc.h:180
int fHieVisited
Definition abc.h:182
int fHiePath
Definition abc.h:183
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
Definition vecPtr.h:55
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_NtkIsAcyclicHierarchy_rec()

int Abc_NtkIsAcyclicHierarchy_rec ( Abc_Ntk_t * pNtk)

Function*************************************************************

Synopsis [Returns 0 if the network hierachy contains a cycle.]

Description []

SideEffects []

SeeAlso []

Definition at line 776 of file abcCheck.c.

777{
778 Abc_Ntk_t * pNtkNext;
779 Abc_Obj_t * pObj;
780 int i;
781 // return if visited
782 if ( pNtk->fHieVisited )
783 return 1;
784 pNtk->fHieVisited = 1;
785 // return if black box
786 if ( Abc_NtkHasBlackbox(pNtk) )
787 return 1;
788 assert( Abc_NtkIsNetlist(pNtk) );
789 // go through all the children networks
790 Abc_NtkForEachBox( pNtk, pObj, i )
791 {
792 if ( Abc_ObjIsLatch(pObj) )
793 continue;
794 pNtkNext = (Abc_Ntk_t *)pObj->pData;
795 assert( pNtkNext != NULL );
796 if ( pNtkNext->fHiePath )
797 return 0;
798 pNtk->fHiePath = 1;
799 if ( !Abc_NtkIsAcyclicHierarchy_rec( pNtkNext ) )
800 return 0;
801 pNtk->fHiePath = 0;
802 }
803 return 1;
804}
void * pData
Definition abc.h:145
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_NtkNamesCompare()

int Abc_NtkNamesCompare ( char ** pName1,
char ** pName2 )

Function*************************************************************

Synopsis [Returns 0 if CI names are repeated.]

Description []

SideEffects []

SeeAlso []

Definition at line 846 of file abcCheck.c.

847{
848 return strcmp( *pName1, *pName2 );
849}
Here is the call graph for this function:
Here is the caller graph for this function: