abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
giaMan.c File Reference
#include "gia.h"
#include "misc/tim/tim.h"
#include "proof/abs/abs.h"
#include "opt/dar/dar.h"

Go to the source code of this file.

Functions

ABC_NAMESPACE_IMPL_START
Gia_Man_t
Gia_ManStart (int nObjsMax)
 DECLARATIONS ///. More...
 
void Gia_ManStop (Gia_Man_t *p)
 
double Gia_ManMemory (Gia_Man_t *p)
 
void Gia_ManStopP (Gia_Man_t **p)
 
void Gia_ManPrintClasses_old (Gia_Man_t *p)
 
void Gia_ManPrintPlacement (Gia_Man_t *p)
 
void Gia_ManPrintTents_rec (Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vObjs)
 
void Gia_ManPrintTents (Gia_Man_t *p)
 
void Gia_ManPrintInitClasses (Vec_Int_t *vInits)
 
void Gia_ManPrintChoiceStats (Gia_Man_t *p)
 
void Gia_ManPrintStats (Gia_Man_t *p, Gps_Par_t *pPars)
 
void Gia_ManPrintStatsShort (Gia_Man_t *p)
 
void Gia_ManPrintMiterStatus (Gia_Man_t *p)
 
void Gia_ManPrintStatsMiter (Gia_Man_t *p, int fVerbose)
 
void Gia_ManSetRegNum (Gia_Man_t *p, int nRegs)
 
void Gia_ManReportImprovement (Gia_Man_t *p, Gia_Man_t *pNew)
 
void Gia_ManPrintNpnClasses (Gia_Man_t *p)
 

Function Documentation

double Gia_ManMemory ( Gia_Man_t p)

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

Synopsis [Returns memory used in megabytes.]

Description []

SideEffects []

SeeAlso []

Definition at line 156 of file giaMan.c.

157 {
158  double Memory = sizeof(Gia_Man_t);
159  Memory += sizeof(Gia_Obj_t) * Gia_ManObjNum(p);
160  Memory += sizeof(int) * Gia_ManCiNum(p);
161  Memory += sizeof(int) * Gia_ManCoNum(p);
162  Memory += sizeof(int) * p->nHTable * (p->pHTable != NULL);
163  return Memory;
164 }
int * pHTable
Definition: gia.h:110
struct Gia_Obj_t_ Gia_Obj_t
Definition: gia.h:74
int nHTable
Definition: gia.h:111
static int Gia_ManCiNum(Gia_Man_t *p)
Definition: gia.h:383
struct Gia_Man_t_ Gia_Man_t
Definition: gia.h:94
static int Gia_ManObjNum(Gia_Man_t *p)
Definition: gia.h:388
static int Gia_ManCoNum(Gia_Man_t *p)
Definition: gia.h:384
void Gia_ManPrintChoiceStats ( Gia_Man_t p)

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

Synopsis [Prints stats for the AIG.]

Description []

SideEffects []

SeeAlso []

Definition at line 359 of file giaMan.c.

360 {
361  Gia_Obj_t * pObj;
362  int i, nEquivs = 0, nChoices = 0;
364  Gia_ManForEachAnd( p, pObj, i )
365  {
366  if ( !Gia_ObjSibl(p, i) )
367  continue;
368  nEquivs++;
369  if ( pObj->fMark0 )
370  nChoices++;
371  assert( !Gia_ObjSiblObj(p, i)->fMark0 );
373  }
374  Abc_Print( 1, "Choice stats: Equivs =%7d. Choices =%7d.\n", nEquivs, nChoices );
375  Gia_ManCleanMark0( p );
376 }
static Gia_Obj_t * Gia_ObjSiblObj(Gia_Man_t *p, int Id)
Definition: gia.h:894
void Gia_ManCleanMark0(Gia_Man_t *p)
Definition: giaUtil.c:215
Definition: gia.h:75
static int Gia_ObjSibl(Gia_Man_t *p, int Id)
Definition: gia.h:893
#define Gia_ManForEachAnd(p, pObj, i)
Definition: gia.h:1002
static void Abc_Print(int level, const char *format,...)
Definition: abc_global.h:313
unsigned fMark0
Definition: gia.h:79
static int Gia_ObjIsAnd(Gia_Obj_t *pObj)
Definition: gia.h:422
#define assert(ex)
Definition: util_old.h:213
void Gia_ManMarkFanoutDrivers(Gia_Man_t *p)
Definition: giaUtil.c:1553
void Gia_ManPrintClasses_old ( Gia_Man_t p)

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

Synopsis [Prints stats for the AIG.]

Description []

SideEffects []

SeeAlso []

Definition at line 196 of file giaMan.c.

197 {
198  Gia_Obj_t * pObj;
199  int i;
200  if ( p->vFlopClasses == NULL )
201  return;
202  Gia_ManForEachRo( p, pObj, i )
203  Abc_Print( 1, "%d", Vec_IntEntry(p->vFlopClasses, i) );
204  Abc_Print( 1, "\n" );
205 
206  {
207  Gia_Man_t * pTemp;
208  pTemp = Gia_ManDupFlopClass( p, 1 );
209  Gia_AigerWrite( pTemp, "dom1.aig", 0, 0 );
210  Gia_ManStop( pTemp );
211  pTemp = Gia_ManDupFlopClass( p, 2 );
212  Gia_AigerWrite( pTemp, "dom2.aig", 0, 0 );
213  Gia_ManStop( pTemp );
214  }
215 }
Vec_Int_t * vFlopClasses
Definition: gia.h:140
Gia_Man_t * Gia_ManDupFlopClass(Gia_Man_t *p, int iClass)
Definition: giaDup.c:930
Definition: gia.h:75
void Gia_ManStop(Gia_Man_t *p)
Definition: giaMan.c:77
static int Vec_IntEntry(Vec_Int_t *p, int i)
Definition: bblif.c:268
static void Abc_Print(int level, const char *format,...)
Definition: abc_global.h:313
void Gia_AigerWrite(Gia_Man_t *p, char *pFileName, int fWriteSymbols, int fCompact)
Definition: giaAiger.c:1024
Definition: gia.h:95
#define Gia_ManForEachRo(p, pObj, i)
Definition: gia.h:1038
void Gia_ManPrintInitClasses ( Vec_Int_t vInits)

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

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 314 of file giaMan.c.

