ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
abcFraig.c File Reference
#include "base/abc/abc.h"
#include "proof/fraig/fraig.h"
#include "base/main/main.h"
Include dependency graph for abcFraig.c:

Go to the source code of this file.

Functions

ABC_NAMESPACE_IMPL_START Abc_Ntk_tAbc_NtkFromFraig (Fraig_Man_t *pMan, Abc_Ntk_t *pNtk)
 DECLARATIONS ///.
 
Fraig_Node_tAbc_NtkToFraigExdc (Fraig_Man_t *pMan, Abc_Ntk_t *pNtkMain, Abc_Ntk_t *pNtkExdc)
 
Abc_Ntk_tAbc_NtkFraig (Abc_Ntk_t *pNtk, void *pParams, int fAllNodes, int fExdc)
 FUNCTION DEFINITIONS ///.
 
void * Abc_NtkToFraig (Abc_Ntk_t *pNtk, void *pParams, int fAllNodes, int fExdc)
 
Abc_Ntk_tAbc_NtkFraigTrust (Abc_Ntk_t *pNtk)
 
int Abc_NtkFraigStore (Abc_Ntk_t *pNtkAdd)
 
Abc_Ntk_tAbc_NtkFraigRestore (int nPatsRand, int nPatsDyna, int nBTLimit)
 
void Abc_NtkFraigStoreClean ()
 
void Abc_NtkFraigStoreCheck (Abc_Ntk_t *pFraig)
 

Function Documentation

◆ Abc_NtkFraig()

Abc_Ntk_t * Abc_NtkFraig ( Abc_Ntk_t * pNtk,
void * pParams,
int fAllNodes,
int fExdc )

FUNCTION DEFINITIONS ///.

Function*************************************************************

Synopsis [Interfaces the network with the FRAIG package.]

Description []

SideEffects []

SeeAlso []

Definition at line 58 of file abcFraig.c.

59{
60 Fraig_Params_t * pPars = (Fraig_Params_t *)pParams;
61 Abc_Ntk_t * pNtkNew;
62 Fraig_Man_t * pMan;
63 // check if EXDC is present
64 if ( fExdc && pNtk->pExdc == NULL )
65 fExdc = 0, printf( "Warning: Networks has no EXDC.\n" );
66 // perform fraiging
67 pMan = (Fraig_Man_t *)Abc_NtkToFraig( pNtk, pParams, fAllNodes, fExdc );
68 // add algebraic choices
69// if ( pPars->fChoicing )
70// Fraig_ManAddChoices( pMan, 0, 6 );
71 // prove the miter if asked to
72 if ( pPars->fTryProve )
73 Fraig_ManProveMiter( pMan );
74 // reconstruct FRAIG in the new network
75 if ( fExdc )
76 pNtkNew = Abc_NtkFromFraig2( pMan, pNtk );
77 else
78 pNtkNew = Abc_NtkFromFraig( pMan, pNtk );
79 Fraig_ManFree( pMan );
80 if ( pNtk->pExdc )
81 pNtkNew->pExdc = Abc_NtkDup( pNtk->pExdc );
82 // make sure that everything is okay
83 if ( !Abc_NtkCheck( pNtkNew ) )
84 {
85 printf( "Abc_NtkFraig: The network check has failed.\n" );
86 Abc_NtkDelete( pNtkNew );
87 return NULL;
88 }
89 return pNtkNew;
90}
ABC_NAMESPACE_IMPL_START Abc_Ntk_t * Abc_NtkFromFraig(Fraig_Man_t *pMan, Abc_Ntk_t *pNtk)
DECLARATIONS ///.
Definition abcFraig.c:279
void * Abc_NtkToFraig(Abc_Ntk_t *pNtk, void *pParams, int fAllNodes, int fExdc)
Definition abcFraig.c:103
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
Definition abcCheck.c:64
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
Definition abcNtk.c:1421
ABC_DLL Abc_Ntk_t * Abc_NtkDup(Abc_Ntk_t *pNtk)
Definition abcNtk.c:472
void Fraig_ManProveMiter(Fraig_Man_t *p)
Definition fraigSat.c:85
void Fraig_ManFree(Fraig_Man_t *pMan)
Definition fraigMan.c:262
typedefABC_NAMESPACE_HEADER_START struct Fraig_ManStruct_t_ Fraig_Man_t
INCLUDES ///.
Definition fraig.h:40
struct Fraig_ParamsStruct_t_ Fraig_Params_t
Definition fraig.h:44
Abc_Ntk_t * pExdc
Definition abc.h:201
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_NtkFraigRestore()

