101 fprintf( stdout,
"NetworkCheck: Unknown network type.\n" );
106 fprintf( stdout,
"NetworkCheck: Unknown functionality type.\n" );
113 fprintf( stdout,
"NetworkCheck: The library of the mapped network is not the global library.\n" );
123 fprintf( stdout,
"NetworkCheck: Number of CIs does not match number of PIs and latches.\n" );
124 fprintf( stdout,
"One possible reason is that latches are added twice:\n" );
125 fprintf( stdout,
"in procedure Abc_NtkCreateObj() and in the user's code.\n" );
130 fprintf( stdout,
"NetworkCheck: Number of COs does not match number of POs, asserts, and latches.\n" );
131 fprintf( stdout,
"One possible reason is that latches are added twice:\n" );
132 fprintf( stdout,
"in procedure Abc_NtkCreateObj() and in the user's code.\n" );
160 fprintf( stdout,
"NetworkCheck: Warning! Netlist has no nets.\n" );
170 fprintf( stdout,
"NetworkCheck: A network that is not a netlist has nets.\n" );
194 fprintf( stdout,
"NetworkCheck: Network contains a combinational loop.\n" );
254 fprintf( stdout,
"NetworkCheck: CI with ID %d is in the network but not in the name table.\n", pObj->
Id );
263 fprintf( stdout,
"NetworkCheck: CO with ID %d is in the network but not in the name table.\n", pObj->
Id );
279 fprintf( stdout,
"NetworkCheck: Object with ID %d is deleted but its name \"%s\" remains in the name table.\n", NameId, pName );
322 fprintf( stdout,
"NetworkCheck: Object \"%s\" (id=%d) is in the PI list but is not a PI.\n",
Abc_ObjName(pObj), pObj->
Id );
327 fprintf( stdout,
"NetworkCheck: A PI \"%s\" has a logic function.\n",
Abc_ObjName(pObj) );
332 fprintf( stdout,
"NetworkCheck: A PI \"%s\" has fanins.\n",
Abc_ObjName(pObj) );
341 fprintf( stdout,
"NetworkCheck: Object \"%s\" (id=%d) is a PI but is not in the PI list.\n",
Abc_ObjName(pObj), pObj->
Id );
370 fprintf( stdout,
"NetworkCheck: Net \"%s\" (id=%d) is in the PO list but is not a PO.\n",
Abc_ObjName(pObj), pObj->
Id );
375 fprintf( stdout,
"NetworkCheck: A PO \"%s\" has a logic function.\n",
Abc_ObjName(pObj) );
394 fprintf( stdout,
"NetworkCheck: Net \"%s\" (id=%d) is in a PO but is not in the PO list.\n",
Abc_ObjName(pObj), pObj->
Id );
421 if ( pObj->
pNtk != pNtk )
423 fprintf( stdout,
"NetworkCheck: Object \"%s\" does not belong to the network.\n",
Abc_ObjName(pObj) );
429 fprintf( stdout,
"NetworkCheck: Object \"%s\" has incorrect ID.\n",
Abc_ObjName(pObj) );
441 fprintf( stdout,
"NodeCheck: Object \"%s\" has fanin ",
Abc_ObjName(pObj) );
442 fprintf( stdout,
"\"%s\" but the fanin does not have it as a fanout.\n",
Abc_ObjName(pFanin) );
451 fprintf( stdout,
"NodeCheck: Object \"%s\" has fanout ",
Abc_ObjName(pObj) );
452 fprintf( stdout,
"\"%s\" but the fanout does not have it as a fanin.\n",
Abc_ObjName(pFanout) );
458 for ( i = 0; i < pObj->
vFanins.nSize; i++ )
459 for ( k = i + 1; k < pObj->
vFanins.nSize; k++ )
462 printf(
"Warning: Node %s has",
Abc_ObjName(pObj) );
471 for ( i = 0; i < pObj->
vFanouts.nSize; i++ )
472 for ( k = i + 1; k < pObj->
vFanouts.nSize; k++ )
475 printf(
"Warning: Node %s has",
Abc_ObjName(pObj) );
497 fprintf( stdout,
"NetworkCheck: Net \"%s\" is not driven.\n",
Abc_ObjName(pNet) );
502 fprintf( stdout,
"NetworkCheck: Net \"%s\" has more than one driver.\n",
Abc_ObjName(pNet) );
524 fprintf( stdout,
"Node (id = %d) has no net to drive.\n", pNode->
Id );
528 if ( pNode->
pData == NULL )
532 fprintf( stdout,
"NodeCheck: An internal node \"%s\" does not have a logic function.\n",
Abc_ObjNameNet(pNode) );
540 fprintf( stdout,
"NodeCheck: SOP check for node \"%s\" has failed.\n",
Abc_ObjNameNet(pNode) );
549 fprintf( stdout,
"NodeCheck: BDD of the node \"%s\" has incorrect support size.\n",
Abc_ObjNameNet(pNode) );
577 fprintf( stdout,
"NodeCheck: Latch \"%s\" is in a latch list but is not a latch.\n",
Abc_ObjName(pLatch) );
583 fprintf( stdout,
"NodeCheck: Latch \"%s\" has incorrect reset value (%d).\n",
590 fprintf( stdout,
"NodeCheck: Latch \"%s\" has wrong number (%d) of fanins.\n",
Abc_ObjName(pLatch),
Abc_ObjFaninNum(pLatch) );
602 fprintf( stdout,
"NodeCheck: Input of latch \"%s\" has wrong number (%d) of fanins.\n",
609 fprintf( stdout,
"NodeCheck: Input of latch \"%s\" has wrong number (%d) of fanouts.\n",
616 fprintf( stdout,
"NodeCheck: Output of latch \"%s\" has wrong number (%d) of fanins.\n",
643 printf(
"Networks have different number of primary inputs.\n" );
651 printf(
"Primary input #%d is different in network 1 ( \"%s\") and in network 2 (\"%s\").\n",
676 printf(
"Networks have different number of primary outputs.\n" );
684 printf(
"Primary output #%d is different in network 1 ( \"%s\") and in network 2 (\"%s\").\n",
713 printf(
"Networks have different number of latches.\n" );
721 printf(
"Box #%d is different in network 1 ( \"%s\") and in network 2 (\"%s\").\n",
787 assert( pNtkNext != NULL );
840 return strcmp( *pName1, *pName2 );
858 int i, fRetValue = 1;
867 printf(
"Abc_NtkCheck: Repeated CI names: %s and %s.\n", (
char*)
Vec_PtrEntry(vNames,i-1), (
char*)
Vec_PtrEntry(vNames,i) );
889 int i, fRetValue = 1;
900 printf(
"Abc_NtkCheck: Repeated CO names: %s and %s.\n", (
char*)
Vec_PtrEntry(vNames,i-1), (
char*)
Vec_PtrEntry(vNames,i) );
922 int i, nCiId, fRetValue = 1;
932 if ( pFanin != pObjCi )
934 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",
static int Abc_NtkIsStrash(Abc_Ntk_t *pNtk)
static int Abc_NtkIsLogic(Abc_Ntk_t *pNtk)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
static int Abc_NtkHasBdd(Abc_Ntk_t *pNtk)
ABC_DLL void * Abc_FrameReadLibGen()
ABC_DLL int Abc_NtkIsAcyclic(Abc_Ntk_t *pNtk)
static int Abc_NtkHasSop(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_SopCheck(char *pSop, int nFanins)
static int Abc_NtkObjNumMax(Abc_Ntk_t *pNtk)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
static int Abc_NtkIsNetlist(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_AigCheck(Abc_Aig_t *pMan)
static int Abc_ObjIsLatch(Abc_Obj_t *pObj)
static int Abc_ObjFanoutNum(Abc_Obj_t *pObj)
static int Abc_NtkBoxNum(Abc_Ntk_t *pNtk)
static Abc_Obj_t * Abc_ObjFanin0Ntk(Abc_Obj_t *pObj)
static int Abc_NtkCheckPos(Abc_Ntk_t *pNtk)
static int Abc_ObjFaninNum(Abc_Obj_t *pObj)
static int Abc_ObjIsBarBuf(Abc_Obj_t *pObj)
static int Abc_NtkHasMapping(Abc_Ntk_t *pNtk)
int Abc_NtkCheckUniqueCioNames(Abc_Ntk_t *pNtk)
static void Vec_PtrSort(Vec_Ptr_t *p, int(*Vec_PtrSortCompare)()) ___unused
static int Abc_NtkLatchNum(Abc_Ntk_t *pNtk)
static int Abc_ObjIsPi(Abc_Obj_t *pObj)
static int Vec_IntFind(Vec_Int_t *p, int Entry)
int Abc_NtkNamesCompare(char **pName1, char **pName2)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
static int Abc_NtkCiNum(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachCo(pNtk, pCo, i)
Vec_Int_t * Nm_ManReturnNameIds(Nm_Man_t *p)
static int Abc_NtkHasBlifMv(Abc_Ntk_t *pNtk)
static Abc_Obj_t * Abc_NtkObj(Abc_Ntk_t *pNtk, int i)
static Abc_Obj_t * Abc_ObjFanin0(Abc_Obj_t *pObj)
static int Abc_NtkCoNum(Abc_Ntk_t *pNtk)
static int Abc_NtkComparePos(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fComb)
static int Abc_NtkComparePis(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fComb)
int Abc_NtkCheckUniqueCiNames(Abc_Ntk_t *pNtk)
static int Abc_ObjIsNode(Abc_Obj_t *pObj)
static int Abc_NtkCompareLatches(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fComb)
int Abc_NtkIsAcyclicHierarchy(Abc_Ntk_t *pNtk)
static int Abc_NtkHasBlackbox(Abc_Ntk_t *pNtk)
static char * Abc_ObjNameNet(Abc_Obj_t *pObj)
int Nm_ManFindIdByNameTwoTypes(Nm_Man_t *p, char *pName, int Type1, int Type2)
int Abc_NtkCheckUniqueCoNames(Abc_Ntk_t *pNtk)
#define ABC_NAMESPACE_IMPL_END
char * Nm_ManFindNameById(Nm_Man_t *p, int ObjId)
int Abc_NtkCheckRead(Abc_Ntk_t *pNtk)
static int Abc_NtkCheckNet(Abc_Ntk_t *pNtk, Abc_Obj_t *pNet)
#define Abc_NtkForEachNet(pNtk, pNet, i)
#define Abc_NtkForEachLatch(pNtk, pObj, i)
static Abc_Obj_t * Abc_ObjFanout0Ntk(Abc_Obj_t *pObj)
#define Abc_NtkForEachBox(pNtk, pObj, i)
static ABC_NAMESPACE_IMPL_START int Abc_NtkCheckNames(Abc_Ntk_t *pNtk)
DECLARATIONS ///.
#define Abc_NtkForEachNode(pNtk, pNode, i)
static Abc_Obj_t * Abc_NtkBox(Abc_Ntk_t *pNtk, int i)
int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
#define ABC_NAMESPACE_IMPL_START
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
static int Abc_NtkCheckPis(Abc_Ntk_t *pNtk)
int Abc_NtkCheckObj(Abc_Ntk_t *pNtk, Abc_Obj_t *pObj)
#define Abc_ObjForEachFanout(pObj, pFanout, i)
static Abc_Obj_t * Abc_NtkPo(Abc_Ntk_t *pNtk, int i)
#define Abc_NtkForEachCi(pNtk, pCi, i)
static int Abc_NtkPoNum(Abc_Ntk_t *pNtk)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
#define Abc_ObjForEachFanin(pObj, pFanin, i)
static int Abc_NtkPiNum(Abc_Ntk_t *pNtk)
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
static int Abc_NtkCheckNode(Abc_Ntk_t *pNtk, Abc_Obj_t *pNode)
ABC_DLL int Abc_FrameIsFlagEnabled(char *pFlag)
static int Abc_NtkHasOnlyLatchBoxes(Abc_Ntk_t *pNtk)
static int Abc_ObjIsPo(Abc_Obj_t *pObj)
ABC_DLL void Abc_NtkCleanCopy(Abc_Ntk_t *pNtk)
int Abc_NtkCompareBoxes(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fComb)
static int Abc_NtkHasAig(Abc_Ntk_t *pNtk)
int Abc_NtkIsAcyclicHierarchy_rec(Abc_Ntk_t *pNtk)
static int Abc_NtkCheckLatch(Abc_Ntk_t *pNtk, Abc_Obj_t *pLatch)
static Abc_Obj_t * Abc_NtkPi(Abc_Ntk_t *pNtk, int i)
int Abc_NtkDoCheck(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachPo(pNtk, pPo, i)
static Abc_Obj_t * Abc_ObjFanout(Abc_Obj_t *pObj, int i)
static Abc_Obj_t * Abc_ObjFanin(Abc_Obj_t *pObj, int i)
static void Vec_IntFree(Vec_Int_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
int Cudd_SupportSize(DdManager *dd, DdNode *f)
int Abc_NtkCompareSignals(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fOnlyPis, int fComb)
ABC_DLL void Abc_NtkOrderObjsByName(Abc_Ntk_t *pNtk, int fComb)
static Abc_Obj_t * Abc_ObjFanout0(Abc_Obj_t *pObj)
#define Abc_NtkForEachPi(pNtk, pPi, i)
static int Abc_NtkNetNum(Abc_Ntk_t *pNtk)
static void Vec_PtrFree(Vec_Ptr_t *p)