315 {
316  int i, Value;
317  int Counts[6] = {0};
318  Vec_IntForEachEntry( vInits, Value, i )
319  Counts[Value]++;
320  for ( i = 0; i < 6; i++ )
321  if ( Counts[i] )
322  printf( "%d = %d ", i, Counts[i] );
323  printf( " " );
324  printf( "B = %d ", Counts[0] + Counts[1] );
325  printf( "X = %d ", Counts[2] + Counts[3] );
326  printf( "Q = %d\n", Counts[4] + Counts[5] );
327  Vec_IntForEachEntry( vInits, Value, i )
328  {
329  Counts[Value]++;
330  if ( Value == 0 )
331  printf( "0" );
332  else if ( Value == 1 )
333  printf( "1" );
334  else if ( Value == 2 )
335  printf( "2" );
336  else if ( Value == 3 )
337  printf( "3" );
338  else if ( Value == 4 )
339  printf( "4" );
340  else if ( Value == 5 )
341  printf( "5" );
342  else assert( 0 );
343  }
344  printf( "\n" );
345 
346 }
for(p=first;p->value< newval;p=p->next)
if(last==0)
Definition: sparse_int.h:34
#define assert(ex)
Definition: util_old.h:213
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
Definition: vecInt.h:54
void Gia_ManPrintMiterStatus ( Gia_Man_t p)

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

Synopsis [Prints stats for the AIG.]

Description []

SideEffects []

SeeAlso []

Definition at line 543 of file giaMan.c.

544 {
545  Gia_Obj_t * pObj, * pChild;
546  int i, nSat = 0, nUnsat = 0, nUndec = 0, iOut = -1;
547  Gia_ManForEachPo( p, pObj, i )
548  {
549  pChild = Gia_ObjChild0(pObj);
550  // check if the output is constant 0
551  if ( pChild == Gia_ManConst0(p) )
552  nUnsat++;
553  // check if the output is constant 1
554  else if ( pChild == Gia_ManConst1(p) )
555  {
556  nSat++;
557  if ( iOut == -1 )
558  iOut = i;
559  }
560  // check if the output is a primary input
561  else if ( Gia_ObjIsPi(p, Gia_Regular(pChild)) )
562  {
563  nSat++;
564  if ( iOut == -1 )
565  iOut = i;
566  }
567 /*
568  // check if the output is 1 for the 0000 pattern
569  else if ( Gia_Regular(pChild)->fPhase != (unsigned)Gia_IsComplement(pChild) )
570  {
571  nSat++;
572  if ( iOut == -1 )
573  iOut = i;
574  }
575 */
576  else
577  nUndec++;
578  }
579  Abc_Print( 1, "Outputs = %7d. Unsat = %7d. Sat = %7d. Undec = %7d.\n",
580  Gia_ManPoNum(p), nUnsat, nSat, nUndec );
581 }
static Gia_Obj_t * Gia_ObjChild0(Gia_Obj_t *pObj)
Definition: gia.h:457
static int Gia_ManPoNum(Gia_Man_t *p)
Definition: gia.h:386
static Gia_Obj_t * Gia_Regular(Gia_Obj_t *p)
Definition: gia.h:377
Definition: gia.h:75
static Gia_Obj_t * Gia_ManConst1(Gia_Man_t *p)
Definition: gia.h:401
static void Abc_Print(int level, const char *format,...)
Definition: abc_global.h:313
static Gia_Obj_t * Gia_ManConst0(Gia_Man_t *p)
Definition: gia.h:400
#define Gia_ManForEachPo(p, pObj, i)
Definition: gia.h:1036
static int Gia_ObjIsPi(Gia_Man_t *p, Gia_Obj_t *pObj)
Definition: gia.h:441
void Gia_ManPrintNpnClasses ( Gia_Man_t p)

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

Synopsis [Prints NPN class statistics.]

Description []

SideEffects []

SeeAlso []

Definition at line 668 of file giaMan.c.