Abc_Ntk_t * Abc_NtkFraigRestore ( int nPatsRand,
int nPatsDyna,
int nBTLimit )

Function*************************************************************

Synopsis [Interfaces the network with the FRAIG package.]

Description []

SideEffects []

SeeAlso []

Definition at line 698 of file abcFraig.c.

699{
700 extern Abc_Ntk_t * Abc_NtkFraigPartitioned( Vec_Ptr_t * vStore, void * pParams );
701 Fraig_Params_t Params;
702 Vec_Ptr_t * vStore;
703 Abc_Ntk_t * pNtk, * pFraig;
704 int nWords1, nWords2, nWordsMin;
705// abctime clk = Abc_Clock();
706
707 // get the stored network
708 vStore = Abc_FrameReadStore();
709 if ( Vec_PtrSize(vStore) == 0 )
710 {
711 printf( "There are no network currently in storage.\n" );
712 return NULL;
713 }
714// printf( "Currently stored %d networks will be fraiged.\n", Vec_PtrSize(vStore) );
715 pNtk = (Abc_Ntk_t *)Vec_PtrEntry( vStore, 0 );
716
717 // swap the first and last network
718 // this should lead to the primary choice being "better" because of synthesis
719 if ( Vec_PtrSize(vStore) > 1 )
720 {
721 pNtk = (Abc_Ntk_t *)Vec_PtrPop( vStore );
722 Vec_PtrPush( vStore, Vec_PtrEntry(vStore,0) );
723 Vec_PtrWriteEntry( vStore, 0, pNtk );
724 }
725
726 // to determine the number of simulation patterns
727 // use the following strategy
728 // at least 64 words (32 words random and 32 words dynamic)
729 // no more than 256M for one circuit (128M + 128M)
730 nWords1 = 32;
731 nWords2 = (1<<27) / (Abc_NtkNodeNum(pNtk) + Abc_NtkCiNum(pNtk));
732 nWordsMin = Abc_MinInt( nWords1, nWords2 );
733
734 // set parameters for fraiging
735 Fraig_ParamsSetDefault( &Params );
736 Params.nPatsRand = nPatsRand ? nPatsRand : nWordsMin * 32; // the number of words of random simulation info
737 Params.nPatsDyna = nPatsDyna ? nPatsDyna : nWordsMin * 32; // the number of words of dynamic simulation info
738 Params.nBTLimit = nBTLimit; // the max number of backtracks to perform
739 Params.fFuncRed = 1; // performs only one level hashing
740 Params.fFeedBack = 1; // enables solver feedback
741 Params.fDist1Pats = 1; // enables distance-1 patterns
742 Params.fDoSparse = 1; // performs equiv tests for sparse functions
743 Params.fChoicing = 1; // enables recording structural choices
744 Params.fTryProve = 0; // tries to solve the final miter
745 Params.fInternal = 1; // does not show progress bar
746 Params.fVerbose = 0; // the verbosiness flag
747
748 // perform partitioned computation of structural choices
749 pFraig = Abc_NtkFraigPartitioned( vStore, &Params );
751//ABC_PRT( "Total choicing time", Abc_Clock() - clk );
752 return pFraig;
753}
void Abc_NtkFraigStoreClean()
Definition abcFraig.c:766
Abc_Ntk_t * Abc_NtkFraigPartitioned(Vec_Ptr_t *vStore, void *pParams)
Definition abcPart.c:1106
ABC_DLL Vec_Ptr_t * Abc_FrameReadStore()
FUNCTION DEFINITIONS ///.
Definition mainFrame.c:55
void Fraig_ParamsSetDefault(Fraig_Params_t *pParams)
Definition fraigMan.c:122
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
Here is the call graph for this function:

