32static void Abc_NtkAddPoBuffers(
Abc_Ntk_t * pNtk );
58 if ( Abc_NtkIsStrash(pNtk) )
59 return Abc_NtkAigToLogicSop( pNtk );
60 assert( Abc_NtkIsNetlist(pNtk) );
63 assert( Abc_NtkWhiteboxNum(pNtk) == 0 );
64 assert( Abc_NtkBlackboxNum(pNtk) == 0 );
85 fprintf( stdout,
"Abc_NtkToLogic(): Network check has failed.\n" );
103 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsStrash(pNtk) );
104 if ( Abc_NtkIsStrash(pNtk) )
106 pNtkTemp = Abc_NtkAigToLogicSop(pNtk);
107 pNtkNew = Abc_NtkLogicToNetlist( pNtkTemp );
111 return Abc_NtkLogicToNetlist( pNtk );
128 assert( Abc_NtkIsStrash(pNtk) );
129 pNtkTemp = Abc_NtkAigToLogicSopBench( pNtk );
130 pNtkNew = Abc_NtkLogicToNetlist( pNtkTemp );
153 Abc_Obj_t * pObj, * pNet, * pDriver, * pFanin;
156 assert( Abc_NtkIsLogic(pNtk) );
170 printf(
"Abc_NtkLogicToNetlist() warning: The network is converted to have simple COs.\n" );
189 pDriver = Abc_ObjFanin0(pObj);
190 if ( Abc_ObjIsCi(pDriver) )
196 assert( Abc_ObjIsNode(pDriver) );
237 fprintf( stdout,
"Abc_NtkLogicToNetlist(): Network check has failed.\n" );
259 int i, k, fChoices = 0;
260 assert( Abc_NtkIsStrash(pNtk) );
265 if ( Abc_ObjFanoutNum(pObj) > 0 )
276 if ( !Abc_AigNodeIsChoice(pObj) )
279 pNodeNew = Abc_NtkCreateNode(pNtkNew);
281 vInts = Vec_IntAlloc( 10 );
282 for ( pFanin = pObj; pFanin; pFanin = (
Abc_Obj_t *)pFanin->
pData )
284 Vec_IntPush( vInts, (
int)(pObj->
fPhase != pFanin->
fPhase) );
291 Vec_IntFree( vInts );
305 pFanin = Abc_ObjFanin0(pObj);
307 pNodeNew = Abc_ObjNotCond(pFanin->
pCopy->
pCopy, Abc_ObjFaninC0(pObj));
309 pNodeNew = Abc_ObjNotCond(pFanin->
pCopy, Abc_ObjFaninC0(pObj));
321 if ( Abc_NtkIsStrash(pNtk->
pExdc) )
322 pNtkNew->
pExdc = Abc_NtkAigToLogicSop( pNtk->
pExdc );
327 fprintf( stdout,
"Abc_NtkAigToLogicSop(): Network check has failed.\n" );
348 assert( Abc_NtkIsStrash(pNtk) );
350 printf(
"Warning: Choice nodes are skipped.\n" );
357 if ( Abc_ObjFanoutNum(pObj) > 0 )
377 if ( Abc_ObjFaninC( pObj, k ) )
382 Vec_PtrFree( vNodes );
386 pFanin = Abc_ObjFanin0(pObj);
387 if ( Abc_ObjFaninC0( pObj ) )
396 printf(
"Warning: The EXDc network is skipped.\n" );
398 fprintf( stdout,
"Abc_NtkAigToLogicSopBench(): Network check has failed.\n" );
419 assert( Abc_NtkIsStrash(pNtk) );
421 printf(
"Warning: Choice nodes are skipped.\n" );
425 if ( Abc_ObjIsNode(pFanin) )
426 Abc_ObjXorFaninC( pObj, k );
433 if ( Abc_ObjFanoutNum(pObj) > 0 )
453 if ( Abc_ObjFaninC( pObj, k ) )
458 Vec_PtrFree( vNodes );
462 pFanin = Abc_ObjFanin0(pObj);
463 if ( Abc_ObjFaninC0( pObj ) )
473 if ( Abc_ObjIsNode(pFanin) )
474 Abc_ObjXorFaninC( pObj, k );
477 printf(
"Warning: The EXDc network is skipped.\n" );
479 fprintf( stdout,
"Abc_NtkAigToLogicSopBench(): Network check has failed.\n" );
494void Abc_NtkAddPoBuffers(
Abc_Ntk_t * pNtk )
498 assert( Abc_NtkIsStrash(pNtk) );
501 pFanin = Abc_ObjChild0(pObj);
502 pFaninNew = Abc_NtkCreateNode(pNtk);
Abc_Ntk_t * Abc_NtkToNetlistBench(Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_NtkToNetlist(Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_NtkAigToLogicSopNand(Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_NtkToLogic(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
int Abc_NtkLogicMakeSimpleCos2(Abc_Ntk_t *pNtk, int fDuplicate)
struct Abc_Obj_t_ Abc_Obj_t
ABC_DLL Abc_Obj_t * Abc_NtkFindOrCreateNet(Abc_Ntk_t *pNtk, char *pName)
#define Abc_NtkForEachCo(pNtk, pCo, i)
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst1(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachPo(pNtk, pPo, i)
ABC_DLL Abc_Obj_t * Abc_NtkDupObj(Abc_Ntk_t *pNtkNew, Abc_Obj_t *pObj, int fCopyName)
ABC_DLL int Abc_NtkCleanup(Abc_Ntk_t *pNtk, int fVerbose)
ABC_DLL int Abc_NtkGetChoiceNum(Abc_Ntk_t *pNtk)
ABC_DLL Vec_Ptr_t * Abc_NtkDfs(Abc_Ntk_t *pNtk, int fCollectAll)
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
#define Abc_ObjForEachFanin(pObj, pFanin, i)
ABC_DLL int Abc_NtkCheckUniqueCoNames(Abc_Ntk_t *pNtk)
ABC_DLL char * Abc_SopCreateOrMultiCube(Mem_Flex_t *pMan, int nVars, int *pfCompl)
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
struct Abc_Ntk_t_ Abc_Ntk_t
ABC_DLL char * Abc_ObjAssignName(Abc_Obj_t *pObj, char *pName, char *pSuffix)
ABC_DLL void Abc_NtkFinalize(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkNew)
ABC_DLL char * Abc_SopCreateAnd2(Mem_Flex_t *pMan, int fCompl0, int fCompl1)
ABC_DLL char * Abc_SopCreateNand(Mem_Flex_t *pMan, int nVars)
ABC_DLL char * Abc_SopCreateAnd(Mem_Flex_t *pMan, int nVars, int *pfCompl)
ABC_DLL int Abc_NtkLogicMakeSimpleCos(Abc_Ntk_t *pNtk, int fDuplicate)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeInv(Abc_Ntk_t *pNtk, Abc_Obj_t *pFanin)
ABC_DLL int Abc_NtkCheckUniqueCioNames(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachCi(pNtk, pCi, i)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_AigNodeHasComplFanoutEdgeTrav(Abc_Obj_t *pNode)
ABC_DLL void Abc_ObjPatchFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFaninOld, Abc_Obj_t *pFaninNew)
ABC_DLL int Abc_NtkCheckUniqueCiNames(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Ntk_t * Abc_NtkStartFrom(Abc_Ntk_t *pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func)
ABC_DLL int Abc_NtkLogicHasSimpleCos(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Ntk_t * Abc_NtkDup(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachNode(pNtk, pNode, i)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_DLL char * Abc_FrameReadFlag(char *pFlag)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
struct Mem_Flex_t_ Mem_Flex_t
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.