669 {
670  extern char ** Kit_DsdNpn4ClassNames();
671  char ** pNames = Kit_DsdNpn4ClassNames();
672  Vec_Int_t * vLeaves, * vTruth, * vVisited;
673  int * pLutClass, ClassCounts[222] = {0};
674  int i, k, iFan, Class, OtherClasses, OtherClasses2, nTotal, Counter, Counter2;
675  unsigned * pTruth;
677  assert( Gia_ManLutSizeMax( p ) <= 4 );
678  vLeaves = Vec_IntAlloc( 100 );
679  vVisited = Vec_IntAlloc( 100 );
680  vTruth = Vec_IntAlloc( (1<<16) );
681  pLutClass = ABC_CALLOC( int, Gia_ManObjNum(p) );
682  Gia_ManCleanTruth( p );
683  Gia_ManForEachLut( p, i )
684  {
685  if ( Gia_ObjLutSize(p,i) > 4 )
686  continue;
687  Vec_IntClear( vLeaves );
688  Gia_LutForEachFanin( p, i, iFan, k )
689  Vec_IntPush( vLeaves, iFan );
690  for ( ; k < 4; k++ )
691  Vec_IntPush( vLeaves, 0 );
692  pTruth = Gia_ManConvertAigToTruth( p, Gia_ManObj(p, i), vLeaves, vTruth, vVisited );
693  Class = Dar_LibReturnClass( *pTruth );
694  ClassCounts[ Class ]++;
695  pLutClass[i] = Class;
696  }
697  Vec_IntFree( vLeaves );
698  Vec_IntFree( vTruth );
699  Vec_IntFree( vVisited );
700  Vec_IntFreeP( &p->vTruths );
701  nTotal = 0;
702  for ( i = 0; i < 222; i++ )
703  nTotal += ClassCounts[i];
704  Abc_Print( 1, "NPN CLASS STATISTICS (for %d LUT4 present in the current mapping):\n", nTotal );
705  OtherClasses = 0;
706  for ( i = 0; i < 222; i++ )
707  {
708  if ( ClassCounts[i] == 0 )
709  continue;
710 // if ( 100.0 * ClassCounts[i] / (nTotal+1) < 0.1 ) // do not show anything below 0.1 percent
711 // continue;
712  OtherClasses += ClassCounts[i];
713  Abc_Print( 1, "Class %3d : Count = %6d (%7.2f %%) %s\n",
714  i, ClassCounts[i], 100.0 * ClassCounts[i] / (nTotal+1), pNames[i] );
715  }
716  OtherClasses = nTotal - OtherClasses;
717  Abc_Print( 1, "Other : Count = %6d (%7.2f %%)\n",
718  OtherClasses, 100.0 * OtherClasses / (nTotal+1) );
719  // count the number of LUTs that have MUX function and two fanins with MUX functions
720  OtherClasses = OtherClasses2 = 0;
721  ABC_FREE( p->pRefs );
723  Gia_ManForEachLut( p, i )
724  {
725  if ( pLutClass[i] != 109 )
726  continue;
727  Counter = Counter2 = 0;
728  Gia_LutForEachFanin( p, i, iFan, k )
729  {
730  Counter += (pLutClass[iFan] == 109);
731  Counter2 += (pLutClass[iFan] == 109) && (Gia_ObjRefNumId(p, iFan) == 1);
732  }
733  OtherClasses += (Counter > 1);
734  OtherClasses2 += (Counter2 > 1);
735 // Abc_Print( 1, "%d -- ", pLutClass[i] );
736 // Gia_LutForEachFanin( p, i, iFan, k )
737 // Abc_Print( 1, "%d ", pLutClass[iFan] );
738 // Abc_Print( 1, "\n" );
739  }
740  ABC_FREE( p->pRefs );
741  Abc_Print( 1, "Approximate number of 4:1 MUX structures: All = %6d (%7.2f %%) MFFC = %6d (%7.2f %%)\n",
742  OtherClasses, 100.0 * OtherClasses / (nTotal+1),
743  OtherClasses2, 100.0 * OtherClasses2 / (nTotal+1) );
744  ABC_FREE( pLutClass );
745 }
char ** Kit_DsdNpn4ClassNames()
Definition: kitDsd.c:3048
void Gia_ManSetRefsMapped(Gia_Man_t *p)
Definition: giaIf.c:245
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition: bblif.c:37
static int Gia_ObjRefNumId(Gia_Man_t *p, int Id)
Definition: gia.h:518
int Dar_LibReturnClass(unsigned uTruth)
Definition: darLib.c:194
void Gia_ManCleanTruth(Gia_Man_t *p)
Definition: giaUtil.c:487
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
Definition: gia.h:402
for(p=first;p->value< newval;p=p->next)
#define Gia_ManForEachLut(p, i)
Definition: gia.h:968
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Definition: bblif.c:149
static int Gia_ObjLutSize(Gia_Man_t *p, int Id)
Definition: gia.h:953
unsigned * Gia_ManConvertAigToTruth(Gia_Man_t *p, Gia_Obj_t *pRoot, Vec_Int_t *vLeaves, Vec_Int_t *vTruth, Vec_Int_t *vVisited)
Definition: giaBidec.c:90
static void Vec_IntPush(Vec_Int_t *p, int Entry)
Definition: bblif.c:468
static int Counter
int Gia_ManLutSizeMax(Gia_Man_t *p)
Definition: giaIf.c:125
static void Vec_IntFreeP(Vec_Int_t **p)
Definition: vecInt.h:289
static void Abc_Print(int level, const char *format,...)
Definition: abc_global.h:313
static int Gia_ManHasMapping(Gia_Man_t *p)
Definition: gia.h:951
#define ABC_FREE(obj)
Definition: abc_global.h:232
#define ABC_CALLOC(type, num)
Definition: abc_global.h:230
#define assert(ex)
Definition: util_old.h:213
static void Vec_IntFree(Vec_Int_t *p)
Definition: bblif.c:235
static void Vec_IntClear(Vec_Int_t *p)
Definition: bblif.c:452
#define Gia_LutForEachFanin(p, i, iFan, k)
Definition: gia.h:970
static int Gia_ManObjNum(Gia_Man_t *p)
Definition: gia.h:388
int nTotal
DECLARATIONS ///.
Definition: cutTruth.c:37
void Gia_ManPrintPlacement ( Gia_Man_t p)

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

Synopsis [Prints stats for the AIG.]

Description []

SideEffects []

SeeAlso []

Definition at line 228 of file giaMan.c.

229 {
230  int i, nFixed = 0, nUndef = 0;
231  if ( p->pPlacement == NULL )
232  return;
233  for ( i = 0; i < Gia_ManObjNum(p); i++ )
234  {
235  nFixed += p->pPlacement[i].fFixed;
236  nUndef += p->pPlacement[i].fUndef;
237  }
238  Abc_Print( 1, "Placement: Objects = %8d. Fixed = %8d. Undef = %8d.\n", Gia_ManObjNum(p), nFixed, nUndef );
239 }
unsigned fFixed
Definition: gia.h:68
static void Abc_Print(int level, const char *format,...)
Definition: abc_global.h:313
unsigned fUndef
Definition: gia.h:70
Gia_Plc_t * pPlacement
Definition: gia.h:148
static int Gia_ManObjNum(Gia_Man_t *p)
Definition: gia.h:388
void Gia_ManPrintStats ( Gia_Man_t p,
Gps_Par_t pPars 
)

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

Synopsis [Prints stats for the AIG.]

Description []

SideEffects []

SeeAlso []

Definition at line 389 of file giaMan.c.