◆ Abc_NtkFraigStore()

int Abc_NtkFraigStore ( Abc_Ntk_t * pNtkAdd)

Function*************************************************************

Synopsis [Interfaces the network with the FRAIG package.]

Description []

SideEffects []

SeeAlso []

Definition at line 654 of file abcFraig.c.

655{
656 Vec_Ptr_t * vStore;
657 Abc_Ntk_t * pNtk;
658 // create the network to be stored
659 pNtk = Abc_NtkStrash( pNtkAdd, 0, 0, 0 );
660 if ( pNtk == NULL )
661 {
662 printf( "Abc_NtkFraigStore: Initial strashing has failed.\n" );
663 return 0;
664 }
665 // get the network currently stored
666 vStore = Abc_FrameReadStore();
667 if ( Vec_PtrSize(vStore) > 0 )
668 {
669 // check that the networks have the same PIs
670 extern int Abc_NodeCompareCiCo( Abc_Ntk_t * pNtkOld, Abc_Ntk_t * pNtkNew );
671 if ( !Abc_NodeCompareCiCo(pNtk, (Abc_Ntk_t *)Vec_PtrEntry(vStore, 0)) )
672 {
673 // reorder PIs of pNtk2 according to pNtk1
674 if ( !Abc_NtkCompareSignals( pNtk, (Abc_Ntk_t *)Vec_PtrEntry(vStore, 0), 1, 1 ) )
675 {
676 printf( "Trying to store the network with different primary inputs.\n" );
677 printf( "The previously stored networks are deleted and this one is added.\n" );
679 }
680 }
681 }
682 Vec_PtrPush( vStore, pNtk );
683// printf( "The number of AIG nodes added to storage = %5d.\n", Abc_NtkNodeNum(pNtk) );
684 return 1;
685}
int Abc_NodeCompareCiCo(Abc_Ntk_t *pNtkOld, Abc_Ntk_t *pNtkNew)
Definition abcNames.c:466
ABC_DLL Abc_Ntk_t * Abc_NtkStrash(Abc_Ntk_t *pNtk, int fAllNodes, int fCleanup, int fRecord)
Definition abcStrash.c:265
ABC_DLL int Abc_NtkCompareSignals(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fOnlyPis, int fComb)
Definition abcCheck.c:749
Here is the call graph for this function:

◆ Abc_NtkFraigStoreCheck()

void Abc_NtkFraigStoreCheck ( Abc_Ntk_t * pFraig)

Function*************************************************************

Synopsis [Checks the correctness of stored networks.]

Description []

SideEffects []

SeeAlso []

Definition at line 788 of file abcFraig.c.

789{
790 Abc_Obj_t * pNode0, * pNode1;
791 int nPoOrig, nPoFinal, nStored;
792 int i, k;
793 // check that the PO functions are correct
794 nPoFinal = Abc_NtkPoNum(pFraig);
795 nStored = Abc_FrameReadStoreSize();
796 assert( nPoFinal % nStored == 0 );
797 nPoOrig = nPoFinal / nStored;
798 for ( i = 0; i < nPoOrig; i++ )
799 {
800 pNode0 = Abc_ObjFanin0( Abc_NtkPo(pFraig, i) );
801 for ( k = 1; k < nStored; k++ )
802 {
803 pNode1 = Abc_ObjFanin0( Abc_NtkPo(pFraig, k*nPoOrig+i) );
804 if ( pNode0 != pNode1 )
805 printf( "Verification for PO #%d of network #%d has failed. The PO function is not used.\n", i+1, k+1 );
806 }
807 }
808}
struct Abc_Obj_t_ Abc_Obj_t
Definition abc.h:116
ABC_DLL int Abc_FrameReadStoreSize()
Definition mainFrame.c:56
#define assert(ex)
Definition util_old.h:213
Here is the call graph for this function:

◆ Abc_NtkFraigStoreClean()

void Abc_NtkFraigStoreClean ( )

Function*************************************************************

Synopsis [Interfaces the network with the FRAIG package.]

Description []

SideEffects []

