88 static char Buffer[2000];
106 static char Buffer[2000];
124 static char Buffer[2000];
125 sprintf( Buffer,
"%s%0*d", pPrefix, nDigits, Num );
130 static char Buffer[2000];
131 sprintf( Buffer,
"%c", (fCap ?
'A':
'a') + Num );
150 assert( Abc_NtkPiNum(pNtk) == Abc_NtkPiNum(pNtkNew) );
151 assert( Abc_NtkPoNum(pNtk) == Abc_NtkPoNum(pNtkNew) );
152 assert( Abc_NtkBoxNum(pNtk) == Abc_NtkBoxNum(pNtkNew) );
179 assert( Abc_NtkPiNum(pNtk) == Abc_NtkPiNum(pNtkNew) );
180 assert( Abc_NtkPoNum(pNtk) == Abc_NtkPoNum(pNtkNew) );
185 if ( Abc_ObjFaninNum(pObj) == 0 || !Abc_ObjIsLatch(Abc_ObjFanin0(pObj)) )
188 if ( Abc_ObjFanoutNum(pObj) == 0 || !Abc_ObjIsLatch(Abc_ObjFanout0(pObj)) )
191 if ( !Abc_ObjIsLatch(pObj) )
211 vNodes = Vec_PtrAlloc( 100 );
213 Vec_PtrPush( vNodes, Abc_UtilStrsav(
Abc_ObjName(pFanin)) );
234 vNames = Vec_PtrAlloc( nNames );
235 for ( i = 0; i < nNames; i++ )
244 Buffer[0] =
'a' + i%26;
245 Buffer[1] =
'0' + i/26;
267 if ( vNames == NULL )
269 for ( i = 0; i < vNames->nSize; i++ )
271 Vec_PtrFree( vNames );
292 ppNames =
ABC_ALLOC(
char *, Abc_NtkCoNum(pNtk) );
298 ppNames =
ABC_ALLOC(
char *, Abc_NtkCiNum(pNtk) );
318 int Diff =
strcmp( (
char *)(*pp1)->pCopy, (
char *)(*pp2)->pCopy );
323 Diff = (*pp1)->Id - (*pp2)->Id;
334 assert( Abc_NtkHasOnlyLatchBoxes(pNtk) );
343 qsort( (
void *)Vec_PtrArray(pNtk->
vPis), (
size_t)Vec_PtrSize(pNtk->
vPis),
sizeof(
Abc_Obj_t *),
345 qsort( (
void *)Vec_PtrArray(pNtk->
vPos), (
size_t)Vec_PtrSize(pNtk->
vPos),
sizeof(
Abc_Obj_t *),
408 int Diff = (*pp1)->iTemp - (*pp2)->iTemp;
420 assert( Abc_NtkPiNum(pNtkOld) == Abc_NtkPiNum(pNtkNew) );
421 assert( Abc_NtkPoNum(pNtkOld) == Abc_NtkPoNum(pNtkNew) );
422 assert( Abc_NtkLatchNum(pNtkOld) == Abc_NtkLatchNum(pNtkNew) );
437 qsort( (
void *)Vec_PtrArray(pNtkNew->
vPis), (
size_t)Vec_PtrSize(pNtkNew->
vPis),
sizeof(
Abc_Obj_t *),
439 qsort( (
void *)Vec_PtrArray(pNtkNew->
vPos), (
size_t)Vec_PtrSize(pNtkNew->
vPos),
sizeof(
Abc_Obj_t *),
442 qsort( (
void *)Vec_PtrArray(pNtkNew->
vCis), (
size_t)Vec_PtrSize(pNtkNew->
vCis),
sizeof(
Abc_Obj_t *),
444 qsort( (
void *)Vec_PtrArray(pNtkNew->
vCos), (
size_t)Vec_PtrSize(pNtkNew->
vCos),
sizeof(
Abc_Obj_t *),
469 if ( Abc_NtkPiNum(pNtkOld) != Abc_NtkPiNum(pNtkNew) )
471 if ( Abc_NtkPoNum(pNtkOld) != Abc_NtkPoNum(pNtkNew) )
473 if ( Abc_NtkLatchNum(pNtkOld) != Abc_NtkLatchNum(pNtkNew) )
475 for ( i = 0; i < Abc_NtkCiNum(pNtkOld); i++ )
478 for ( i = 0; i < Abc_NtkCoNum(pNtkOld); i++ )
499 nDigits = Abc_Base10Log( Abc_NtkPiNum(pNtk) );
525 nDigits = Abc_Base10Log( Abc_NtkPoNum(pNtk) );
549 char * pName, PrefLi[100], PrefLo[100];
551 int nDigits, i, k, CountCur, CountMax = 0;
558 for ( k = 0; pName[k]; k++ )
559 if ( pName[k] ==
'l' )
563 CountMax = Abc_MaxInt( CountMax, CountCur );
569 for ( k = 0; pName[k]; k++ )
570 if ( pName[k] ==
'l' )
574 CountMax = Abc_MaxInt( CountMax, CountCur );
577 assert( CountMax < 100-2 );
578 for ( i = 0; i <= CountMax; i++ )
579 PrefLi[i] = PrefLo[i] =
'l';
585 assert( !Abc_NtkIsNetlist(pNtk) );
586 nDigits = Abc_Base10Log( Abc_NtkLatchNum(pNtk) );
638 Nm_Man_t * pManName =
Nm_ManCreate( Abc_NtkCiNum(pNtk) + Abc_NtkCoNum(pNtk) + Abc_NtkBoxNum(pNtk) );
668 pObjCi = Abc_NtkObj( pNtk, nCiId );
670 pFanin = Abc_ObjFanin0(pObj);
671 if ( pFanin == pObjCi )
675 if ( Abc_ObjFanoutNum(pFanin) == 0 )
680 printf(
"Redirected %d POs from buffers to PIs with the same name.\n", Count );
713 char pFileName[1000];
722 pFile = fopen( pFileName,
"wb" );
723 p->vNameIds = Vec_IntStart( Abc_NtkObjNumMax(
p) );
726 fprintf( pFile,
"%s \n",
Abc_ObjName(Abc_ObjFanout0(pObj)) ), Vec_IntWriteEntry(
p->vNameIds, Abc_ObjId(pObj), 2*Counter++);
730 pFanin = Abc_ObjFanin0(Abc_ObjFanin0(pObj));
731 if ( !Vec_IntEntry(
p->vNameIds, Abc_ObjId(pFanin)) )
732 fprintf( pFile,
"%s \n",
Abc_ObjName(Abc_ObjFanout0(pFanin)) ), Vec_IntWriteEntry(
p->vNameIds, Abc_ObjId(pFanin), 2*Counter++);
737 if ( !Vec_IntEntry(
p->vNameIds, Abc_ObjId(pObj)) )
738 fprintf( pFile,
"%s \n",
Abc_ObjName(Abc_ObjFanout0(pObj)) ), Vec_IntWriteEntry(
p->vNameIds, Abc_ObjId(pObj), 2*Counter++);
739 Vec_PtrFree( vNodes );
744 pFanin = Abc_ObjFanin0(Abc_ObjFanin0(pObj));
745 Vec_IntWriteEntry(
p->vNameIds, Abc_ObjId(pObj), Vec_IntEntry(
p->vNameIds, Abc_ObjId(pFanin)) );
746 Vec_IntWriteEntry(
p->vNameIds, Abc_ObjId(pFanin), 0 );
767 pNew->
vNameIds = Vec_IntStart( Abc_NtkObjNumMax(pNew) );
772 if ( pObj->
pCopy && i < Vec_IntSize(
p->vNameIds) && Vec_IntEntry(
p->vNameIds, i) )
774 pObjNew = Abc_ObjRegular(pObj->
pCopy);
775 assert( Abc_ObjNtk(pObjNew) == pNew );
776 if ( Abc_ObjIsCi(pObjNew) && !Abc_ObjIsCi(pObj) )
778 Vec_IntWriteEntry( pNew->
vNameIds, Abc_ObjId(pObjNew), Vec_IntEntry(
p->vNameIds, i) ^ Abc_ObjIsComplement(pObj->
pCopy) );
795 char pFileName[1000];
799 int i, c, iVar, fCompl, fSeenSpace, Counter = 0;
800 assert( !Abc_NtkIsNetlist(
p) );
804 pFile = fopen( pFileName,
"r+" );
807 vStarts = Vec_IntAlloc( 1000 );
808 Vec_IntPush( vStarts, -1 );
809 while ( (c = fgetc(pFile)) != EOF && ++Counter )
810 if ( c ==
' ' && !fSeenSpace )
811 Vec_IntPush(vStarts, Counter), fSeenSpace = 1;
812 else if ( c ==
'\n' )
817 if ( i == 0 || i >= Vec_IntSize(
p->vNameIds) || !Vec_IntEntry(
p->vNameIds, i) )
819 iVar = Abc_Lit2Var( Vec_IntEntry(
p->vNameIds, i) );
820 fCompl = Abc_LitIsCompl( Vec_IntEntry(
p->vNameIds, i) );
821 assert( iVar < Vec_IntSize(vStarts) );
822 fseek( pFile, Vec_IntEntry(vStarts, iVar),
SEEK_SET );
823 fprintf( pFile,
"%s%d", fCompl?
"-":
"", i );
825 printf(
"Saved %d names into file \"%s\".\n", Vec_IntSize(vStarts)-1, pFileName );
827 Vec_IntFree( vStarts );
828 Vec_IntFreeP( &
p->vNameIds );
Abc_Nam_t * Abc_NtkNameMan(Abc_Ntk_t *p, int fOuts)
char * Abc_ObjNameDummy(char *pPrefix, int Num, int nDigits)
char ** Abc_NtkCollectCioNames(Abc_Ntk_t *pNtk, int fCollectCos)
void Abc_NtkTransferNameIds(Abc_Ntk_t *p, Abc_Ntk_t *pNew)
void Abc_NtkTrasferNamesNoLatches(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkNew)
int Abc_NodeCompareNames(Abc_Obj_t **pp1, Abc_Obj_t **pp2)
void Abc_NtkAddDummyPoNames(Abc_Ntk_t *pNtk)
void Abc_NtkAddCharPiNames(Abc_Ntk_t *pNtk)
void Abc_NtkAddCharPoNames(Abc_Ntk_t *pNtk)
Vec_Ptr_t * Abc_NodeGetFaninNames(Abc_Obj_t *pNode)
char * Abc_ObjAssignName(Abc_Obj_t *pObj, char *pName, char *pSuffix)
void Abc_NtkOrderObjsByName(Abc_Ntk_t *pNtk, int fComb)
void Abc_NtkAddDummyPiNames(Abc_Ntk_t *pNtk)
void Abc_NtkMoveNames(Abc_Ntk_t *pNtk, Abc_Ntk_t *pOld)
void Abc_NtkCharNames(Abc_Ntk_t *pNtk)
char * Abc_ObjNameSuffix(Abc_Obj_t *pObj, char *pSuffix)
int Abc_NodeCompareCiCo(Abc_Ntk_t *pNtkOld, Abc_Ntk_t *pNtkNew)
int Abc_NodeCompareIndexes(Abc_Obj_t **pp1, Abc_Obj_t **pp2)
void Abc_NtkRedirectCiCo(Abc_Ntk_t *pNtk)
ABC_NAMESPACE_IMPL_START char * Abc_ObjName(Abc_Obj_t *pObj)
DECLARATIONS ///.
void Abc_NtkUpdateNameIds(Abc_Ntk_t *p)
void Abc_NodeFreeNames(Vec_Ptr_t *vNames)
char * Abc_ObjNameChar(int Num, int fCap)
void Abc_NtkAddDummyBoxNames(Abc_Ntk_t *pNtk)
void Abc_NtkCleanNames(Abc_Ntk_t *pNtk)
char * Abc_ObjNamePrefix(Abc_Obj_t *pObj, char *pPrefix)
void Abc_NtkTrasferNames(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkNew)
void Abc_NtkTransferOrder(Abc_Ntk_t *pNtkOld, Abc_Ntk_t *pNtkNew)
Vec_Ptr_t * Abc_NodeGetFakeNames(int nNames)
void Abc_NtkStartNameIds(Abc_Ntk_t *p)
void Abc_NtkShortNames(Abc_Ntk_t *pNtk)
struct Abc_Obj_t_ Abc_Obj_t
#define Abc_NtkForEachCo(pNtk, pCo, i)
ABC_DLL void Abc_NtkDeleteObj(Abc_Obj_t *pObj)
ABC_DLL int Abc_NodeIsBuf(Abc_Obj_t *pNode)
#define Abc_NtkForEachPo(pNtk, pPo, i)
#define Abc_NtkForEachLatch(pNtk, pObj, i)
ABC_DLL Vec_Ptr_t * Abc_NtkDfs(Abc_Ntk_t *pNtk, int fCollectAll)
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
#define Abc_ObjForEachFanin(pObj, pFanin, i)
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
struct Abc_Ntk_t_ Abc_Ntk_t
#define Abc_NtkForEachPi(pNtk, pPi, i)
ABC_DLL int Abc_NodeCompareNames(Abc_Obj_t **pp1, Abc_Obj_t **pp2)
#define Abc_NtkForEachCi(pNtk, pCi, i)
ABC_DLL void Abc_ObjPatchFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFaninOld, Abc_Obj_t *pFaninNew)
#define Abc_NtkForEachBox(pNtk, pObj, i)
ABC_DLL void Abc_NtkOrderCisCos(Abc_Ntk_t *pNtk)
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
int Nm_ManNumEntries(Nm_Man_t *p)
void Nm_ManFree(Nm_Man_t *p)
int Nm_ManFindIdByNameTwoTypes(Nm_Man_t *p, char *pName, int Type1, int Type2)
char * Nm_ManCreateUniqueName(Nm_Man_t *p, int ObjId)
Nm_Man_t * Nm_ManCreate(int nSize)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Nm_Man_t_ Nm_Man_t
INCLUDES ///.
char * Nm_ManStoreIdName(Nm_Man_t *p, int ObjId, int Type, char *pName, char *pSuffix)
int Abc_NamStrFind(Abc_Nam_t *p, char *pStr)
int Abc_NamStrFindOrAdd(Abc_Nam_t *p, char *pStr, int *pfFound)
int Abc_NamObjNumMax(Abc_Nam_t *p)
Abc_Nam_t * Abc_NamStart(int nObjs, int nAveSize)
FUNCTION DEFINITIONS ///.
void Abc_NamDeref(Abc_Nam_t *p)
typedefABC_NAMESPACE_HEADER_START struct Abc_Nam_t_ Abc_Nam_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.