115 Vec_PtrPush( pNtk->
vObjs, pObj );
129 Vec_PtrPush( pNtk->
vPis, pObj );
130 Vec_PtrPush( pNtk->
vCis, pObj );
134 Vec_PtrPush( pNtk->
vPos, pObj );
135 Vec_PtrPush( pNtk->
vCos, pObj );
138 if ( pNtk->
vCos ) Vec_PtrPush( pNtk->
vCos, pObj );
141 if ( pNtk->
vCis ) Vec_PtrPush( pNtk->
vCis, pObj );
175 assert( !Abc_ObjIsComplement(pObj) );
180 vNodes = Vec_PtrAlloc( 100 );
182 for ( i = 0; i < vNodes->nSize; i++ )
185 for ( i = 0; i < vNodes->nSize; i++ )
187 Vec_PtrFree( vNodes );
189 Vec_PtrWriteEntry( pNtk->
vObjs, pObj->
Id, NULL );
190 pObj->
Id = (1<<26)-1;
203 Vec_PtrRemove( pNtk->
vPis, pObj );
204 Vec_PtrRemove( pNtk->
vCis, pObj );
207 Vec_PtrRemove( pNtk->
vPos, pObj );
208 Vec_PtrRemove( pNtk->
vCos, pObj );
211 if ( pNtk->
vCos ) Vec_PtrRemove( pNtk->
vCos, pObj );
214 if ( pNtk->
vCis ) Vec_PtrRemove( pNtk->
vCis, pObj );
220 if ( Abc_NtkHasBdd(pNtk) )
221 Cudd_RecursiveDeref( (DdManager *)pNtk->
pManFunc, (DdNode *)pObj->
pData );
228 if ( pNtk->
vBoxes ) Vec_PtrRemove( pNtk->
vBoxes, pObj );
251 assert( Abc_ObjIsPo(pObj) );
258 Vec_PtrWriteEntry( pObj->
pNtk->
vObjs, pObj->
Id, NULL );
259 pObj->
Id = (1<<26)-1;
282 assert( !Abc_ObjIsComplement(pObj) );
283 assert( !Abc_ObjIsPi(pObj) );
284 assert( Abc_ObjFanoutNum(pObj) == 0 );
286 vNodes = Vec_PtrAlloc( 100 );
292 if ( Abc_ObjIsNode(pObj) && Abc_ObjFanoutNum(pObj) == 0 )
298 if ( !Abc_ObjIsPi(pObj) && Abc_ObjFanoutNum(pObj) == 0 )
301 Vec_PtrFree( vNodes );
319 assert( !Abc_ObjIsComplement(pObj) );
320 assert( Abc_ObjFanoutNum(pObj) == 0 );
322 vNodes = Vec_PtrAlloc( 100 );
326 if ( !Abc_ObjIsNode(pObj) && Abc_ObjFanoutNum(pObj) == 0 )
328 Vec_PtrFree( vNodes );
350 if ( Abc_ObjIsCi(pObj) )
352 if ( !Abc_NtkIsNetlist(pNtkNew) )
355 else if ( Abc_ObjIsCo(pObj) )
357 if ( !Abc_NtkIsNetlist(pNtkNew) )
359 if ( Abc_ObjIsPo(pObj) )
363 assert( Abc_ObjIsLatch(Abc_ObjFanout0(pObj)) );
368 else if ( Abc_ObjIsBox(pObj) || Abc_ObjIsNet(pObj) )
372 if ( Abc_ObjIsNode(pObj) )
376 if ( Abc_NtkIsStrash(pNtkNew) )
378 else if ( Abc_NtkHasSop(pNtkNew) || Abc_NtkHasBlifMv(pNtkNew) )
381 else if ( Abc_NtkHasBdd(pNtkNew) )
384 else if ( Abc_NtkHasAig(pNtkNew) )
386 else if ( Abc_NtkHasMapping(pNtkNew) )
391 else if ( Abc_ObjIsNet(pObj) )
394 else if ( Abc_ObjIsLatch(pObj) )
400 pObj->
pCopy = pObjNew;
419 assert( Abc_ObjIsBox(pBox) );
471 return Abc_ObjFanin0( Abc_NtkObj( pNtk, Num ) );
474 return Abc_ObjFanin0( Abc_NtkObj( pNtk, Num ) );
477 return Abc_NtkObj( pNtk, Num );
479 if ( pName[0] !=
'n' )
481 printf(
"Name \"%s\" is not found among CO or node names (internal names often look as \"n<num>\").\n", pName );
484 Num = atoi( pName + 1 );
485 if ( Num < 0 || Num >= Abc_NtkObjNumMax(pNtk) )
487 printf(
"The node \"%s\" with ID %d is not in the current network.\n", pName, Num );
490 pObj = Abc_NtkObj( pNtk, Num );
493 printf(
"The node \"%s\" with ID %d has been removed from the current network.\n", pName, Num );
496 if ( !Abc_ObjIsNode(pObj) )
498 printf(
"Object with ID %d is not a node.\n", Num );
519 assert( Abc_NtkIsNetlist(pNtk) );
523 pNet = Abc_NtkObj( pNtk, ObjId );
541 assert( !Abc_NtkIsNetlist(pNtk) );
544 return Abc_NtkObj( pNtk, Num );
547 return Abc_NtkObj( pNtk, Num );
565 assert( !Abc_NtkIsNetlist(pNtk) );
568 return Abc_NtkObj( pNtk, Num );
571 return Abc_NtkObj( pNtk, Num );
590 assert( Abc_NtkIsNetlist(pNtk) );
595 pNet = Abc_NtkCreateNet( pNtk );
615 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsNetlist(pNtk) );
616 pNode = Abc_NtkCreateNode( pNtk );
617 if ( Abc_NtkHasSop(pNtk) || Abc_NtkHasBlifMv(pNtk) )
620 else if ( Abc_NtkHasBdd(pNtk) )
621 pNode->
pData = Cudd_ReadLogicZero((DdManager *)pNtk->
pManFunc), Cudd_Ref( (DdNode *)pNode->
pData );
623 else if ( Abc_NtkHasAig(pNtk) )
625 else if ( Abc_NtkHasMapping(pNtk) )
627 else if ( !Abc_NtkHasBlackbox(pNtk) )
646 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsNetlist(pNtk) );
647 pNode = Abc_NtkCreateNode( pNtk );
648 if ( Abc_NtkHasSop(pNtk) || Abc_NtkHasBlifMv(pNtk) )
651 else if ( Abc_NtkHasBdd(pNtk) )
652 pNode->
pData = Cudd_ReadOne((DdManager *)pNtk->
pManFunc), Cudd_Ref( (DdNode *)pNode->
pData );
654 else if ( Abc_NtkHasAig(pNtk) )
656 else if ( Abc_NtkHasMapping(pNtk) )
658 else if ( !Abc_NtkHasBlackbox(pNtk) )
677 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsNetlist(pNtk) );
678 pNode = Abc_NtkCreateNode( pNtk );
680 if ( Abc_NtkHasSop(pNtk) )
683 else if ( Abc_NtkHasBdd(pNtk) )
684 pNode->
pData = Cudd_Not(Cudd_bddIthVar((DdManager *)pNtk->
pManFunc,0)), Cudd_Ref( (DdNode *)pNode->
pData );
686 else if ( Abc_NtkHasAig(pNtk) )
688 else if ( Abc_NtkHasMapping(pNtk) )
709 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsNetlist(pNtk) );
710 pNode = Abc_NtkCreateNode( pNtk );
712 if ( Abc_NtkHasSop(pNtk) )
715 else if ( Abc_NtkHasBdd(pNtk) )
716 pNode->
pData = Cudd_bddIthVar((DdManager *)pNtk->
pManFunc,0), Cudd_Ref( (DdNode *)pNode->
pData );
718 else if ( Abc_NtkHasAig(pNtk) )
720 else if ( Abc_NtkHasMapping(pNtk) )
742 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsNetlist(pNtk) );
743 pNode = Abc_NtkCreateNode( pNtk );
744 for ( i = 0; i < vFanins->nSize; i++ )
746 if ( Abc_NtkHasSop(pNtk) )
749 else if ( Abc_NtkHasBdd(pNtk) )
752 else if ( Abc_NtkHasAig(pNtk) )
774 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsNetlist(pNtk) );
775 pNode = Abc_NtkCreateNode( pNtk );
776 for ( i = 0; i < vFanins->nSize; i++ )
778 if ( Abc_NtkHasSop(pNtk) )
781 else if ( Abc_NtkHasBdd(pNtk) )
784 else if ( Abc_NtkHasAig(pNtk) )
806 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsNetlist(pNtk) );
807 pNode = Abc_NtkCreateNode( pNtk );
808 for ( i = 0; i < vFanins->nSize; i++ )
810 if ( Abc_NtkHasSop(pNtk) )
813 else if ( Abc_NtkHasBdd(pNtk) )
816 else if ( Abc_NtkHasAig(pNtk) )
837 assert( Abc_NtkIsLogic(pNtk) );
838 pNode = Abc_NtkCreateNode( pNtk );
842 if ( Abc_NtkHasSop(pNtk) )
845 else if ( Abc_NtkHasBdd(pNtk) )
846 pNode->
pData = Cudd_bddIte((DdManager *)pNtk->
pManFunc,Cudd_bddIthVar((DdManager *)pNtk->
pManFunc,0),Cudd_bddIthVar((DdManager *)pNtk->
pManFunc,1),Cudd_bddIthVar((DdManager *)pNtk->
pManFunc,2)), Cudd_Ref( (DdNode *)pNode->
pData );
848 else if ( Abc_NtkHasAig(pNtk) )
869 assert( Abc_NtkIsLogic(pNode->
pNtk) || Abc_NtkIsNetlist(pNode->
pNtk) );
870 return Abc_ObjIsNode(pNode) && Abc_ObjFaninNum(pNode) == 0;
887 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsNetlist(pNtk) );
888 assert( Abc_ObjIsNode(pNode) );
891 if ( Abc_NtkHasSop(pNtk) )
894 if ( Abc_NtkHasBdd(pNtk) )
895 return Cudd_IsComplement(pNode->
pData);
897 if ( Abc_NtkHasAig(pNtk) )
899 if ( Abc_NtkHasMapping(pNtk) )
919 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsNetlist(pNtk) );
920 assert( Abc_ObjIsNode(pNode) );
923 if ( Abc_NtkHasSop(pNtk) )
926 if ( Abc_NtkHasBdd(pNtk) )
927 return !Cudd_IsComplement(pNode->
pData);
929 if ( Abc_NtkHasAig(pNtk) )
931 if ( Abc_NtkHasMapping(pNtk) )
951 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsNetlist(pNtk) );
952 assert( Abc_ObjIsNode(pNode) );
953 if ( Abc_ObjFaninNum(pNode) != 1 )
955 if ( Abc_NtkHasSop(pNtk) )
958 if ( Abc_NtkHasBdd(pNtk) )
959 return !Cudd_IsComplement(pNode->
pData);
961 if ( Abc_NtkHasAig(pNtk) )
963 if ( Abc_NtkHasMapping(pNtk) )
983 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsNetlist(pNtk) );
984 assert( Abc_ObjIsNode(pNode) );
985 if ( Abc_ObjFaninNum(pNode) != 1 )
987 if ( Abc_NtkHasSop(pNtk) )
990 if ( Abc_NtkHasBdd(pNtk) )
991 return Cudd_IsComplement(pNode->
pData);
993 if ( Abc_NtkHasAig(pNtk) )
995 if ( Abc_NtkHasMapping(pNtk) )
1014 assert( Abc_NtkIsLogic(pNode->
pNtk) || Abc_NtkIsNetlist(pNode->
pNtk) );
1015 assert( Abc_ObjIsNode(pNode) );
1016 if ( Abc_NtkHasSop(pNode->
pNtk) )
1018 else if ( Abc_NtkHasAig(pNode->
pNtk) )
1021 else if ( Abc_NtkHasBdd(pNode->
pNtk) )
1042 if ( (iFanin = Vec_IntFind( &pNode->
vFanins, pFanin->
Id )) == -1 )
1044 printf(
"Node %s should be among",
Abc_ObjName(pFanin) );
1045 printf(
" the fanins of node %s...\n",
Abc_ObjName(pNode) );
1048 if ( Abc_NtkHasSop(pNode->
pNtk) )
1050 else if ( Abc_NtkHasAig(pNode->
pNtk) )
1053 else if ( Abc_NtkHasBdd(pNode->
pNtk) )
1056 DdNode * bVar, * bCof0, * bCof1;
1057 bVar = Cudd_bddIthVar( dd, iFanin );
1058 bCof0 = Cudd_Cofactor( dd, (DdNode *)pNode->
pData, Cudd_Not(bVar) ); Cudd_Ref( bCof0 );
1059 bCof1 = Cudd_Cofactor( dd, (DdNode *)pNode->
pData, bVar ); Cudd_Ref( bCof1 );
1060 Cudd_RecursiveDeref( dd, (DdNode *)pNode->
pData );
1061 pNode->
pData = Cudd_bddIte( dd, bVar, bCof0, bCof1 ); Cudd_Ref( (DdNode *)pNode->
pData );
1062 Cudd_RecursiveDeref( dd, bCof0 );
1063 Cudd_RecursiveDeref( dd, bCof1 );
Abc_Obj_t * Abc_NtkFindCi(Abc_Ntk_t *pNtk, char *pName)
int Abc_NodeIsConst1(Abc_Obj_t *pNode)
Abc_Obj_t * Abc_NtkCreateNodeAnd(Abc_Ntk_t *pNtk, Vec_Ptr_t *vFanins)
Abc_Obj_t * Abc_NtkFindNode(Abc_Ntk_t *pNtk, char *pName)
Abc_Obj_t * Abc_NtkFindOrCreateNet(Abc_Ntk_t *pNtk, char *pName)
Abc_Obj_t * Abc_NtkCreateNodeMux(Abc_Ntk_t *pNtk, Abc_Obj_t *pNodeC, Abc_Obj_t *pNode1, Abc_Obj_t *pNode0)
Abc_Obj_t * Abc_NtkCreateNodeExor(Abc_Ntk_t *pNtk, Vec_Ptr_t *vFanins)
Abc_Obj_t * Abc_NtkCreateObj(Abc_Ntk_t *pNtk, Abc_ObjType_t Type)
Abc_Obj_t * Abc_NtkFindNet(Abc_Ntk_t *pNtk, char *pName)
Abc_Obj_t * Abc_NtkDupBox(Abc_Ntk_t *pNtkNew, Abc_Obj_t *pBox, int fCopyName)
int Abc_NodeIsBuf(Abc_Obj_t *pNode)
int Abc_NodeIsConst0(Abc_Obj_t *pNode)
void Abc_NtkDeleteAll_rec(Abc_Obj_t *pObj)
Abc_Obj_t * Abc_NtkCreateNodeConst0(Abc_Ntk_t *pNtk)
Abc_Obj_t * Abc_NtkCreateNodeOr(Abc_Ntk_t *pNtk, Vec_Ptr_t *vFanins)
int Abc_NodeIsInv(Abc_Obj_t *pNode)
void Abc_NtkDeleteObjPo(Abc_Obj_t *pObj)
void Abc_ObjRecycle(Abc_Obj_t *pObj)
Abc_Obj_t * Abc_NtkCreateNodeBuf(Abc_Ntk_t *pNtk, Abc_Obj_t *pFanin)
void Abc_NodeComplementInput(Abc_Obj_t *pNode, Abc_Obj_t *pFanin)
void Abc_NtkDeleteObj(Abc_Obj_t *pObj)
ABC_NAMESPACE_IMPL_START Abc_Obj_t * Abc_ObjAlloc(Abc_Ntk_t *pNtk, Abc_ObjType_t Type)
DECLARATIONS ///.
Abc_Obj_t * Abc_NtkCloneObj(Abc_Obj_t *pObj)
void Abc_NodeComplement(Abc_Obj_t *pNode)
Abc_Obj_t * Abc_NtkDupObj(Abc_Ntk_t *pNtkNew, Abc_Obj_t *pObj, int fCopyName)
int Abc_NodeIsConst(Abc_Obj_t *pNode)
Abc_Obj_t * Abc_NtkFindCo(Abc_Ntk_t *pNtk, char *pName)
Abc_Obj_t * Abc_NtkCreateNodeInv(Abc_Ntk_t *pNtk, Abc_Obj_t *pFanin)
Abc_Obj_t * Abc_NtkCreateNodeConst1(Abc_Ntk_t *pNtk)
void Abc_NtkDeleteObj_rec(Abc_Obj_t *pObj, int fOnlyNodes)
struct Abc_Obj_t_ Abc_Obj_t
ABC_DLL char * Abc_SopCreateXorSpecial(Mem_Flex_t *pMan, int nVars)
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
ABC_DLL int Abc_SopIsConst0(char *pSop)
#define Abc_ObjForEachFanin(pObj, pFanin, i)
#define Abc_ObjForEachFanout(pObj, pFanout, i)
ABC_DLL char * Abc_SopCreateOr(Mem_Flex_t *pMan, int nVars, int *pfCompl)
ABC_DLL void Abc_SopComplement(char *pSop)
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
ABC_DLL void Abc_NodeCollectFanouts(Abc_Obj_t *pNode, Vec_Ptr_t *vNodes)
struct Abc_Ntk_t_ Abc_Ntk_t
ABC_DLL char * Abc_ObjAssignName(Abc_Obj_t *pObj, char *pName, char *pSuffix)
ABC_DLL char * Abc_SopCreateAnd(Mem_Flex_t *pMan, int nVars, int *pfCompl)
ABC_DLL void Abc_ObjDeleteFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
ABC_DLL void Abc_SopComplementVar(char *pSop, int iVar)
ABC_DLL void Abc_NodeCollectFanins(Abc_Obj_t *pNode, Vec_Ptr_t *vNodes)
ABC_DLL int Abc_SopIsInv(char *pSop)
ABC_DLL int Abc_SopIsBuf(char *pSop)
ABC_DLL int Abc_SopIsConst1(char *pSop)
ABC_DLL char * Abc_SopRegister(Mem_Flex_t *pMan, const char *pName)
DECLARATIONS ///.
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_DLL void * Abc_FrameReadLibGen()
Hop_Obj_t * Hop_Transfer(Hop_Man_t *pSour, Hop_Man_t *pDest, Hop_Obj_t *pObj, int nVars)
Hop_Obj_t * Hop_CreateOr(Hop_Man_t *p, int nVars)
typedefABC_NAMESPACE_HEADER_START struct Hop_Man_t_ Hop_Man_t
INCLUDES ///.
Hop_Obj_t * Hop_Complement(Hop_Man_t *p, Hop_Obj_t *pRoot, int iVar)
Hop_Obj_t * Hop_CreateAnd(Hop_Man_t *p, int nVars)
Hop_Obj_t * Hop_IthVar(Hop_Man_t *p, int i)
FUNCTION DEFINITIONS ///.
Hop_Obj_t * Hop_CreateExor(Hop_Man_t *p, int nVars)
Hop_Obj_t * Hop_Mux(Hop_Man_t *p, Hop_Obj_t *pC, Hop_Obj_t *p1, Hop_Obj_t *p0)
struct Hop_Obj_t_ Hop_Obj_t
char * Mem_FixedEntryFetch(Mem_Fixed_t *p)
void Mem_FixedEntryRecycle(Mem_Fixed_t *p, char *pEntry)
Mio_Gate_t * Mio_LibraryReadConst0(Mio_Library_t *pLib)
struct Mio_LibraryStruct_t_ Mio_Library_t
Mio_Gate_t * Mio_LibraryReadConst1(Mio_Library_t *pLib)
Mio_Gate_t * Mio_LibraryReadInv(Mio_Library_t *pLib)
Mio_Gate_t * Mio_LibraryReadBuf(Mio_Library_t *pLib)
struct Mem_Flex_t_ Mem_Flex_t
char * Nm_ManFindNameById(Nm_Man_t *p, int ObjId)
void Nm_ManDeleteIdName(Nm_Man_t *p, int ObjId)
int Nm_ManFindIdByName(Nm_Man_t *p, char *pName, int Type)
char * Nm_ManStoreIdName(Nm_Man_t *p, int ObjId, int Type, char *pName, char *pSuffix)
int nObjCounts[ABC_OBJ_NUMBER]
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.