SeeAlso []

Definition at line 766 of file abcFraig.c.

767{
768 Vec_Ptr_t * vStore;
769 Abc_Ntk_t * pNtk;
770 int i;
771 vStore = Abc_FrameReadStore();
772 Vec_PtrForEachEntry( Abc_Ntk_t *, vStore, pNtk, i )
773 Abc_NtkDelete( pNtk );
774 Vec_PtrClear( vStore );
775}
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
Definition vecPtr.h:55
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_NtkFraigTrust()

Abc_Ntk_t * Abc_NtkFraigTrust ( Abc_Ntk_t * pNtk)

Function*************************************************************

Synopsis [Interfaces the network with the FRAIG package.]

Description []

SideEffects []

SeeAlso []

Definition at line 485 of file abcFraig.c.

486{
487 Abc_Ntk_t * pNtkNew;
488
489 if ( !Abc_NtkIsSopLogic(pNtk) )
490 {
491 printf( "Abc_NtkFraigTrust: Trust mode works for netlists and logic SOP networks.\n" );
492 return NULL;
493 }
494
495 if ( !Abc_NtkFraigTrustCheck(pNtk) )
496 {
497 printf( "Abc_NtkFraigTrust: The network does not look like an AIG with choice nodes.\n" );
498 return NULL;
499 }
500
501 // perform strashing
502 pNtkNew = Abc_NtkStartFrom( pNtk, ABC_NTK_STRASH, ABC_FUNC_AIG );
503 Abc_NtkFraigTrustOne( pNtk, pNtkNew );
504 Abc_NtkFinalize( pNtk, pNtkNew );
505 Abc_NtkReassignIds( pNtkNew );
506
507 // print a warning about choice nodes
508 printf( "Warning: The resulting AIG contains %d choice nodes.\n", Abc_NtkGetChoiceNum( pNtkNew ) );
509
510 // make sure that everything is okay
511 if ( !Abc_NtkCheck( pNtkNew ) )
512 {
513 printf( "Abc_NtkFraigTrust: The network check has failed.\n" );
514 Abc_NtkDelete( pNtkNew );
515 return NULL;
516 }
517 return pNtkNew;
518}
ABC_DLL int Abc_NtkGetChoiceNum(Abc_Ntk_t *pNtk)
Definition abcUtil.c:463
ABC_DLL void Abc_NtkFinalize(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkNew)
Definition abcNtk.c:355
@ ABC_NTK_STRASH
Definition abc.h:58
@ ABC_FUNC_AIG
Definition abc.h:67
ABC_DLL void Abc_NtkReassignIds(Abc_Ntk_t *pNtk)
Definition abcUtil.c:1809
ABC_DLL Abc_Ntk_t * Abc_NtkStartFrom(Abc_Ntk_t *pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func)
Definition abcNtk.c:157
Here is the call graph for this function:

◆ Abc_NtkFromFraig()

Abc_Ntk_t * Abc_NtkFromFraig ( Fraig_Man_t * pMan,
Abc_Ntk_t * pNtk )
extern

DECLARATIONS ///.

CFile****************************************************************

FileName [abcFraig.c]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Network and node package.]

Synopsis [Procedures interfacing with the FRAIG package.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

Date [Ver. 1.0. Started - June 20, 2005.]

Revision [

Id
abcFraig.c,v 1.00 2005/06/20 00:00:00 alanmi Exp

]

Function*************************************************************

Synopsis [Transforms FRAIG into strashed network with choices.]

Description []

SideEffects []

SeeAlso []

Definition at line 279 of file abcFraig.c.

280{
281 ProgressBar * pProgress;
282 Abc_Ntk_t * pNtkNew;
283 Abc_Obj_t * pNode, * pNodeNew;
284 int i;
285 // create the new network
286 pNtkNew = Abc_NtkStartFrom( pNtk, ABC_NTK_STRASH, ABC_FUNC_AIG );
287 // make the mapper point to the new network
288 Abc_NtkForEachCi( pNtk, pNode, i )
290 // set the constant node
292 // process the nodes in topological order
293 pProgress = Extra_ProgressBarStart( stdout, Abc_NtkCoNum(pNtk) );
294 Abc_NtkForEachCo( pNtk, pNode, i )
295 {
296 Extra_ProgressBarUpdate( pProgress, i, NULL );
297 pNodeNew = Abc_NodeFromFraig_rec( pNtkNew, Fraig_ManReadOutputs(pMan)[i] );
298 Abc_ObjAddFanin( pNode->pCopy, pNodeNew );
299 }
300 Extra_ProgressBarStop( pProgress );
301 Abc_NtkReassignIds( pNtkNew );
302 return pNtkNew;
303}
#define Abc_NtkForEachCo(pNtk, pCo, i)
Definition abc.h:522
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
Definition abcFanio.c:84
#define Abc_NtkForEachCi(pNtk, pCi, i)
Definition abc.h:518
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
Definition abcAig.c:683
ABC_NAMESPACE_IMPL_START typedef char ProgressBar
Definition bbrNtbdd.c:27
void Extra_ProgressBarStop(ProgressBar *p)
ProgressBar * Extra_ProgressBarStart(FILE *pFile, int nItemsTotal)
FUNCTION DEFINITIONS ///.
Fraig_Node_t * Fraig_ManReadConst1(Fraig_Man_t *p)
Definition fraigApi.c:52
void Fraig_NodeSetData1(Fraig_Node_t *p, Fraig_Node_t *pData)
Definition fraigApi.c:138
Fraig_Node_t * Fraig_ManReadIthVar(Fraig_Man_t *p, int i)
Definition fraigApi.c:168
struct Fraig_NodeStruct_t_ Fraig_Node_t
Definition fraig.h:41
Fraig_Node_t ** Fraig_ManReadOutputs(Fraig_Man_t *p)
Definition fraigApi.c:47
Abc_Obj_t * pCopy
Definition abc.h:148
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_NtkToFraig()

void * Abc_NtkToFraig ( Abc_Ntk_t * pNtk,
void * pParams,
int fAllNodes,
int fExdc )

Function*************************************************************

Synopsis [Transforms the strashed network into FRAIG.]

Description []

SideEffects []

SeeAlso []

Definition at line 103 of file abcFraig.c.

104{
105 int fInternal = ((Fraig_Params_t *)pParams)->fInternal;
106 Fraig_Man_t * pMan;
107 ProgressBar * pProgress = NULL;
108 Vec_Ptr_t * vNodes;
109 Abc_Obj_t * pNode;
110 int i;
111
112 assert( Abc_NtkIsStrash(pNtk) );
113
114 // create the FRAIG manager
115 pMan = Fraig_ManCreate( (Fraig_Params_t *)pParams );
116
117 // map the constant node
118 Abc_NtkCleanCopy( pNtk );
120 // create PIs and remember them in the old nodes
121 Abc_NtkForEachCi( pNtk, pNode, i )
122 pNode->pCopy = (Abc_Obj_t *)Fraig_ManReadIthVar(pMan, i);
123
124 // perform strashing
125 vNodes = Abc_AigDfs( pNtk, fAllNodes, 0 );
126 if ( !fInternal )
127 pProgress = Extra_ProgressBarStart( stdout, vNodes->nSize );
128 Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pNode, i )
129 {
130 if ( Abc_ObjFaninNum(pNode) == 0 )
131 continue;
132 if ( pProgress )
133 Extra_ProgressBarUpdate( pProgress, i, NULL );
134 pNode->pCopy = (Abc_Obj_t *)Fraig_NodeAnd( pMan,
135 Fraig_NotCond( Abc_ObjFanin0(pNode)->pCopy, (int)Abc_ObjFaninC0(pNode) ),
136 Fraig_NotCond( Abc_ObjFanin1(pNode)->pCopy, (int)Abc_ObjFaninC1(pNode) ) );
137 }
138 if ( pProgress )
139 Extra_ProgressBarStop( pProgress );
140 Vec_PtrFree( vNodes );
141
142 // use EXDC to change the mapping of nodes into FRAIG nodes
143 if ( fExdc )
144 Abc_NtkFraigRemapUsingExdc( pMan, pNtk );
145
146 // set the primary outputs
147 Abc_NtkForEachCo( pNtk, pNode, i )
148 Fraig_ManSetPo( pMan, (Fraig_Node_t *)Abc_ObjNotCond( Abc_ObjFanin0(pNode)->pCopy, Abc_ObjFaninC0(pNode) ) );
149 return pMan;
150}
ABC_DLL Vec_Ptr_t * Abc_AigDfs(Abc_Ntk_t *pNtk, int fCollectAll, int fCollectCos)
Definition abcDfs.c:1198
ABC_DLL void Abc_NtkCleanCopy(Abc_Ntk_t *pNtk)
Definition abcUtil.c:540
void Fraig_ManSetPo(Fraig_Man_t *p, Fraig_Node_t *pNode)
Definition fraigApi.c:194
Fraig_Man_t * Fraig_ManCreate(Fraig_Params_t *pParams)
Definition fraigMan.c:184
#define Fraig_NotCond(p, c)
Definition fraig.h:110
Fraig_Node_t * Fraig_NodeAnd(Fraig_Man_t *p, Fraig_Node_t *p1, Fraig_Node_t *p2)
Definition fraigApi.c:212
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_NtkToFraigExdc()

Fraig_Node_t * Abc_NtkToFraigExdc ( Fraig_Man_t * pMan,
Abc_Ntk_t * pNtkMain,
Abc_Ntk_t * pNtkExdc )
extern

Function*************************************************************

Synopsis [Derives EXDC node for the given network.]

Description [Assumes that EXDCs of all POs are the same. Returns the EXDC of the first PO.]

SideEffects []

SeeAlso []

Definition at line 164 of file abcFraig.c.

165{
166 Abc_Ntk_t * pNtkStrash;
167 Abc_Obj_t * pObj;
168 Fraig_Node_t * gResult;
169 char ** ppNames;
170 int i, k;
171 // strash the EXDC network
172 pNtkStrash = Abc_NtkStrash( pNtkExdc, 0, 0, 0 );
173 Abc_NtkCleanCopy( pNtkStrash );
174 Abc_AigConst1(pNtkStrash)->pCopy = (Abc_Obj_t *)Fraig_ManReadConst1(pMan);
175 // set the mapping of the PI nodes
176 ppNames = Abc_NtkCollectCioNames( pNtkMain, 0 );
177 Abc_NtkForEachCi( pNtkStrash, pObj, i )
178 {
179 for ( k = 0; k < Abc_NtkCiNum(pNtkMain); k++ )
180 if ( strcmp( Abc_ObjName(pObj), ppNames[k] ) == 0 )
181 {
182 pObj->pCopy = (Abc_Obj_t *)Fraig_ManReadIthVar(pMan, k);
183 break;
184 }
185 assert( pObj->pCopy != NULL );
186 }
187 ABC_FREE( ppNames );
188 // build FRAIG for each node
189 Abc_AigForEachAnd( pNtkStrash, pObj, i )
190 pObj->pCopy = (Abc_Obj_t *)Fraig_NodeAnd( pMan,
191 Fraig_NotCond( Abc_ObjFanin0(pObj)->pCopy, (int)Abc_ObjFaninC0(pObj) ),
192 Fraig_NotCond( Abc_ObjFanin1(pObj)->pCopy, (int)Abc_ObjFaninC1(pObj) ) );
193 // get the EXDC to be returned
194 pObj = Abc_NtkPo( pNtkStrash, 0 );
195 gResult = Fraig_NotCond( Abc_ObjFanin0(pObj)->pCopy, (int)Abc_ObjFaninC0(pObj) );
196 Abc_NtkDelete( pNtkStrash );
197 return gResult;
198}
#define Abc_AigForEachAnd(pNtk, pNode, i)
Definition abc.h:488
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
Definition abcNames.c:49
ABC_DLL char ** Abc_NtkCollectCioNames(Abc_Ntk_t *pNtk, int fCollectCos)
Definition abcNames.c:285
#define ABC_FREE(obj)
Definition abc_global.h:267
int strcmp()
Here is the call graph for this function: