50 p->pName = Abc_UtilStrsav( pName );
52 p->vTops = Vec_PtrAlloc( 100 );
53 p->vModules = Vec_PtrAlloc( 100 );
76 if (
p->pManFunc == pMan )
108 if ( pNtk == pNtkSave )
115 Vec_PtrFree(
p->vModules );
118 Vec_PtrFree(
p->vTops );
149 if ( Abc_ObjIsWhitebox(pObj) || Abc_ObjIsBlackbox(pObj) )
150 pObj->
pCopy->
pData = Abc_ObjModel(pObj)->pCopy;
170 assert( Vec_PtrSize(
p->vTops) > 0 );
171 assert( Vec_PtrSize(
p->vModules) > 1 );
174 Vec_PtrPush( pNew->
vTops, pNtkSave );
175 Vec_PtrPush( pNew->
vModules, pNtkSave );
177 if ( Abc_NtkHasBlackbox( pNtkTemp ) )
199 printf(
"Models of design %s:\n",
p->pName );
202 printf(
"%2d : %20s ", i+1, pNtk->
pName );
203 printf(
"nd = %6d lat = %6d whitebox = %3d blackbox = %3d\n",
204 Abc_NtkNodeNum(pNtk), Abc_NtkLatchNum(pNtk),
205 Abc_NtkWhiteboxNum(pNtk), Abc_NtkBlackboxNum(pNtk) );
206 if ( Abc_NtkBlackboxNum(pNtk) == 0 )
209 printf(
" %20s (whitebox)\n", Abc_NtkName((
Abc_Ntk_t *)pObj->
pData) );
211 printf(
" %20s (blackbox)\n", Abc_NtkName((
Abc_Ntk_t *)pObj->
pData) );
232 pNtk->
Id = Vec_PtrSize(
p->vModules);
233 Vec_PtrPush(
p->vModules, pNtk );
254 st__lookup(
p->tModules, (
char *)pName, (
char **)&pNtk );
272 if ( Vec_PtrSize(
p->vModules) > 1 )
274 printf(
"The design includes more than one module and is currently not used.\n" );
277 pNtk = (
Abc_Ntk_t *)Vec_PtrEntry(
p->vModules, 0 ); Vec_PtrClear(
p->vModules );
278 pNtk->
pManFunc =
p->pManFunc;
p->pManFunc = NULL;
298 assert( Vec_PtrSize(
p->vModules ) > 0 );
307 if ( Abc_ObjIsLatch(pObj) )
309 if ( pObj->
pData == NULL )
316 Vec_PtrClear(
p->vTops );
320 Vec_PtrPush(
p->vTops, pNtk );
324 return Vec_PtrSize(
p->vTops );
343 assert( !Abc_ObjIsNet(pObj) );
352 Abc_ObjFanout0(pObj)->pCopy = pObj->
pCopy;
370 unsigned * pPolarity;
372 assert( Abc_ObjIsBox(pBox) );
374 pPolarity = (
unsigned *)pBox->
pNext;
375 assert( Abc_NtkIsNetlist(pNtkGate) );
376 assert( Abc_NtkLatchNum(pNtkGate) == 0 );
381 fCompl = (pPolarity && Abc_InfoHasBit(pPolarity, i));
382 pObj->
pCopy = Abc_ObjNotCond( Abc_ObjFanin(pBox,i)->pCopy, fCompl );
383 Abc_ObjFanout0(pObj)->pCopy = pObj->
pCopy;
389 Abc_ObjFanout(pBox,i)->pCopy = Abc_ObjFanin0(pObj)->pCopy;
int Abc_DesAddModel(Abc_Des_t *p, Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_DesFindModelByName(Abc_Des_t *p, char *pName)
void Abc_NodeStrashUsingNetwork_rec(Abc_Ntk_t *pNtkAig, Abc_Obj_t *pObj)
Abc_Ntk_t * Abc_DesDeriveRoot(Abc_Des_t *p)
void Abc_DesFree(Abc_Des_t *p, Abc_Ntk_t *pNtkSave)
Abc_Des_t * Abc_DesDupBlackboxes(Abc_Des_t *p, Abc_Ntk_t *pNtkSave)
Abc_Des_t * Abc_DesDup(Abc_Des_t *p)
void Abc_DesPrint(Abc_Des_t *p)
ABC_NAMESPACE_IMPL_START Abc_Des_t * Abc_DesCreate(char *pName)
DECLARATIONS ///.
void Abc_NodeStrashUsingNetwork(Abc_Ntk_t *pNtkAig, Abc_Obj_t *pBox)
void Abc_DesCleanManPointer(Abc_Des_t *p, void *pMan)
int Abc_DesFindTopLevelModels(Abc_Des_t *p)
struct Abc_Obj_t_ Abc_Obj_t
ABC_DLL Abc_Obj_t * Abc_NodeStrash(Abc_Ntk_t *pNtkNew, Abc_Obj_t *pNode, int fRecord)
#define Abc_NtkForEachPo(pNtk, pPo, i)
#define Abc_ObjForEachFanin(pObj, pFanin, i)
#define Abc_NtkForEachBlackbox(pNtk, pObj, i)
struct Abc_Ntk_t_ Abc_Ntk_t
struct Abc_Des_t_ Abc_Des_t
BASIC TYPES ///.
#define Abc_NtkForEachWhitebox(pNtk, pObj, i)
#define Abc_NtkForEachPi(pNtk, pPi, i)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
ABC_DLL void Abc_NtkCleanCopy(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachBox(pNtk, pObj, i)
ABC_DLL Abc_Ntk_t * Abc_NtkDup(Abc_Ntk_t *pNtk)
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_HEADER_START struct Hop_Man_t_ Hop_Man_t
INCLUDES ///.
void Hop_ManStop(Hop_Man_t *p)
Hop_Man_t * Hop_ManStart()
DECLARATIONS ///.
int st__strhash(const char *string, int modulus)
int st__lookup(st__table *table, const char *key, char **value)
st__table * st__init_table(st__compare_func_type compare, st__hash_func_type hash)
int st__insert(st__table *table, const char *key, char *value)
void st__free_table(st__table *table)
#define st__is_member(table, key)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.