390 {
391  extern float Gia_ManLevelAve( Gia_Man_t * p );
392  if ( pPars && pPars->fMiter )
393  {
394  Gia_ManPrintStatsMiter( p, 0 );
395  return;
396  }
397 #ifdef WIN32
398  SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), 15 ); // bright
399  if ( p->pName )
400  Abc_Print( 1, "%-8s : ", p->pName );
401  SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), 7 ); // normal
402 #else
403  if ( p->pName )
404  Abc_Print( 1, "%s%-8s%s : ", "\033[1;37m", p->pName, "\033[0m" ); // bright
405 #endif
406  Abc_Print( 1, "i/o =%7d/%7d",
409  if ( Gia_ManConstrNum(p) )
410  Abc_Print( 1, "(c=%d)", Gia_ManConstrNum(p) );
411  if ( Gia_ManRegNum(p) )
412  Abc_Print( 1, " ff =%7d", Gia_ManRegNum(p) );
413  if ( Gia_ManRegBoxNum(p) )
414  Abc_Print( 1, " boxff =%d(%d)", Gia_ManRegBoxNum(p), Gia_ManClockDomainNum(p) );
415 
416 #ifdef WIN32
417  {
418  HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
419  SetConsoleTextAttribute( hConsole, 11 ); // blue
420  Abc_Print( 1, " %s =%8d", p->pMuxes? "nod" : "and", Gia_ManAndNum(p) );
421  SetConsoleTextAttribute( hConsole, 13 ); // magenta
422  Abc_Print( 1, " lev =%5d", Gia_ManLevelNum(p) );
423  Abc_Print( 1, " (%.2f)", Gia_ManLevelAve(p) );
424  SetConsoleTextAttribute( hConsole, 7 ); // normal
425  }
426 #else
427  Abc_Print( 1, " %s%s =%8d%s", "\033[1;36m", p->pMuxes? "nod" : "and", Gia_ManAndNum(p), "\033[0m" ); // blue
428  Abc_Print( 1, " %slev =%5d%s", "\033[1;35m", Gia_ManLevelNum(p), "\033[0m" ); // magenta
429  Abc_Print( 1, " %s(%.2f)%s", "\033[1;35m", Gia_ManLevelAve(p), "\033[0m" );
430 #endif
431  Vec_IntFreeP( &p->vLevels );
432  if ( pPars && pPars->fCut )
433  Abc_Print( 1, " cut = %d(%d)", Gia_ManCrossCut(p, 0), Gia_ManCrossCut(p, 1) );
434  Abc_Print( 1, " mem =%5.2f MB", Gia_ManMemory(p)/(1<<20) );
435  if ( Gia_ManHasChoices(p) )
436  Abc_Print( 1, " ch =%5d", Gia_ManChoiceNum(p) );
437  if ( p->pManTime )
438  Abc_Print( 1, " box = %d", Gia_ManNonRegBoxNum(p) );
439  if ( Gia_ManBufNum(p) )
440  Abc_Print( 1, " buf = %d", Gia_ManBufNum(p) );
441  if ( pPars && pPars->fMuxXor )
442  printf( "\nXOR/MUX " ), Gia_ManPrintMuxStats( p );
443  if ( pPars && pPars->fSwitch )
444  {
445  static int nPiPo = 0;
446  static float PrevSwiTotal = 0;
447  float SwiTotal = Gia_ManComputeSwitching( p, 48, 16, 0 );
448  Abc_Print( 1, " power =%8.1f", SwiTotal );
449  if ( PrevSwiTotal > 0 && nPiPo == Gia_ManCiNum(p) + Gia_ManCoNum(p) )
450  Abc_Print( 1, " %6.2f %%", 100.0*(PrevSwiTotal-SwiTotal)/PrevSwiTotal );
451  else if ( PrevSwiTotal == 0 || nPiPo != Gia_ManCiNum(p) + Gia_ManCoNum(p) )
452  PrevSwiTotal = SwiTotal, nPiPo = Gia_ManCiNum(p) + Gia_ManCoNum(p);
453  }
454 // Abc_Print( 1, "obj =%5d ", Gia_ManObjNum(p) );
455  Abc_Print( 1, "\n" );
456 
457 // Gia_ManSatExperiment( p );
458  if ( p->pReprs && p->pNexts )
459  Gia_ManEquivPrintClasses( p, 0, 0.0 );
460  if ( Gia_ManHasMapping(p) && (pPars == NULL || !pPars->fSkipMap) )
461  Gia_ManPrintMappingStats( p, pPars ? pPars->pDumpFile : NULL );
462  if ( pPars && pPars->fNpn && Gia_ManHasMapping(p) && Gia_ManLutSizeMax(p) <= 4 )
464  if ( p->vPacking )
466  if ( pPars && pPars->fLutProf && Gia_ManHasMapping(p) )
468  if ( p->pPlacement )
470 // if ( p->pManTime )
471 // Tim_ManPrintStats( (Tim_Man_t *)p->pManTime, p->nAnd2Delay );
475 // if ( p->vRegClasses )
476 // {
477 // printf( "The design has %d flops with the following class info: ", Vec_IntSize(p->vRegClasses) );
478 // Vec_IntPrint( p->vRegClasses );
479 // }
480  if ( p->vInitClasses )
482  // check integrity of boxes
484 /*
485  if ( Gia_ManRegBoxNum(p) )
486  {
487  int i, Limit = Vec_IntFindMax(p->vRegClasses);
488  for ( i = 1; i <= Limit; i++ )
489  printf( "%d ", Vec_IntCountEntry(p->vRegClasses, i) );
490  printf( "\n" );
491  }
492 */
493  if ( pPars && pPars->fTents )
494  {
495 /*
496  int k, Entry, Prev = 1;
497  Vec_Int_t * vLimit = Vec_IntAlloc( 1000 );
498  Gia_Man_t * pNew = Gia_ManUnrollDup( p, vLimit );
499  Abc_Print( 1, "Tents: " );
500  Vec_IntForEachEntryStart( vLimit, Entry, k, 1 )
501  Abc_Print( 1, "%d=%d ", k, Entry-Prev ), Prev = Entry;
502  Abc_Print( 1, " Unused=%d.", Gia_ManObjNum(p) - Gia_ManObjNum(pNew) );
503  Abc_Print( 1, "\n" );
504  Vec_IntFree( vLimit );
505  Gia_ManStop( pNew );
506 */
507  Gia_ManPrintTents( p );
508  }
509 }
int fCut
Definition: gia.h:199
float Gia_ManComputeSwitching(Gia_Man_t *p, int nFrames, int nPref, int fProbOne)
Definition: giaSwitch.c:781
double Gia_ManMemory(Gia_Man_t *p)
Definition: giaMan.c:156
int Gia_ManCrossCut(Gia_Man_t *p, int fReverse)
Definition: giaUtil.c:820
void Gia_ManPrintFlopClasses(Gia_Man_t *p)
Definition: absDup.c:301
int * pNexts
Definition: gia.h:122
static int Gia_ManPoNum(Gia_Man_t *p)
Definition: gia.h:386
static int Gia_ManChoiceNum(Gia_Man_t *p)
Definition: gia.h:398
int Gia_ManRegBoxNum(Gia_Man_t *p)
Definition: giaTim.c:53
int fLutProf
Definition: gia.h:201
static int Gia_ManConstrNum(Gia_Man_t *p)
Definition: gia.h:395
void Gia_ManCheckIntegrityWithBoxes(Gia_Man_t *p)
Definition: giaSweep.c:406
unsigned * pMuxes
Definition: gia.h:104
Vec_Int_t * vPacking
Definition: gia.h:133
void Gia_ManPrintMappingStats(Gia_Man_t *p, char *pDumpFile)
Definition: giaIf.c:423
char * pDumpFile
Definition: gia.h:205
Vec_Int_t * vInitClasses
Definition: gia.h:143
void Gia_ManEquivPrintClasses(Gia_Man_t *p, int fVerbose, float Mem)
Definition: giaEquiv.c:304
static int Gia_ManHasChoices(Gia_Man_t *p)
Definition: gia.h:397
void Gia_ManPrintStatsMiter(Gia_Man_t *p, int fVerbose)
Definition: giaMan.c:594
static int Gia_ManAndNum(Gia_Man_t *p)
Definition: gia.h:389
float Gia_ManLevelAve(Gia_Man_t *p)
Definition: giaUtil.c:525
char * pName
Definition: gia.h:97
void Gia_ManPrintNpnClasses(Gia_Man_t *p)
Definition: giaMan.c:668
void Gia_ManPrintGateClasses(Gia_Man_t *p)
Definition: absDup.c:331
void Gia_ManPrintPackingStats(Gia_Man_t *p)
Definition: giaIf.c:553
int fTents
Definition: gia.h:197
int Gia_ManBoxCiNum(Gia_Man_t *p)
Definition: giaTim.c:61
void * pManTime
Definition: gia.h:165
int Gia_ManBoxCoNum(Gia_Man_t *p)
Definition: giaTim.c:65
void Gia_ManPrintObjClasses(Gia_Man_t *p)
Definition: absDup.c:367
int Gia_ManLutSizeMax(Gia_Man_t *p)
Definition: giaIf.c:125
static void Vec_IntFreeP(Vec_Int_t **p)
Definition: vecInt.h:289
int fNpn
Definition: gia.h:200
static void Abc_Print(int level, const char *format,...)
Definition: abc_global.h:313
void Gia_ManPrintTents(Gia_Man_t *p)
Definition: giaMan.c:265
void Gia_ManPrintMuxStats(Gia_Man_t *p)
Definition: giaMuxes.c:61
void Gia_ManPrintInitClasses(Vec_Int_t *vInits)
Definition: giaMan.c:314
int Gia_ManNonRegBoxNum(Gia_Man_t *p)
Definition: giaTim.c:57
int fMuxXor
Definition: gia.h:202
static int Gia_ManCiNum(Gia_Man_t *p)
Definition: gia.h:383
static int Gia_ManHasMapping(Gia_Man_t *p)
Definition: gia.h:951
Definition: gia.h:95
static int Gia_ManBufNum(Gia_Man_t *p)
Definition: gia.h:392
int fSwitch
Definition: gia.h:198
int fSkipMap
Definition: gia.h:204
Gia_Plc_t * pPlacement
Definition: gia.h:148
int fMiter
Definition: gia.h:203
void Gia_ManPrintPlacement(Gia_Man_t *p)
Definition: giaMan.c:228
Gia_Rpr_t * pReprs
Definition: gia.h:121
int Gia_ManLevelNum(Gia_Man_t *p)
Definition: giaUtil.c:505
Vec_Int_t * vLevels
Definition: gia.h:115
void Gia_ManPrintLutStats(Gia_Man_t *p)
Definition: giaIf.c:613
static int Gia_ManPiNum(Gia_Man_t *p)
Definition: gia.h:385
int Gia_ManClockDomainNum(Gia_Man_t *p)
Definition: giaTim.c:69
static int Gia_ManCoNum(Gia_Man_t *p)
Definition: gia.h:384
static int Gia_ManRegNum(Gia_Man_t *p)
Definition: gia.h:387
void Gia_ManPrintStatsMiter ( Gia_Man_t p,
int  fVerbose 
)

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

