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

Go to the source code of this file.

Functions

ABC_NAMESPACE_IMPL_START int Abc_NtkRefactor (Abc_Ntk_t *pNtk, int nNodeSizeMax, int nMinSaved, int nConeSizeMax, int fUpdateLevel, int fUseZeros, int fUseDcs, int fVerbose)
 DECLARATIONS ///.
 
Abc_Ntk_tAbc_NtkFromFraig (Fraig_Man_t *pMan, Abc_Ntk_t *pNtk)
 DECLARATIONS ///.
 
int Abc_NtkMiterProve (Abc_Ntk_t **ppNtk, void *pPars)
 FUNCTION DEFINITIONS ///.
 
Abc_Ntk_tAbc_NtkMiterRwsat (Abc_Ntk_t *pNtk)
 

Function Documentation

◆ 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}
struct Abc_Obj_t_ Abc_Obj_t
Definition abc.h:116
#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
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
@ ABC_NTK_STRASH
Definition abc.h:58
#define Abc_NtkForEachCi(pNtk, pCi, i)
Definition abc.h:518
@ 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
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_NtkMiterProve()

int Abc_NtkMiterProve ( Abc_Ntk_t ** ppNtk,
void * pPars )

FUNCTION DEFINITIONS ///.

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

Synopsis [Attempts to solve the miter using a number of tricks.]

Description [Returns -1 if timed out; 0 if SAT; 1 if UNSAT. Returns a simplified version of the original network (or a constant 0 network). In case the network is not a constant zero and a SAT assignment is found, pNtk->pModel contains a satisfying assignment.]

SideEffects []

SeeAlso []

Definition at line 62 of file abcProve.c.

63{
64 Prove_Params_t * pParams = (Prove_Params_t *)pPars;
65 Abc_Ntk_t * pNtk, * pNtkTemp;
66 int RetValue = -1, nIter, nSatFails, Counter;
67 abctime clk; //, timeStart = Abc_Clock();
68 ABC_INT64_T nSatConfs, nSatInspects, nInspectLimit;
69
70 // get the starting network
71 pNtk = *ppNtk;
72 assert( Abc_NtkIsStrash(pNtk) );
73 assert( Abc_NtkPoNum(pNtk) == 1 );
74
75 if ( pParams->fVerbose )
76 {
77 printf( "RESOURCE LIMITS: Iterations = %d. Rewriting = %s. Fraiging = %s.\n",
78 pParams->nItersMax, pParams->fUseRewriting? "yes":"no", pParams->fUseFraiging? "yes":"no" );
79 printf( "Miter = %d (%3.1f). Rwr = %d (%3.1f). Fraig = %d (%3.1f). Last = %d.\n",
80 pParams->nMiteringLimitStart, pParams->nMiteringLimitMulti,
82 pParams->nFraigingLimitStart, pParams->nFraigingLimitMulti, pParams->nMiteringLimitLast );
83 }
84
85 // if SAT only, solve without iteration
86 if ( !pParams->fUseRewriting && !pParams->fUseFraiging )
87 {
88 clk = Abc_Clock();
89 RetValue = Abc_NtkMiterSat( pNtk, (ABC_INT64_T)pParams->nMiteringLimitLast, (ABC_INT64_T)0, 0, NULL, NULL );
90 Abc_NtkMiterPrint( pNtk, "SAT solving", clk, pParams->fVerbose );
91 *ppNtk = pNtk;
92 return RetValue;
93 }
94
95 // check the current resource limits
96 for ( nIter = 0; nIter < pParams->nItersMax; nIter++ )
97 {
98 if ( pParams->fVerbose )
99 {
100 printf( "ITERATION %2d : Confs = %6d. FraigBTL = %3d. \n", nIter+1,
101 (int)(pParams->nMiteringLimitStart * pow(pParams->nMiteringLimitMulti,nIter)),
102 (int)(pParams->nFraigingLimitStart * pow(pParams->nFraigingLimitMulti,nIter)) );
103 fflush( stdout );
104 }
105
106 // try brute-force SAT
107 clk = Abc_Clock();
108 nInspectLimit = pParams->nTotalInspectLimit? pParams->nTotalInspectLimit - pParams->nTotalInspectsMade : 0;
109 RetValue = Abc_NtkMiterSat( pNtk, (ABC_INT64_T)(pParams->nMiteringLimitStart * pow(pParams->nMiteringLimitMulti,nIter)), (ABC_INT64_T)nInspectLimit, 0, &nSatConfs, &nSatInspects );
110 Abc_NtkMiterPrint( pNtk, "SAT solving", clk, pParams->fVerbose );
111 if ( RetValue >= 0 )
112 break;
113
114 // add to the number of backtracks and inspects
115 pParams->nTotalBacktracksMade += nSatConfs;
116 pParams->nTotalInspectsMade += nSatInspects;
117 // check if global resource limit is reached
118 if ( (pParams->nTotalBacktrackLimit && pParams->nTotalBacktracksMade >= pParams->nTotalBacktrackLimit) ||
119 (pParams->nTotalInspectLimit && pParams->nTotalInspectsMade >= pParams->nTotalInspectLimit) )
120 {
121 printf( "Reached global limit on conflicts/inspects. Quitting.\n" );
122 *ppNtk = pNtk;
123 return -1;
124 }
125
126 // try rewriting
127 if ( pParams->fUseRewriting )
128 {
129 clk = Abc_Clock();
130 Counter = (int)(pParams->nRewritingLimitStart * pow(pParams->nRewritingLimitMulti,nIter));
131// Counter = 1;
132 while ( 1 )
133 {
134/*
135 extern Abc_Ntk_t * Abc_NtkIvyResyn( Abc_Ntk_t * pNtk, int fUpdateLevel, int fVerbose );
136 pNtk = Abc_NtkIvyResyn( pNtkTemp = pNtk, 0, 0 ); Abc_NtkDelete( pNtkTemp );
137 if ( (RetValue = Abc_NtkMiterIsConstant(pNtk)) >= 0 )
138 break;
139 if ( --Counter == 0 )
140 break;
141*/
142/*
143 Abc_NtkRewrite( pNtk, 0, 0, 0, 0, 0 );
144 if ( (RetValue = Abc_NtkMiterIsConstant(pNtk)) >= 0 )
145 break;
146 if ( --Counter == 0 )
147 break;
148*/
149 Abc_NtkRewrite( pNtk, 0, 0, 0, 0, 0 );
150 if ( (RetValue = Abc_NtkMiterIsConstant(pNtk)) >= 0 )
151 break;
152 if ( --Counter == 0 )
153 break;
154 Abc_NtkRefactor( pNtk, 10, 1, 16, 0, 0, 0, 0 );
155 if ( (RetValue = Abc_NtkMiterIsConstant(pNtk)) >= 0 )
156 break;
157 if ( --Counter == 0 )
158 break;
159 pNtk = Abc_NtkBalance( pNtkTemp = pNtk, 0, 0, 0 ); Abc_NtkDelete( pNtkTemp );
160 if ( (RetValue = Abc_NtkMiterIsConstant(pNtk)) >= 0 )
161 break;
162 if ( --Counter == 0 )
163 break;
164 }
165 Abc_NtkMiterPrint( pNtk, "Rewriting ", clk, pParams->fVerbose );
166 }
167
168 if ( pParams->fUseFraiging )
169 {
170 // try FRAIGing
171 clk = Abc_Clock();
172 nInspectLimit = pParams->nTotalInspectLimit? pParams->nTotalInspectLimit - pParams->nTotalInspectsMade : 0;
173 pNtk = Abc_NtkMiterFraig( pNtkTemp = pNtk, (int)(pParams->nFraigingLimitStart * pow(pParams->nFraigingLimitMulti,nIter)), nInspectLimit, &RetValue, &nSatFails, &nSatConfs, &nSatInspects ); Abc_NtkDelete( pNtkTemp );
174 Abc_NtkMiterPrint( pNtk, "FRAIGing ", clk, pParams->fVerbose );
175// printf( "NumFails = %d\n", nSatFails );
176 if ( RetValue >= 0 )
177 break;
178
179 // add to the number of backtracks and inspects
180 pParams->nTotalBacktracksMade += nSatConfs;
181 pParams->nTotalInspectsMade += nSatInspects;
182 // check if global resource limit is reached
183 if ( (pParams->nTotalBacktrackLimit && pParams->nTotalBacktracksMade >= pParams->nTotalBacktrackLimit) ||
184 (pParams->nTotalInspectLimit && pParams->nTotalInspectsMade >= pParams->nTotalInspectLimit) )
185 {
186 printf( "Reached global limit on conflicts/inspects. Quitting.\n" );
187 *ppNtk = pNtk;
188 return -1;
189 }
190 }
191
192 }
193
194 // try to prove it using brute force SAT
195#ifdef ABC_USE_CUDD
196 if ( RetValue < 0 && pParams->fUseBdds )
197 {
198 if ( pParams->fVerbose )
199 {
200 printf( "Attempting BDDs with node limit %d ...\n", pParams->nBddSizeLimit );
201 fflush( stdout );
202 }
203 clk = Abc_Clock();
204 pNtk = Abc_NtkCollapse( pNtkTemp = pNtk, pParams->nBddSizeLimit, 0, pParams->fBddReorder, 0, 0, 0 );
205 if ( pNtk )
206 {
207 Abc_NtkDelete( pNtkTemp );
208 RetValue = ( (Abc_NtkNodeNum(pNtk) == 1) && (Abc_ObjFanin0(Abc_NtkPo(pNtk,0))->pData == Cudd_ReadLogicZero((DdManager *)pNtk->pManFunc)) );
209 }
210 else
211 pNtk = pNtkTemp;
212 Abc_NtkMiterPrint( pNtk, "BDD building", clk, pParams->fVerbose );
213 }
214#endif
215
216 if ( RetValue < 0 )
217 {
218 if ( pParams->fVerbose )
219 {
220 printf( "Attempting SAT with conflict limit %d ...\n", pParams->nMiteringLimitLast );
221 fflush( stdout );
222 }
223 clk = Abc_Clock();
224 nInspectLimit = pParams->nTotalInspectLimit? pParams->nTotalInspectLimit - pParams->nTotalInspectsMade : 0;
225 RetValue = Abc_NtkMiterSat( pNtk, (ABC_INT64_T)pParams->nMiteringLimitLast, (ABC_INT64_T)nInspectLimit, 0, NULL, NULL );
226 Abc_NtkMiterPrint( pNtk, "SAT solving", clk, pParams->fVerbose );
227 }
228
229 // assign the model if it was proved by rewriting (const 1 miter)
230 if ( RetValue == 0 && pNtk->pModel == NULL )
231 {
232 pNtk->pModel = ABC_ALLOC( int, Abc_NtkCiNum(pNtk) );
233 memset( pNtk->pModel, 0, sizeof(int) * Abc_NtkCiNum(pNtk) );
234 }
235 *ppNtk = pNtk;
236 return RetValue;
237}
ABC_NAMESPACE_IMPL_START int Abc_NtkRefactor(Abc_Ntk_t *pNtk, int nNodeSizeMax, int nMinSaved, int nConeSizeMax, int fUpdateLevel, int fUseZeros, int fUseDcs, int fVerbose)
DECLARATIONS ///.
ABC_DLL Abc_Ntk_t * Abc_NtkCollapse(Abc_Ntk_t *pNtk, int fBddSizeMax, int fDualRail, int fReorder, int fReverse, int fDumpOrder, int fVerbose)
DECLARATIONS ///.
ABC_DLL int Abc_NtkMiterSat(Abc_Ntk_t *pNtk, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, int fVerbose, ABC_INT64_T *pNumConfs, ABC_INT64_T *pNumInspects)
FUNCTION DEFINITIONS ///.
Definition abcSat.c:58
ABC_DLL int Abc_NtkRewrite(Abc_Ntk_t *pNtk, int fUpdateLevel, int fUseZeros, int fVerbose, int fVeryVerbose, int fPlaceEnable)
FUNCTION DEFINITIONS ///.
Definition abcRewrite.c:61
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
Definition abcNtk.c:1421
ABC_DLL Abc_Ntk_t * Abc_NtkBalance(Abc_Ntk_t *pNtk, int fDuplicate, int fSelective, int fUpdateLevel)
FUNCTION DEFINITIONS ///.
Definition abcBalance.c:53
ABC_DLL int Abc_NtkMiterIsConstant(Abc_Ntk_t *pMiter)
Definition abcMiter.c:682
ABC_INT64_T abctime
Definition abc_global.h:332
#define ABC_ALLOC(type, num)
Definition abc_global.h:264
struct Prove_ParamsStruct_t_ Prove_Params_t
Definition ivyFraig.c:108
void * pManFunc
Definition abc.h:191
int * pModel
Definition abc.h:198
ABC_INT64_T nTotalBacktracksMade
Definition ivyFraig.c:136
ABC_INT64_T nTotalInspectsMade
Definition ivyFraig.c:137
ABC_INT64_T nTotalBacktrackLimit
Definition ivyFraig.c:133
ABC_INT64_T nTotalInspectLimit
Definition ivyFraig.c:134
#define assert(ex)
Definition util_old.h:213
char * memset()
Here is the call graph for this function:

◆ Abc_NtkMiterRwsat()

Abc_Ntk_t * Abc_NtkMiterRwsat ( Abc_Ntk_t * pNtk)

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

Synopsis [Implements resynthesis for CEC.]

Description []

SideEffects []

SeeAlso []

Definition at line 337 of file abcProve.c.

338{
339 Abc_Ntk_t * pNtkTemp;
340 Abc_NtkRewrite( pNtk, 0, 0, 0, 0, 0 );
341 pNtk = Abc_NtkBalance( pNtkTemp = pNtk, 0, 0, 0 ); Abc_NtkDelete( pNtkTemp );
342 Abc_NtkRewrite( pNtk, 0, 0, 0, 0, 0 );
343 Abc_NtkRefactor( pNtk, 10, 1, 16, 0, 0, 0, 0 );
344 return pNtk;
345}
Here is the call graph for this function:

◆ Abc_NtkRefactor()

ABC_NAMESPACE_IMPL_START int Abc_NtkRefactor ( Abc_Ntk_t * pNtk,
int nNodeSizeMax,
int nMinSaved,
int nConeSizeMax,
int fUpdateLevel,
int fUseZeros,
int fUseDcs,
int fVerbose )
extern

DECLARATIONS ///.

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

FileName [abcProve.c]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Network and node package.]

Synopsis [Proves the miter using AIG rewriting, FRAIGing, and SAT solving.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

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

Revision [

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

]

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

Synopsis [Performs incremental resynthesis of the AIG.]

Description [Starting from each node, computes a reconvergence-driven cut, derives BDD of the cut function, constructs ISOP, factors the ISOP, and replaces the current implementation of the MFFC of the node by the new factored form, if the number of AIG nodes is reduced and the total number of levels of the AIG network is not increated. Returns the number of AIG nodes saved.]

SideEffects []

SeeAlso []

Definition at line 329 of file abcRefactor.c.

330{
331 extern int Dec_GraphUpdateNetwork( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int fUpdateLevel, int nGain );
332 ProgressBar * pProgress;
333 Abc_ManRef_t * pManRef;
334 Abc_ManCut_t * pManCut;
335 Dec_Graph_t * pFForm;
336 Vec_Ptr_t * vFanins;
337 Abc_Obj_t * pNode;
338 abctime clk, clkStart = Abc_Clock();
339 int i, nNodes, RetValue = 1;
340
341 assert( Abc_NtkIsStrash(pNtk) );
342 // cleanup the AIG
344 // start the managers
345 pManCut = Abc_NtkManCutStart( nNodeSizeMax, nConeSizeMax, 2, 1000 );
346 pManRef = Abc_NtkManRefStart( nNodeSizeMax, nConeSizeMax, fUseDcs, fVerbose );
347 pManRef->vLeaves = Abc_NtkManCutReadCutLarge( pManCut );
348 // compute the reverse levels if level update is requested
349 if ( fUpdateLevel )
350 Abc_NtkStartReverseLevels( pNtk, 0 );
351
352 // resynthesize each node once
353 pManRef->nNodesBeg = Abc_NtkNodeNum(pNtk);
354 nNodes = Abc_NtkObjNumMax(pNtk);
355 pProgress = Extra_ProgressBarStart( stdout, nNodes );
356 Abc_NtkForEachNode( pNtk, pNode, i )
357 {
358 Extra_ProgressBarUpdate( pProgress, i, NULL );
359 // skip the constant node
360// if ( Abc_NodeIsConst(pNode) )
361// continue;
362 // skip persistant nodes
363 if ( Abc_NodeIsPersistant(pNode) )
364 continue;
365 // skip the nodes with many fanouts
366 if ( Abc_ObjFanoutNum(pNode) > 1000 )
367 continue;
368 // stop if all nodes have been tried once
369 if ( i >= nNodes )
370 break;
371 // compute a reconvergence-driven cut
372clk = Abc_Clock();
373 vFanins = Abc_NodeFindCut( pManCut, pNode, fUseDcs );
374pManRef->timeCut += Abc_Clock() - clk;
375 // evaluate this cut
376clk = Abc_Clock();
377 pFForm = Abc_NodeRefactor( pManRef, pNode, vFanins, nMinSaved, fUpdateLevel, fUseZeros, fUseDcs, fVerbose );
378pManRef->timeRes += Abc_Clock() - clk;
379 if ( pFForm == NULL )
380 continue;
381 // acceptable replacement found, update the graph
382clk = Abc_Clock();
383 if ( !Dec_GraphUpdateNetwork( pNode, pFForm, fUpdateLevel, pManRef->nLastGain ) )
384 {
385 Dec_GraphFree( pFForm );
386 RetValue = -1;
387 break;
388 }
389pManRef->timeNtk += Abc_Clock() - clk;
390 Dec_GraphFree( pFForm );
391 }
392 Extra_ProgressBarStop( pProgress );
393pManRef->timeTotal = Abc_Clock() - clkStart;
394 pManRef->nNodesEnd = Abc_NtkNodeNum(pNtk);
395
396 // print statistics of the manager
397 if ( fVerbose )
398 Abc_NtkManRefPrintStats( pManRef );
399 // delete the managers
400 Abc_NtkManCutStop( pManCut );
401 Abc_NtkManRefStop( pManRef );
402 // put the nodes into the DFS order and reassign their IDs
403 Abc_NtkReassignIds( pNtk );
404// Abc_AigCheckFaninOrder( pNtk->pManFunc );
405 if ( RetValue != -1 )
406 {
407 // fix the levels
408 if ( fUpdateLevel )
410 else
411 Abc_NtkLevel( pNtk );
412 // check
413 if ( !Abc_NtkCheck( pNtk ) )
414 {
415 printf( "Abc_NtkRefactor: The network check has failed.\n" );
416 return 0;
417 }
418 }
419 return RetValue;
420}
int Dec_GraphUpdateNetwork(Abc_Obj_t *pRoot, Dec_Graph_t *pGraph, int fUpdateLevel, int nGain)
Definition decAbc.c:240
struct Abc_ManRef_t_ Abc_ManRef_t
Dec_Graph_t * Abc_NodeRefactor(Abc_ManRef_t *p, Abc_Obj_t *pNode, Vec_Ptr_t *vFanins, int nMinSaved, int fUpdateLevel, int fUseZeros, int fUseDcs, int fVerbose)
void Abc_NtkManRefStop(Abc_ManRef_t *p)
Abc_ManRef_t * Abc_NtkManRefStart(int nNodeSizeMax, int nConeSizeMax, int fUseDcs, int fVerbose)
void Abc_NtkManRefPrintStats(Abc_ManRef_t *p)
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
Definition abcCheck.c:64
struct Abc_ManCut_t_ Abc_ManCut_t
Definition abc.h:119
struct Abc_Aig_t_ Abc_Aig_t
Definition abc.h:117
ABC_DLL void Abc_NtkManCutStop(Abc_ManCut_t *p)
Definition abcReconv.c:623
ABC_DLL void Abc_NtkStopReverseLevels(Abc_Ntk_t *pNtk)
Definition abcTiming.c:1302
ABC_DLL int Abc_NtkLevel(Abc_Ntk_t *pNtk)
Definition abcDfs.c:1449
ABC_DLL Vec_Ptr_t * Abc_NodeFindCut(Abc_ManCut_t *p, Abc_Obj_t *pRoot, int fContain)
Definition abcReconv.c:256
ABC_DLL int Abc_AigCleanup(Abc_Aig_t *pMan)
Definition abcAig.c:194
ABC_DLL void Abc_NtkStartReverseLevels(Abc_Ntk_t *pNtk, int nMaxLevelIncrease)
Definition abcTiming.c:1274
ABC_DLL Vec_Ptr_t * Abc_NtkManCutReadCutLarge(Abc_ManCut_t *p)
Definition abcReconv.c:644
ABC_DLL Abc_ManCut_t * Abc_NtkManCutStart(int nNodeSizeMax, int nConeSizeMax, int nNodeFanStop, int nConeFanStop)
Definition abcReconv.c:595
#define Abc_NtkForEachNode(pNtk, pNode, i)
Definition abc.h:464
struct Dec_Graph_t_ Dec_Graph_t
Definition dec.h:68
Vec_Ptr_t * vLeaves
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
Here is the caller graph for this function: