abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
abcRefactor.c
Go to the documentation of this file.
1 /**CFile****************************************************************
2 
3  FileName [abcRefactor.c]
4 
5  SystemName [ABC: Logic synthesis and verification system.]
6 
7  PackageName [Network and node package.]
8 
9  Synopsis [Resynthesis based on collapsing and refactoring.]
10 
11  Author [Alan Mishchenko]
12 
13  Affiliation [UC Berkeley]
14 
15  Date [Ver. 1.0. Started - June 20, 2005.]
16 
17  Revision [$Id: abcRefactor.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
18 
19 ***********************************************************************/
20 
21 #include "base/abc/abc.h"
22 #include "bool/dec/dec.h"
23 #include "misc/extra/extraBdd.h"
24 
26 
27 
28 ////////////////////////////////////////////////////////////////////////
29 /// DECLARATIONS ///
30 ////////////////////////////////////////////////////////////////////////
31 
32 typedef struct Abc_ManRef_t_ Abc_ManRef_t;
34 {
35  // user specified parameters
36  int nNodeSizeMax; // the limit on the size of the supernode
37  int nConeSizeMax; // the limit on the size of the containing cone
38  int fVerbose; // the verbosity flag
39  // internal data structures
40  DdManager * dd; // the BDD manager
41  Vec_Str_t * vCube; // temporary
42  Vec_Int_t * vForm; // temporary
43  Vec_Ptr_t * vVisited; // temporary
44  Vec_Ptr_t * vLeaves; // temporary
45  // node statistics
46  int nLastGain;
50  int nNodesBeg;
51  int nNodesEnd;
52  // runtime statistics
62 };
63 
64 static void Abc_NtkManRefPrintStats( Abc_ManRef_t * p );
65 static Abc_ManRef_t * Abc_NtkManRefStart( int nNodeSizeMax, int nConeSizeMax, int fUseDcs, int fVerbose );
66 static void Abc_NtkManRefStop( Abc_ManRef_t * p );
67 static Dec_Graph_t * Abc_NodeRefactor( Abc_ManRef_t * p, Abc_Obj_t * pNode, Vec_Ptr_t * vFanins, int fUpdateLevel, int fUseZeros, int fUseDcs, int fVerbose );
68 
69 ////////////////////////////////////////////////////////////////////////
70 /// FUNCTION DEFINITIONS ///
71 ////////////////////////////////////////////////////////////////////////
72 
73 /**Function*************************************************************
74 
75  Synopsis [Performs incremental resynthesis of the AIG.]
76 
77  Description [Starting from each node, computes a reconvergence-driven cut,
78  derives BDD of the cut function, constructs ISOP, factors the ISOP,
79  and replaces the current implementation of the MFFC of the node by the
80  new factored form, if the number of AIG nodes is reduced and the total
81  number of levels of the AIG network is not increated. Returns the
82  number of AIG nodes saved.]
83 
84  SideEffects []
85 
86  SeeAlso []
87 
88 ***********************************************************************/
89 int Abc_NtkRefactor( Abc_Ntk_t * pNtk, int nNodeSizeMax, int nConeSizeMax, int fUpdateLevel, int fUseZeros, int fUseDcs, int fVerbose )
90 {
91  extern void Dec_GraphUpdateNetwork( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int fUpdateLevel, int nGain );
92  ProgressBar * pProgress;
93  Abc_ManRef_t * pManRef;
94  Abc_ManCut_t * pManCut;
95  Dec_Graph_t * pFForm;
96  Vec_Ptr_t * vFanins;
97  Abc_Obj_t * pNode;
98  abctime clk, clkStart = Abc_Clock();
99  int i, nNodes;
100 
101  assert( Abc_NtkIsStrash(pNtk) );
102  // cleanup the AIG
104  // start the managers
105  pManCut = Abc_NtkManCutStart( nNodeSizeMax, nConeSizeMax, 2, 1000 );
106  pManRef = Abc_NtkManRefStart( nNodeSizeMax, nConeSizeMax, fUseDcs, fVerbose );
107  pManRef->vLeaves = Abc_NtkManCutReadCutLarge( pManCut );
108  // compute the reverse levels if level update is requested
109  if ( fUpdateLevel )
110  Abc_NtkStartReverseLevels( pNtk, 0 );
111 
112  // resynthesize each node once
113  pManRef->nNodesBeg = Abc_NtkNodeNum(pNtk);
114  nNodes = Abc_NtkObjNumMax(pNtk);
115  pProgress = Extra_ProgressBarStart( stdout, nNodes );
116  Abc_NtkForEachNode( pNtk, pNode, i )
117  {
118  Extra_ProgressBarUpdate( pProgress, i, NULL );
119  // skip the constant node
120 // if ( Abc_NodeIsConst(pNode) )
121 // continue;
122  // skip persistant nodes
123  if ( Abc_NodeIsPersistant(pNode) )
124  continue;
125  // skip the nodes with many fanouts
126  if ( Abc_ObjFanoutNum(pNode) > 1000 )
127  continue;
128  // stop if all nodes have been tried once
129  if ( i >= nNodes )
130  break;
131  // compute a reconvergence-driven cut
132 clk = Abc_Clock();
133  vFanins = Abc_NodeFindCut( pManCut, pNode, fUseDcs );
134 pManRef->timeCut += Abc_Clock() - clk;
135  // evaluate this cut
136 clk = Abc_Clock();
137  pFForm = Abc_NodeRefactor( pManRef, pNode, vFanins, fUpdateLevel, fUseZeros, fUseDcs, fVerbose );
138 pManRef->timeRes += Abc_Clock() - clk;
139  if ( pFForm == NULL )
140  continue;
141  // acceptable replacement found, update the graph
142 clk = Abc_Clock();
143  Dec_GraphUpdateNetwork( pNode, pFForm, fUpdateLevel, pManRef->nLastGain );
144 pManRef->timeNtk += Abc_Clock() - clk;
145  Dec_GraphFree( pFForm );
146 // {
147 // extern int s_TotalChanges;
148 // s_TotalChanges++;
149 // }
150  }
151  Extra_ProgressBarStop( pProgress );
152 pManRef->timeTotal = Abc_Clock() - clkStart;
153  pManRef->nNodesEnd = Abc_NtkNodeNum(pNtk);
154 
155  // print statistics of the manager
156  if ( fVerbose )
157  Abc_NtkManRefPrintStats( pManRef );
158  // delete the managers
159  Abc_NtkManCutStop( pManCut );
160  Abc_NtkManRefStop( pManRef );
161  // put the nodes into the DFS order and reassign their IDs
162  Abc_NtkReassignIds( pNtk );
163 // Abc_AigCheckFaninOrder( pNtk->pManFunc );
164  // fix the levels
165  if ( fUpdateLevel )
166  Abc_NtkStopReverseLevels( pNtk );
167  else
168  Abc_NtkLevel( pNtk );
169  // check
170  if ( !Abc_NtkCheck( pNtk ) )
171  {
172  printf( "Abc_NtkRefactor: The network check has failed.\n" );
173  return 0;
174  }
175  return 1;
176 }
177 
178 /**Function*************************************************************
179 
180  Synopsis [Resynthesizes the node using refactoring.]
181 
182  Description []
183 
184  SideEffects []
185 
186  SeeAlso []
187 
188 ***********************************************************************/
189 Dec_Graph_t * Abc_NodeRefactor( Abc_ManRef_t * p, Abc_Obj_t * pNode, Vec_Ptr_t * vFanins, int fUpdateLevel, int fUseZeros, int fUseDcs, int fVerbose )
190 {
191  extern DdNode * Abc_NodeConeBdd( DdManager * dd, DdNode ** pbVars, Abc_Obj_t * pNode, Vec_Ptr_t * vFanins, Vec_Ptr_t * vVisited );
192  extern DdNode * Abc_NodeConeDcs( DdManager * dd, DdNode ** pbVarsX, DdNode ** pbVarsY, Vec_Ptr_t * vLeaves, Vec_Ptr_t * vRoots, Vec_Ptr_t * vVisited );
193  extern char * Abc_ConvertBddToSop( Mem_Flex_t * pMan, DdManager * dd, DdNode * bFuncOn, DdNode * bFuncOnDc, int nFanins, int fAllPrimes, Vec_Str_t * vCube, int fMode );
194  extern int Dec_GraphToNetworkCount( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int NodeMax, int LevelMax );
195  int fVeryVerbose = 0;
196  Abc_Obj_t * pFanin;
197  Dec_Graph_t * pFForm;
198  DdNode * bNodeFunc;
199  int nNodesSaved, nNodesAdded, i;
200  abctime clk;
201  char * pSop;
202  int Required;
203 
204  Required = fUpdateLevel? Abc_ObjRequiredLevel(pNode) : ABC_INFINITY;
205 
206  p->nNodesConsidered++;
207 
208  // get the function of the cut
209 clk = Abc_Clock();
210  bNodeFunc = Abc_NodeConeBdd( p->dd, p->dd->vars, pNode, vFanins, p->vVisited ); Cudd_Ref( bNodeFunc );
211 p->timeBdd += Abc_Clock() - clk;
212 
213  // if don't-care are used, transform the function into ISOP
214  if ( fUseDcs )
215  {
216  DdNode * bNodeDc, * bNodeOn, * bNodeOnDc;
217  int nMints, nMintsDc;
218 clk = Abc_Clock();
219  // get the don't-cares
220  bNodeDc = Abc_NodeConeDcs( p->dd, p->dd->vars + vFanins->nSize, p->dd->vars, p->vLeaves, vFanins, p->vVisited ); Cudd_Ref( bNodeDc );
221  nMints = (1 << vFanins->nSize);
222  nMintsDc = (int)Cudd_CountMinterm( p->dd, bNodeDc, vFanins->nSize );
223 // printf( "Percentage of minterms = %5.2f.\n", 100.0 * nMintsDc / nMints );
224  // get the ISF
225  bNodeOn = Cudd_bddAnd( p->dd, bNodeFunc, Cudd_Not(bNodeDc) ); Cudd_Ref( bNodeOn );
226  bNodeOnDc = Cudd_bddOr ( p->dd, bNodeFunc, bNodeDc ); Cudd_Ref( bNodeOnDc );
227  Cudd_RecursiveDeref( p->dd, bNodeFunc );
228  Cudd_RecursiveDeref( p->dd, bNodeDc );
229  // get the ISOP
230  bNodeFunc = Cudd_bddIsop( p->dd, bNodeOn, bNodeOnDc ); Cudd_Ref( bNodeFunc );
231  Cudd_RecursiveDeref( p->dd, bNodeOn );
232  Cudd_RecursiveDeref( p->dd, bNodeOnDc );
233 p->timeDcs += Abc_Clock() - clk;
234  }
235 
236  // always accept the case of constant node
237  if ( Cudd_IsConstant(bNodeFunc) )
238  {
239  p->nLastGain = Abc_NodeMffcSize( pNode );
240  p->nNodesGained += p->nLastGain;
241  p->nNodesRefactored++;
242  Cudd_RecursiveDeref( p->dd, bNodeFunc );
243  if ( Cudd_IsComplement(bNodeFunc) )
244  return Dec_GraphCreateConst0();
245  return Dec_GraphCreateConst1();
246  }
247 
248  // get the SOP of the cut
249 clk = Abc_Clock();
250  pSop = Abc_ConvertBddToSop( NULL, p->dd, bNodeFunc, bNodeFunc, vFanins->nSize, 0, p->vCube, -1 );
251 p->timeSop += Abc_Clock() - clk;
252 
253  // get the factored form
254 clk = Abc_Clock();
255  pFForm = Dec_Factor( pSop );
256  ABC_FREE( pSop );
257 p->timeFact += Abc_Clock() - clk;
258 
259  // mark the fanin boundary
260  // (can mark only essential fanins, belonging to bNodeFunc!)
261  Vec_PtrForEachEntry( Abc_Obj_t *, vFanins, pFanin, i )
262  pFanin->vFanouts.nSize++;
263  // label MFFC with current traversal ID
264  Abc_NtkIncrementTravId( pNode->pNtk );
265  nNodesSaved = Abc_NodeMffcLabelAig( pNode );
266  // unmark the fanin boundary and set the fanins as leaves in the form
267  Vec_PtrForEachEntry( Abc_Obj_t *, vFanins, pFanin, i )
268  {
269  pFanin->vFanouts.nSize--;
270  Dec_GraphNode(pFForm, i)->pFunc = pFanin;
271  }
272 
273  // detect how many new nodes will be added (while taking into account reused nodes)
274 clk = Abc_Clock();
275  nNodesAdded = Dec_GraphToNetworkCount( pNode, pFForm, nNodesSaved, Required );
276 p->timeEval += Abc_Clock() - clk;
277  // quit if there is no improvement
278  if ( nNodesAdded == -1 || (nNodesAdded == nNodesSaved && !fUseZeros) )
279  {
280  Cudd_RecursiveDeref( p->dd, bNodeFunc );
281  Dec_GraphFree( pFForm );
282  return NULL;
283  }
284 
285  // compute the total gain in the number of nodes
286  p->nLastGain = nNodesSaved - nNodesAdded;
287  p->nNodesGained += p->nLastGain;
288  p->nNodesRefactored++;
289 
290  // report the progress
291  if ( fVeryVerbose )
292  {
293  printf( "Node %6s : ", Abc_ObjName(pNode) );
294  printf( "Cone = %2d. ", vFanins->nSize );
295  printf( "BDD = %2d. ", Cudd_DagSize(bNodeFunc) );
296  printf( "FF = %2d. ", 1 + Dec_GraphNodeNum(pFForm) );
297  printf( "MFFC = %2d. ", nNodesSaved );
298  printf( "Add = %2d. ", nNodesAdded );
299  printf( "GAIN = %2d. ", p->nLastGain );
300  printf( "\n" );
301  }
302  Cudd_RecursiveDeref( p->dd, bNodeFunc );
303  return pFForm;
304 }
305 
306 
307 /**Function*************************************************************
308 
309  Synopsis [Starts the resynthesis manager.]
310 
311  Description []
312 
313  SideEffects []
314 
315  SeeAlso []
316 
317 ***********************************************************************/
318 Abc_ManRef_t * Abc_NtkManRefStart( int nNodeSizeMax, int nConeSizeMax, int fUseDcs, int fVerbose )
319 {
320  Abc_ManRef_t * p;
321  p = ABC_ALLOC( Abc_ManRef_t, 1 );
322  memset( p, 0, sizeof(Abc_ManRef_t) );
323  p->vCube = Vec_StrAlloc( 100 );
324  p->vVisited = Vec_PtrAlloc( 100 );
325  p->nNodeSizeMax = nNodeSizeMax;
326  p->nConeSizeMax = nConeSizeMax;
327  p->fVerbose = fVerbose;
328  // start the BDD manager
329  if ( fUseDcs )
330  p->dd = Cudd_Init( p->nNodeSizeMax + p->nConeSizeMax, 0, CUDD_UNIQUE_SLOTS, CUDD_CACHE_SLOTS, 0 );
331  else
332  p->dd = Cudd_Init( p->nNodeSizeMax, 0, CUDD_UNIQUE_SLOTS, CUDD_CACHE_SLOTS, 0 );
333  Cudd_zddVarsFromBddVars( p->dd, 2 );
334  return p;
335 }
336 
337 /**Function*************************************************************
338 
339  Synopsis [Stops the resynthesis manager.]
340 
341  Description []
342 
343  SideEffects []
344 
345  SeeAlso []
346 
347 ***********************************************************************/
349 {
350  Extra_StopManager( p->dd );
351  Vec_PtrFree( p->vVisited );
352  Vec_StrFree( p->vCube );
353  ABC_FREE( p );
354 }
355 
356 /**Function*************************************************************
357 
358  Synopsis [Stops the resynthesis manager.]
359 
360  Description []
361 
362  SideEffects []
363 
364  SeeAlso []
365 
366 ***********************************************************************/
368 {
369  printf( "Refactoring statistics:\n" );
370  printf( "Nodes considered = %8d.\n", p->nNodesConsidered );
371  printf( "Nodes refactored = %8d.\n", p->nNodesRefactored );
372  printf( "Gain = %8d. (%6.2f %%).\n", p->nNodesBeg-p->nNodesEnd, 100.0*(p->nNodesBeg-p->nNodesEnd)/p->nNodesBeg );
373  ABC_PRT( "Cuts ", p->timeCut );
374  ABC_PRT( "Resynthesis", p->timeRes );
375  ABC_PRT( " BDD ", p->timeBdd );
376  ABC_PRT( " DCs ", p->timeDcs );
377  ABC_PRT( " SOP ", p->timeSop );
378  ABC_PRT( " FF ", p->timeFact );
379  ABC_PRT( " Eval ", p->timeEval );
380  ABC_PRT( "AIG update ", p->timeNtk );
381  ABC_PRT( "TOTAL ", p->timeTotal );
382 }
383 
384 
385 ////////////////////////////////////////////////////////////////////////
386 /// END OF FILE ///
387 ////////////////////////////////////////////////////////////////////////
388 
389 
391 
char * memset()
DdNode * Abc_NodeConeBdd(DdManager *dd, DdNode **pbVars, Abc_Obj_t *pRoot, Vec_Ptr_t *vLeaves, Vec_Ptr_t *vVisited)
Definition: abcReconv.c:498
static int Abc_NtkIsStrash(Abc_Ntk_t *pNtk)
Definition: abc.h:251
abctime timeRes
Definition: abcRefactor.c:59
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition: vecPtr.h:42
#define CUDD_UNIQUE_SLOTS
Definition: cudd.h:97
void Cudd_RecursiveDeref(DdManager *table, DdNode *n)
Definition: cuddRef.c:154
double Cudd_CountMinterm(DdManager *manager, DdNode *node, int nvars)
Definition: cuddUtil.c:578
static int Dec_GraphNodeNum(Dec_Graph_t *pGraph)
Definition: dec.h:421
Definition: cudd.h:278
#define Cudd_Not(node)
Definition: cudd.h:367
static int Abc_NtkObjNumMax(Abc_Ntk_t *pNtk)
Definition: abc.h:284
static Llb_Mgr_t * p
Definition: llb3Image.c:950
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition: bblif.c:37
static int Abc_ObjFanoutNum(Abc_Obj_t *pObj)
Definition: abc.h:365
static Dec_Graph_t * Abc_NodeRefactor(Abc_ManRef_t *p, Abc_Obj_t *pNode, Vec_Ptr_t *vFanins, int fUpdateLevel, int fUseZeros, int fUseDcs, int fVerbose)
Definition: abcRefactor.c:189
ABC_DLL Vec_Ptr_t * Abc_NtkManCutReadCutLarge(Abc_ManCut_t *p)
Definition: abcReconv.c:637
#define Cudd_IsConstant(node)
Definition: cudd.h:352
abctime timeCut
Definition: abcRefactor.c:53
DdManager * dd
Definition: abcRefactor.c:40
void Dec_GraphUpdateNetwork(Abc_Obj_t *pRoot, Dec_Graph_t *pGraph, int fUpdateLevel, int nGain)
Definition: decAbc.c:240
#define CUDD_CACHE_SLOTS
Definition: cudd.h:98
#define ABC_ALLOC(type, num)
Definition: abc_global.h:229
ABC_DLL int Abc_NodeMffcLabelAig(Abc_Obj_t *pNode)
Definition: abcRefs.c:100
Dec_Graph_t * Dec_Factor(char *pSop)
FUNCTION DECLARATIONS ///.
Definition: decFactor.c:55
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
Definition: abcCheck.c:61
static Vec_Str_t * Vec_StrAlloc(int nCap)
Definition: bblif.c:495
static abctime Abc_Clock()
Definition: abc_global.h:279
void Extra_StopManager(DdManager *dd)
Definition: extraBddMisc.c:223
int Dec_GraphToNetworkCount(Abc_Obj_t *pRoot, Dec_Graph_t *pGraph, int NodeMax, int LevelMax)
Definition: decAbc.c:167
DECLARATIONS ///.
Definition: abcAig.c:52
static Dec_Graph_t * Dec_GraphCreateConst1()
Definition: dec.h:266
ABC_DLL void Abc_NtkStopReverseLevels(Abc_Ntk_t *pNtk)
Definition: abcTiming.c:1190
ABC_DLL Vec_Ptr_t * Abc_NodeFindCut(Abc_ManCut_t *p, Abc_Obj_t *pRoot, int fContain)
Definition: abcReconv.c:253
ABC_DLL void Abc_NtkReassignIds(Abc_Ntk_t *pNtk)
Definition: abcUtil.c:1769
void * pManFunc
Definition: abc.h:191
abctime timeBdd
Definition: abcRefactor.c:54
static int Abc_NtkNodeNum(Abc_Ntk_t *pNtk)
Definition: abc.h:293
Vec_Ptr_t * vVisited
Definition: abcRefactor.c:43
Vec_Str_t * vCube
Definition: abcRefactor.c:41
DECLARATIONS ///.
#define Cudd_IsComplement(node)
Definition: cudd.h:425
char * Abc_ConvertBddToSop(Mem_Flex_t *pMan, DdManager *dd, DdNode *bFuncOn, DdNode *bFuncOnDc, int nFanins, int fAllPrimes, Vec_Str_t *vCube, int fMode)
Definition: abcFunc.c:209
ABC_DLL int Abc_ObjRequiredLevel(Abc_Obj_t *pObj)
Definition: abcTiming.c:1102
ABC_DLL int Abc_AigCleanup(Abc_Aig_t *pMan)
Definition: abcAig.c:194
static void Vec_StrFree(Vec_Str_t *p)
Definition: bblif.c:616
abctime timeTotal
Definition: abcRefactor.c:61
static Dec_Graph_t * Dec_GraphCreateConst0()
Definition: dec.h:245
#define ABC_NAMESPACE_IMPL_END
Definition: abc_global.h:108
ABC_DLL int Abc_NodeMffcSize(Abc_Obj_t *pNode)
FUNCTION DEFINITIONS ///.
Definition: abcRefs.c:48
DdManager * Cudd_Init(unsigned int numVars, unsigned int numVarsZ, unsigned int numSlots, unsigned int cacheSize, unsigned long maxMemory)
Definition: cuddInit.c:125
int Abc_NtkRefactor(Abc_Ntk_t *pNtk, int nNodeSizeMax, int nConeSizeMax, int fUpdateLevel, int fUseZeros, int fUseDcs, int fVerbose)
FUNCTION DEFINITIONS ///.
Definition: abcRefactor.c:89
abctime timeEval
Definition: abcRefactor.c:58
DdNode * Cudd_bddOr(DdManager *dd, DdNode *f, DdNode *g)
Definition: cuddBddIte.c:381
int nNodesRefactored
Definition: abcRefactor.c:48
ABC_DLL void Abc_NtkStartReverseLevels(Abc_Ntk_t *pNtk, int nMaxLevelIncrease)
Definition: abcTiming.c:1162
void Extra_ProgressBarStop(ProgressBar *p)
DdNode * Abc_NodeConeDcs(DdManager *dd, DdNode **pbVarsX, DdNode **pbVarsY, Vec_Ptr_t *vLeaves, Vec_Ptr_t *vRoots, Vec_Ptr_t *vVisited)
Definition: abcReconv.c:537
#define Abc_NtkForEachNode(pNtk, pNode, i)
Definition: abc.h:461
static int Abc_NodeIsPersistant(Abc_Obj_t *pNode)
Definition: abc.h:401
Vec_Int_t * vForm
Definition: abcRefactor.c:42
#define ABC_NAMESPACE_IMPL_START
Definition: abc_global.h:107
Vec_Int_t vFanouts
Definition: abc.h:144
abctime timeDcs
Definition: abcRefactor.c:55
DdNode * Cudd_bddIsop(DdManager *dd, DdNode *L, DdNode *U)
Definition: cuddZddIsop.c:174
void * pFunc
Definition: dec.h:56
Abc_Ntk_t * pNtk
Definition: abc.h:130
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Definition: vecPtr.h:83
int nNodesConsidered
Definition: abcRefactor.c:47
#define ABC_FREE(obj)
Definition: abc_global.h:232
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
Definition: abcNames.c:48
#define ABC_PRT(a, t)
Definition: abc_global.h:220
abctime timeSop
Definition: abcRefactor.c:56
static void Abc_NtkManRefPrintStats(Abc_ManRef_t *p)
Definition: abcRefactor.c:367
static void Abc_NtkIncrementTravId(Abc_Ntk_t *p)
Definition: abc.h:406
ProgressBar * Extra_ProgressBarStart(FILE *pFile, int nItemsTotal)
FUNCTION DEFINITIONS ///.
static Abc_ManRef_t * Abc_NtkManRefStart(int nNodeSizeMax, int nConeSizeMax, int fUseDcs, int fVerbose)
Definition: abcRefactor.c:318
DdNode * Cudd_bddAnd(DdManager *dd, DdNode *f, DdNode *g)
Definition: cuddBddIte.c:314
abctime timeFact
Definition: abcRefactor.c:57
ABC_DLL Abc_ManCut_t * Abc_NtkManCutStart(int nNodeSizeMax, int nConeSizeMax, int nNodeFanStop, int nConeFanStop)
Definition: abcReconv.c:588
static void Dec_GraphFree(Dec_Graph_t *pGraph)
Definition: dec.h:307
#define ABC_INFINITY
MACRO DEFINITIONS ///.
Definition: abc_global.h:216
int Cudd_zddVarsFromBddVars(DdManager *dd, int multiplicity)
Definition: cuddAPI.c:519
Vec_Ptr_t * vLeaves
Definition: abcRefactor.c:44
#define assert(ex)
Definition: util_old.h:213
static void Extra_ProgressBarUpdate(ProgressBar *p, int nItemsCur, char *pString)
Definition: extra.h:243
abctime timeNtk
Definition: abcRefactor.c:60
ABC_DLL void Abc_NtkManCutStop(Abc_ManCut_t *p)
Definition: abcReconv.c:616
static Dec_Node_t * Dec_GraphNode(Dec_Graph_t *pGraph, int i)
Definition: dec.h:437
void Cudd_Ref(DdNode *n)
Definition: cuddRef.c:129
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
Definition: vecPtr.h:55
ABC_INT64_T abctime
Definition: abc_global.h:278
ABC_DLL int Abc_NtkLevel(Abc_Ntk_t *pNtk)
Definition: abcDfs.c:1265
static void Abc_NtkManRefStop(Abc_ManRef_t *p)
Definition: abcRefactor.c:348
DECLARATIONS ///.
Definition: abcReconv.c:31
typedefABC_NAMESPACE_IMPL_START struct Abc_ManRef_t_ Abc_ManRef_t
DECLARATIONS ///.
Definition: abcRefactor.c:32
int Cudd_DagSize(DdNode *node)
Definition: cuddUtil.c:442
static void Vec_PtrFree(Vec_Ptr_t *p)
Definition: vecPtr.h:223