Synopsis [Statistics of the miter.]

Description []

SideEffects []

SeeAlso []

Definition at line 594 of file giaMan.c.

595 {
596  Gia_Obj_t * pObj;
597  Vec_Flt_t * vProb;
598  int i, iObjId;
599  Gia_ManLevelNum( p );
600  Gia_ManCreateRefs( p );
601  vProb = Gia_ManPrintOutputProb( p );
602  printf( "Statistics for each outputs of the miter:\n" );
603  Gia_ManForEachPo( p, pObj, i )
604  {
605  iObjId = Gia_ObjId(p, pObj);
606  printf( "%4d : ", i );
607  printf( "Level = %5d ", Gia_ObjLevelId(p, iObjId) );
608  printf( "Supp = %5d ", Gia_ManSuppSize(p, &iObjId, 1) );
609  printf( "Cone = %5d ", Gia_ManConeSize(p, &iObjId, 1) );
610  printf( "Mffc = %5d ", Gia_NodeMffcSize(p, Gia_ObjFanin0(pObj)) );
611  printf( "Prob = %8.4f ", Vec_FltEntry(vProb, iObjId) );
612  printf( "\n" );
613  }
614  Vec_FltFree( vProb );
615 }
static int Gia_ObjLevelId(Gia_Man_t *p, int Id)
Definition: gia.h:500
void Gia_ManCreateRefs(Gia_Man_t *p)
Definition: giaUtil.c:715
int Gia_ManSuppSize(Gia_Man_t *p, int *pNodes, int nNodes)
Definition: giaDfs.c:300
static void Vec_FltFree(Vec_Flt_t *p)
Definition: vecFlt.h:218
Definition: gia.h:75
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
Definition: gia.h:454
static int Gia_ObjId(Gia_Man_t *p, Gia_Obj_t *pObj)
Definition: gia.h:410
int Gia_ManConeSize(Gia_Man_t *p, int *pNodes, int nNodes)
Definition: giaDfs.c:351
Vec_Flt_t * Gia_ManPrintOutputProb(Gia_Man_t *p)
Definition: giaSwitch.c:813
typedefABC_NAMESPACE_HEADER_START struct Vec_Flt_t_ Vec_Flt_t
INCLUDES ///.
Definition: vecFlt.h:42
int Gia_NodeMffcSize(Gia_Man_t *p, Gia_Obj_t *pNode)
Definition: giaUtil.c:1132
int Gia_ManLevelNum(Gia_Man_t *p)
Definition: giaUtil.c:505
static float Vec_FltEntry(Vec_Flt_t *p, int i)
Definition: vecFlt.h:342
#define Gia_ManForEachPo(p, pObj, i)
Definition: gia.h:1036
void Gia_ManPrintStatsShort ( Gia_Man_t p)

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

Synopsis [Prints stats for the AIG.]

Description []

SideEffects []

SeeAlso []

Definition at line 522 of file giaMan.c.

523 {
524  Abc_Print( 1, "i/o =%7d/%7d ", Gia_ManPiNum(p), Gia_ManPoNum(p) );
525  Abc_Print( 1, "ff =%7d ", Gia_ManRegNum(p) );
526  Abc_Print( 1, "and =%8d ", Gia_ManAndNum(p) );
527  Abc_Print( 1, "lev =%5d ", Gia_ManLevelNum(p) );
528 // Abc_Print( 1, "mem =%5.2f MB", 12.0*Gia_ManObjNum(p)/(1<<20) );
529  Abc_Print( 1, "\n" );
530 }
static int Gia_ManPoNum(Gia_Man_t *p)
Definition: gia.h:386
static int Gia_ManAndNum(Gia_Man_t *p)
Definition: gia.h:389
static void Abc_Print(int level, const char *format,...)
Definition: abc_global.h:313
int Gia_ManLevelNum(Gia_Man_t *p)
Definition: giaUtil.c:505
static int Gia_ManPiNum(Gia_Man_t *p)
Definition: gia.h:385
static int Gia_ManRegNum(Gia_Man_t *p)
Definition: gia.h:387
void Gia_ManPrintTents ( Gia_Man_t p)

Definition at line 265 of file giaMan.c.

266 {
267  Vec_Int_t * vObjs;
268  Gia_Obj_t * pObj;
269  int t, i, iObjId, nSizePrev, nSizeCurr;
270  assert( Gia_ManPoNum(p) > 0 );
271  vObjs = Vec_IntAlloc( 100 );
272  // save constant class
275  Vec_IntPush( vObjs, 0 );
276  // create starting root
277  nSizePrev = Vec_IntSize(vObjs);
278  Gia_ManForEachPo( p, pObj, i )
279  Gia_ManPrintTents_rec( p, pObj, vObjs );
280  // build tents
281  Abc_Print( 1, "Tents: " );
282  for ( t = 1; nSizePrev < Vec_IntSize(vObjs); t++ )
283  {
284  int nPis = 0;
285  nSizeCurr = Vec_IntSize(vObjs);
286  Vec_IntForEachEntryStartStop( vObjs, iObjId, i, nSizePrev, nSizeCurr )
287  {
288  nPis += Gia_ObjIsPi(p, Gia_ManObj(p, iObjId));
289  if ( Gia_ObjIsRo(p, Gia_ManObj(p, iObjId)) )
290  Gia_ManPrintTents_rec( p, Gia_ObjRoToRi(p, Gia_ManObj(p, iObjId)), vObjs );
291  }
292  Abc_Print( 1, "%d=%d(%d) ", t, nSizeCurr - nSizePrev, nPis );
293  nSizePrev = nSizeCurr;
294  }
295  Abc_Print( 1, " Unused=%d\n", Gia_ManObjNum(p) - Vec_IntSize(vObjs) );
296  Vec_IntFree( vObjs );
297  // the remaining objects are PIs without fanout
298 // Gia_ManForEachObj( p, pObj, i )
299 // if ( !Gia_ObjIsTravIdCurrent(p, pObj) )
300 // Gia_ObjPrint( p, pObj );
301 }
static int Gia_ManPoNum(Gia_Man_t *p)
Definition: gia.h:386
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition: bblif.c:37
void Gia_ManPrintTents_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vObjs)
Definition: giaMan.c:253
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
Definition: gia.h:402
for(p=first;p->value< newval;p=p->next)
Definition: gia.h:75
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Definition: bblif.c:149
static int Gia_ObjIsRo(Gia_Man_t *p, Gia_Obj_t *pObj)
Definition: gia.h:443
static Gia_Obj_t * Gia_ObjRoToRi(Gia_Man_t *p, Gia_Obj_t *pObj)
Definition: gia.h:446
static void Gia_ObjSetTravIdCurrent(Gia_Man_t *p, Gia_Obj_t *pObj)
Definition: gia.h:531
static void Vec_IntPush(Vec_Int_t *p, int Entry)
Definition: bblif.c:468
static void Abc_Print(int level, const char *format,...)
Definition: abc_global.h:313
static int Vec_IntSize(Vec_Int_t *p)
Definition: bblif.c:252
static Gia_Obj_t * Gia_ManConst0(Gia_Man_t *p)
Definition: gia.h:400
#define assert(ex)
Definition: util_old.h:213
#define Vec_IntForEachEntryStartStop(vVec, Entry, i, Start, Stop)
Definition: vecInt.h:60
void Gia_ManIncrementTravId(Gia_Man_t *p)
Definition: giaUtil.c:149
static void Vec_IntFree(Vec_Int_t *p)
Definition: bblif.c:235
#define Gia_ManForEachPo(p, pObj, i)
Definition: gia.h:1036
static int Gia_ManObjNum(Gia_Man_t *p)
Definition: gia.h:388
static int Gia_ObjIsPi(Gia_Man_t *p, Gia_Obj_t *pObj)
Definition: gia.h:441
void Gia_ManPrintTents_rec ( Gia_Man_t p,
Gia_Obj_t pObj,
Vec_Int_t vObjs 
)

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

Synopsis [Duplicates AIG for unrolling.]

Description []

SideEffects []

SeeAlso []

Definition at line 253 of file giaMan.c.

254 {
255  if ( Gia_ObjIsTravIdCurrent(p, pObj) )
256  return;
257  Gia_ObjSetTravIdCurrent(p, pObj);
258  Vec_IntPush( vObjs, Gia_ObjId(p, pObj) );
259  if ( Gia_ObjIsCi(pObj) )
260  return;
261  Gia_ManPrintTents_rec( p, Gia_ObjFanin0(pObj), vObjs );
262  if ( Gia_ObjIsAnd(pObj) )
263  Gia_ManPrintTents_rec( p, Gia_ObjFanin1(pObj), vObjs );
264 }
static int Gia_ObjIsTravIdCurrent(Gia_Man_t *p, Gia_Obj_t *pObj)
Definition: gia.h:533
void Gia_ManPrintTents_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vObjs)
Definition: giaMan.c:253
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
Definition: gia.h:454
static void Gia_ObjSetTravIdCurrent(Gia_Man_t *p, Gia_Obj_t *pObj)
Definition: gia.h:531
static void Vec_IntPush(Vec_Int_t *p, int Entry)
Definition: bblif.c:468
static int Gia_ObjId(Gia_Man_t *p, Gia_Obj_t *pObj)
Definition: gia.h:410
static int Gia_ObjIsAnd(Gia_Obj_t *pObj)
Definition: gia.h:422
static Gia_Obj_t * Gia_ObjFanin1(Gia_Obj_t *pObj)
Definition: gia.h:455
static int Gia_ObjIsCi(Gia_Obj_t *pObj)
Definition: gia.h:420
void Gia_ManReportImprovement ( Gia_Man_t p,
Gia_Man_t pNew 
)

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

Synopsis [Reports the reduction of the AIG.]

Description []

SideEffects []

SeeAlso []

Definition at line 646 of file giaMan.c.

647 {
648  Abc_Print( 1, "REG: Beg = %5d. End = %5d. (R =%5.1f %%) ",
649  Gia_ManRegNum(p), Gia_ManRegNum(pNew),
650  Gia_ManRegNum(p)? 100.0*(Gia_ManRegNum(p)-Gia_ManRegNum(pNew))/Gia_ManRegNum(p) : 0.0 );
651  Abc_Print( 1, "AND: Beg = %6d. End = %6d. (R =%5.1f %%)",
652  Gia_ManAndNum(p), Gia_ManAndNum(pNew),
653  Gia_ManAndNum(p)? 100.0*(Gia_ManAndNum(p)-Gia_ManAndNum(pNew))/Gia_ManAndNum(p) : 0.0 );
654  Abc_Print( 1, "\n" );
655 }
static int Gia_ManAndNum(Gia_Man_t *p)
Definition: gia.h:389
static void Abc_Print(int level, const char *format,...)
Definition: abc_global.h:313
static int Gia_ManRegNum(Gia_Man_t *p)
Definition: gia.h:387
void Gia_ManSetRegNum ( Gia_Man_t p,
int  nRegs 
)

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

Synopsis [Prints stats for the AIG.]

Description []

SideEffects []

SeeAlso []

Definition at line 628 of file giaMan.c.

629 {
630  assert( p->nRegs == 0 );
631  p->nRegs = nRegs;
632 }
int nRegs
Definition: gia.h:99
#define assert(ex)
Definition: util_old.h:213
ABC_NAMESPACE_IMPL_START Gia_Man_t* Gia_ManStart ( int  nObjsMax)

DECLARATIONS ///.

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

FileName [giaMan.c]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Scalable AIG package.]

Synopsis [Package manager.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

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

Revision [

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

]FUNCTION DEFINITIONS /// Function*************************************************************

Synopsis [Creates AIG.]

Description []

SideEffects []

SeeAlso []

Definition at line 52 of file giaMan.c.

53 {
54  Gia_Man_t * p;
55  assert( nObjsMax > 0 );
56  p = ABC_CALLOC( Gia_Man_t, 1 );
57  p->nObjsAlloc = nObjsMax;
58  p->pObjs = ABC_CALLOC( Gia_Obj_t, nObjsMax );
59  p->pObjs->iDiff0 = p->pObjs->iDiff1 = GIA_NONE;
60  p->nObjs = 1;
61  p->vCis = Vec_IntAlloc( nObjsMax / 20 );
62  p->vCos = Vec_IntAlloc( nObjsMax / 20 );
63  return p;
64 }
int nObjsAlloc
Definition: gia.h:102
unsigned iDiff0
Definition: gia.h:77
static Llb_Mgr_t * p
Definition: llb3Image.c:950
Gia_Obj_t * pObjs
Definition: gia.h:103
Vec_Int_t * vCos
Definition: gia.h:109
int nObjs
Definition: gia.h:101
Definition: gia.h:75
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Definition: bblif.c:149
Vec_Int_t * vCis
Definition: gia.h:108
Definition: gia.h:95
#define GIA_NONE
INCLUDES ///.
Definition: gia.h:44
#define ABC_CALLOC(type, num)
Definition: abc_global.h:230
#define assert(ex)
Definition: util_old.h:213
unsigned iDiff1
Definition: gia.h:82
void Gia_ManStop ( Gia_Man_t p)

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

Synopsis [Deletes AIG.]

Description []

SideEffects []

SeeAlso []

Definition at line 77 of file giaMan.c.

78 {
79  if ( p->vSeqModelVec )
82  Tim_ManStopP( (Tim_Man_t **)&p->pManTime );
83  assert( p->pManTime == NULL );
86  Vec_IntFreeP( &p->vSwitching );
87  Vec_IntFreeP( &p->vSuper );
88  Vec_IntFreeP( &p->vStore );
89  Vec_IntFreeP( &p->vClassNew );
90  Vec_IntFreeP( &p->vClassOld );
91  Vec_WrdFreeP( &p->vSims );
92  Vec_WrdFreeP( &p->vSimsPi );
93  Vec_FltFreeP( &p->vTiming );
94  Vec_VecFreeP( &p->vClockDoms );
95  Vec_IntFreeP( &p->vCofVars );
97  Vec_IntFreeP( &p->vUserPiIds );
98  Vec_IntFreeP( &p->vUserPoIds );
99  Vec_IntFreeP( &p->vUserFfIds );
100  Vec_IntFreeP( &p->vFlopClasses );
101  Vec_IntFreeP( &p->vGateClasses );
102  Vec_IntFreeP( &p->vObjClasses );
103  Vec_IntFreeP( &p->vInitClasses );
104  Vec_IntFreeP( &p->vRegClasses );
105  Vec_IntFreeP( &p->vDoms );
106  Vec_IntFreeP( &p->vBarBufs );
107  Vec_IntFreeP( &p->vLevels );
108  Vec_IntFreeP( &p->vTruths );
109  Vec_IntErase( &p->vCopies );
110  Vec_IntFreeP( &p->vTtNums );
111  Vec_IntFreeP( &p->vTtNodes );
112  Vec_WrdFreeP( &p->vTtMemory );
113  Vec_PtrFreeP( &p->vTtInputs );
114  Vec_IntFreeP( &p->vMapping );
115  Vec_IntFreeP( &p->vCellMapping );
116  Vec_IntFreeP( &p->vPacking );
117  Vec_FltFreeP( &p->vInArrs );
118  Vec_FltFreeP( &p->vOutReqs );
119  Gia_ManStopP( &p->pAigExtra );
120  Vec_IntFree( p->vCis );
121  Vec_IntFree( p->vCos );
122  ABC_FREE( p->pData2 );
123  ABC_FREE( p->pTravIds );
124  ABC_FREE( p->pPlacement );
125  ABC_FREE( p->pSwitching );
126  ABC_FREE( p->pCexSeq );
127  ABC_FREE( p->pCexComb );
128  ABC_FREE( p->pIso );
129 // ABC_FREE( p->pMapping );
130  ABC_FREE( p->pFanData );
131  ABC_FREE( p->pReprsOld );
132  ABC_FREE( p->pReprs );
133  ABC_FREE( p->pNexts );
134  ABC_FREE( p->pSibls );
135  ABC_FREE( p->pRefs );
136 // ABC_FREE( p->pNodeRefs );
137  ABC_FREE( p->pHTable );
138  ABC_FREE( p->pMuxes );
139  ABC_FREE( p->pObjs );
140  ABC_FREE( p->pSpec );
141  ABC_FREE( p->pName );
142  ABC_FREE( p );
143 }
Vec_Int_t * vUserFfIds
Definition: gia.h:159
Vec_Wrd_t * vSims
Definition: gia.h:177
int * pHTable
Definition: gia.h:110
int * pTravIds
Definition: gia.h:153
Gia_Man_t * pAigExtra
Definition: gia.h:149
int * pNexts
Definition: gia.h:122
Vec_Int_t * vRegClasses
Definition: gia.h:144
Vec_Int_t * vObjClasses
Definition: gia.h:142
int * pSibls
Definition: gia.h:123
Vec_Int_t * vSwitching
Definition: gia.h:152
static void Vec_PtrFreeFree(Vec_Ptr_t *p)
Definition: vecPtr.h:569
Vec_Int_t * vClassOld
Definition: gia.h:179
Gia_Obj_t * pObjs
Definition: gia.h:103
Vec_Int_t * vCos
Definition: gia.h:109
unsigned * pMuxes
Definition: gia.h:104
Vec_Int_t * vBarBufs
Definition: gia.h:146
Vec_Int_t * vFlopClasses
Definition: gia.h:140
unsigned * pData2
Definition: gia.h:170
Abc_Cex_t * pCexComb
Definition: gia.h:135
int * pIso
Definition: gia.h:124
static void Vec_IntErase(Vec_Int_t *p)
Definition: vecInt.h:266
Vec_Int_t * vPacking
Definition: gia.h:133
Vec_Wrd_t * vSimsPi
Definition: gia.h:178
static void Vec_WrdFreeP(Vec_Wrd_t **p)
Definition: vecWrd.h:277
static void Vec_FltFreeP(Vec_Flt_t **p)
Definition: vecFlt.h:235
Vec_Int_t * vStore
Definition: gia.h:190
int * pRefs
Definition: gia.h:114
Vec_Int_t * vInitClasses
Definition: gia.h:143
Vec_Flt_t * vTiming
Definition: gia.h:164
Vec_Int_t * vClassNew
Definition: gia.h:180
char * pName
Definition: gia.h:97
Vec_Int_t * vTruths
Definition: gia.h:139
Vec_Int_t * vGateClasses
Definition: gia.h:141
void Gia_ManStaticFanoutStop(Gia_Man_t *p)
Definition: giaFanout.c:290
Vec_Ptr_t * vTtInputs
Definition: gia.h:186
Vec_Int_t * vDoms
Definition: gia.h:145
unsigned char * pSwitching
Definition: gia.h:147
char * pSpec
Definition: gia.h:98
Vec_Flt_t * vOutReqs
Definition: gia.h:151
void * pManTime
Definition: gia.h:165
int * pFanData
Definition: gia.h:127
static void Vec_IntFreeP(Vec_Int_t **p)
Definition: vecInt.h:289
Vec_Int_t * vCellMapping
Definition: gia.h:132
void Tim_ManStopP(Tim_Man_t **p)
Definition: timMan.c:384
Vec_Ptr_t * vSeqModelVec
Definition: gia.h:137
Vec_Ptr_t * vNamesOut
Definition: gia.h:156
Vec_Int_t * vUserPiIds
Definition: gia.h:157
Vec_Int_t * vCis
Definition: gia.h:108
Vec_Vec_t * vClockDoms
Definition: gia.h:163
Vec_Int_t * vCofVars
Definition: gia.h:162
#define ABC_FREE(obj)
Definition: abc_global.h:232
Vec_Int_t * vTtNodes
Definition: gia.h:185
void Gia_ManStopP(Gia_Man_t **p)
Definition: giaMan.c:177
Gia_Plc_t * pPlacement
Definition: gia.h:148
static void Vec_PtrFreeP(Vec_Ptr_t **p)
Definition: vecPtr.h:240
Vec_Wrd_t * vTtMemory
Definition: gia.h:187
static void Vec_VecFreeP(Vec_Vec_t **p)
Definition: vecVec.h:367
Gia_Rpr_t * pReprs
Definition: gia.h:121
#define assert(ex)
Definition: util_old.h:213
typedefABC_NAMESPACE_HEADER_START struct Tim_Man_t_ Tim_Man_t
INCLUDES ///.
Definition: tim.h:92
Vec_Int_t * vLevels
Definition: gia.h:115
Vec_Ptr_t * vNamesIn
Definition: gia.h:155
Vec_Int_t * vMapping
Definition: gia.h:131
static void Vec_IntFree(Vec_Int_t *p)
Definition: bblif.c:235
Vec_Int_t * vSuper
Definition: gia.h:189
Vec_Int_t * vUserPoIds
Definition: gia.h:158
int * pReprsOld
Definition: gia.h:120
Vec_Int_t * vLutConfigs
Definition: gia.h:134
Vec_Flt_t * vInArrs
Definition: gia.h:150
Vec_Int_t vCopies
Definition: gia.h:138
Vec_Int_t * vTtNums
Definition: gia.h:184
Abc_Cex_t * pCexSeq
Definition: gia.h:136
void Gia_ManStopP ( Gia_Man_t **  p)

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

Synopsis [Stops the AIG manager.]

Description []

SideEffects []

SeeAlso []

Definition at line 177 of file giaMan.c.

178 {
179  if ( *p == NULL )
180  return;
181  Gia_ManStop( *p );
182  *p = NULL;
183 }
void Gia_ManStop(Gia_Man_t *p)
Definition: giaMan.c:77