30 #define SUPER_MASK(n) ((~((unsigned)0)) >> (32-(n)))
31 #define SUPER_FULL (~((unsigned)0))
32 #define SUPER_NO_VAR (-9999.0)
33 #define SUPER_EPSILON (0.001)
97 #define Super_ManForEachGate( GateArray, Limit, Index, Gate ) \
99 Index < Limit && (Gate = GateArray[Index]); \
140 void Super_Precompute(
Mio_Library_t * pLibGen,
int nVarsMax,
int nLevels,
int nGatesMax,
float tDelayMax,
float tAreaMax,
int TimeLimit,
int fSkipInv,
int fVerbose,
char * pFileName )
143 FILE * pFile = fopen( pFileName,
"wb" );
146 printf(
"Cannot open output file \"%s\".\n", pFileName );
149 vStr =
Super_PrecomputeStr( pLibGen, nVarsMax, nLevels, nGatesMax, tDelayMax, tAreaMax, TimeLimit, fSkipInv, fVerbose );
156 printf(
"The supergates are written using new format \"%s\" ", pFileName );
157 printf(
"(%0.3f MB).\n", ((
double)
Extra_FileSize(pFileName))/(1<<20) );
181 if ( nGatesMax && nGatesMax < nVarsMax )
183 fprintf( stderr,
"Erro! The number of supergates requested (%d) in less than the number of variables (%d).\n", nGatesMax, nVarsMax );
184 fprintf( stderr,
"The library cannot be computed.\n" );
189 ppGates =
Mio_CollectRoots( pLibGen, nVarsMax, tDelayMax, 0, &nGates, fVerbose );
190 if ( nGatesMax && nGates >= nGatesMax )
192 fprintf( stdout,
"Warning! Genlib library contains more gates than can be computed.\n");
193 fprintf( stdout,
"Only one-gate supergates are included in the supergate library.\n" );
209 fprintf( stderr,
"Error: No genlib gates satisfy the limits criteria. Stop.\n");
210 fprintf( stderr,
"Limits: max delay = %.2f, max area = %.2f, time limit = %d sec.\n",
227 printf(
"Computing supergates with %d inputs, %d levels, and %d max gates.\n",
228 pMan->
nVarsMax, nLevels, nGatesMax );
229 printf(
"Limits: max delay = %.2f, max area = %.2f, time limit = %d sec.\n",
233 for ( Level = 1; Level <= nLevels; Level++ )
242 printf(
"Lev %d: Try =%12d. Add =%6d. Rem =%5d. Save =%6d. Lookups =%12d. Aliases =%12d. ",
252 printf(
"Writing the output file...\n" );
279 int nMintLimit, nVarLimit;
283 pMan->
nMints = (1 << nVarsMax);
289 for ( v = 0; v < nVarsMax; v++ )
297 for ( m = 0; m < nVarsMax; m++ )
306 nVarLimit = (nVarsMax >= 5)? 5 : nVarsMax;
307 nMintLimit = (1 << nVarLimit);
308 for ( m = 0; m < nMintLimit; m++ )
309 for ( v = 0; v < nVarLimit; v++ )
315 for ( v = 0; v < 5; v++ )
322 for ( v = 0; v < nVarsMax; v++ )
345 Super_Gate_t * pSupers[6], * pGate0, * pGate1, * pGate2, * pGate3, * pGate4, * pGate5, * pGateNew;
346 float tPinDelaysRes[6], * ptPinDelays[6], tPinDelayMax, tDelayMio;
348 float Area0, Area1, Area2, Area3, Area4, AreaMio;
349 unsigned uTruth[2], uTruths[6][2];
350 int i0, i1, i2, i3, i4, i5;
352 int nFanins, nGatesLimit, k, s, t;
358 int iPruneLimitRoot = 4;
366 if ( pMan->
nGates > 10000 )
368 printf(
"Sorting array of %d supergates...\r", pMan->
nGates );
374 if ( pMan->
nGates > 10000 )
385 for ( k = 0; k < nGates; k++ )
387 if ( fTimeOut )
break;
406 for ( s = 0, t = 0; s < pMan->
nGates; s++ )
411 ppGatesLimit[t] = pMan->
pGates[s];
412 if ( ppGatesLimit[t++]->tDelayMax + tDelayMio > pMan->
tDelayMax && pMan->
tDelayMax > 0.0 )
425 if ( nGatesLimit > 10000 )
426 printf(
"Sorting array of %d supergates...\r", nGatesLimit );
427 qsort( (
void *)ppGatesLimit, nGatesLimit,
sizeof(
Super_Gate_t *),
430 if ( nGatesLimit > 10000 )
444 if ( fTimeOut )
break;
449 if ( fSkipInv && pGate0->
tDelayMax == 0 )
452 Area = AreaMio + pGate0->
Area;
456 pSupers[0] = pGate0; uTruths[0][0] = pGate0->
uTruth[0]; uTruths[0][1] = pGate0->
uTruth[1]; ptPinDelays[0] = pGate0->
ptDelays;
464 if ( nGatesMax && pMan->
nClasses > nGatesMax )
471 Area0 = AreaMio + pGate0->
Area;
474 pSupers[0] = pGate0; uTruths[0][0] = pGate0->
uTruth[0]; uTruths[0][1] = pGate0->
uTruth[1]; ptPinDelays[0] = pGate0->
ptDelays;
478 if ( fTimeOut )
goto done;
481 Area = Area0 + pGate1->
Area;
485 pSupers[1] = pGate1; uTruths[1][0] = pGate1->
uTruth[0]; uTruths[1][1] = pGate1->
uTruth[1]; ptPinDelays[1] = pGate1->
ptDelays;
493 if ( nGatesMax && pMan->
nClasses > nGatesMax )
501 Area0 = AreaMio + pGate0->
Area;
504 pSupers[0] = pGate0; uTruths[0][0] = pGate0->
uTruth[0]; uTruths[0][1] = pGate0->
uTruth[1]; ptPinDelays[0] = pGate0->
ptDelays;
509 Area1 = Area0 + pGate1->
Area;
512 pSupers[1] = pGate1; uTruths[1][0] = pGate1->
uTruth[0]; uTruths[1][1] = pGate1->
uTruth[1]; ptPinDelays[1] = pGate1->
ptDelays;
515 if ( i2 != i0 && i2 != i1 )
517 if ( fTimeOut )
goto done;
520 Area = Area1 + pGate2->
Area;
523 pSupers[2] = pGate2; uTruths[2][0] = pGate2->
uTruth[0]; uTruths[2][1] = pGate2->
uTruth[1]; ptPinDelays[2] = pGate2->
ptDelays;
532 if ( nGatesMax && pMan->
nClasses > nGatesMax )
541 Area0 = AreaMio + pGate0->
Area;
544 pSupers[0] = pGate0; uTruths[0][0] = pGate0->
uTruth[0]; uTruths[0][1] = pGate0->
uTruth[1]; ptPinDelays[0] = pGate0->
ptDelays;
549 Area1 = Area0 + pGate1->
Area;
552 pSupers[1] = pGate1; uTruths[1][0] = pGate1->
uTruth[0]; uTruths[1][1] = pGate1->
uTruth[1]; ptPinDelays[1] = pGate1->
ptDelays;
555 if ( i2 != i0 && i2 != i1 )
557 Area2 = Area1 + pGate2->
Area;
560 pSupers[2] = pGate2; uTruths[2][0] = pGate2->
uTruth[0]; uTruths[2][1] = pGate2->
uTruth[1]; ptPinDelays[2] = pGate2->
ptDelays;
563 if ( i3 != i0 && i3 != i1 && i3 != i2 )
565 if ( fTimeOut )
goto done;
568 Area = Area2 + pGate3->
Area;
571 pSupers[3] = pGate3; uTruths[3][0] = pGate3->
uTruth[0]; uTruths[3][1] = pGate3->
uTruth[1]; ptPinDelays[3] = pGate3->
ptDelays;
580 if ( nGatesMax && pMan->
nClasses > nGatesMax )
590 Area0 = AreaMio + pGate0->
Area;
593 pSupers[0] = pGate0; uTruths[0][0] = pGate0->
uTruth[0]; uTruths[0][1] = pGate0->
uTruth[1]; ptPinDelays[0] = pGate0->
ptDelays;
598 Area1 = Area0 + pGate1->
Area;
601 pSupers[1] = pGate1; uTruths[1][0] = pGate1->
uTruth[0]; uTruths[1][1] = pGate1->
uTruth[1]; ptPinDelays[1] = pGate1->
ptDelays;
604 if ( i2 != i0 && i2 != i1 )
606 Area2 = Area1 + pGate2->
Area;
609 pSupers[2] = pGate2; uTruths[2][0] = pGate2->
uTruth[0]; uTruths[2][1] = pGate2->
uTruth[1]; ptPinDelays[2] = pGate2->
ptDelays;
612 if ( i3 != i0 && i3 != i1 && i3 != i2 )
614 Area3 = Area2 + pGate3->
Area;
617 pSupers[3] = pGate3; uTruths[3][0] = pGate3->
uTruth[0]; uTruths[3][1] = pGate3->
uTruth[1]; ptPinDelays[3] = pGate3->
ptDelays;
620 if ( i4 != i0 && i4 != i1 && i4 != i2 && i4 != i3 )
622 if ( fTimeOut )
goto done;
625 Area = Area3 + pGate4->
Area;
628 pSupers[4] = pGate4; uTruths[4][0] = pGate4->
uTruth[0]; uTruths[4][1] = pGate4->
uTruth[1]; ptPinDelays[4] = pGate4->
ptDelays;
637 if ( nGatesMax && pMan->
nClasses > nGatesMax )
648 Area0 = AreaMio + pGate0->
Area;
651 pSupers[0] = pGate0; uTruths[0][0] = pGate0->
uTruth[0]; uTruths[0][1] = pGate0->
uTruth[1]; ptPinDelays[0] = pGate0->
ptDelays;
656 Area1 = Area0 + pGate1->
Area;
659 pSupers[1] = pGate1; uTruths[1][0] = pGate1->
uTruth[0]; uTruths[1][1] = pGate1->
uTruth[1]; ptPinDelays[1] = pGate1->
ptDelays;
662 if ( i2 != i0 && i2 != i1 )
664 Area2 = Area1 + pGate2->
Area;
667 pSupers[2] = pGate2; uTruths[2][0] = pGate2->
uTruth[0]; uTruths[2][1] = pGate2->
uTruth[1]; ptPinDelays[2] = pGate2->
ptDelays;
670 if ( i3 != i0 && i3 != i1 && i3 != i2 )
672 Area3 = Area2 + pGate3->
Area;
675 pSupers[3] = pGate3; uTruths[3][0] = pGate3->
uTruth[0]; uTruths[3][1] = pGate3->
uTruth[1]; ptPinDelays[3] = pGate3->
ptDelays;
678 if ( i4 != i0 && i4 != i1 && i4 != i2 && i4 != i3 )
680 if ( fTimeOut )
break;
683 Area4 = Area3 + pGate4->
Area;
686 pSupers[4] = pGate4; uTruths[4][0] = pGate4->
uTruth[0]; uTruths[4][1] = pGate4->
uTruth[1]; ptPinDelays[4] = pGate4->
ptDelays;
689 if ( i5 != i0 && i5 != i1 && i5 != i2 && i5 != i3 && i5 != i4 )
691 if ( fTimeOut )
goto done;
694 Area = Area4 + pGate5->
Area;
697 pSupers[5] = pGate5; uTruths[5][0] = pGate5->
uTruth[0]; uTruths[5][1] = pGate5->
uTruth[1]; ptPinDelays[5] = pGate5->
ptDelays;
706 if ( nGatesMax && pMan->
nClasses > nGatesMax )
747 printf (
"Timeout!\n");
778 for ( pGate = pList; pGate; pGate = pGate->
pNext )
806 pGate->
pNext = *ppList;
827 int i, fNewIsBetter, fGateIsBetter;
833 if ( uTruth[0] == 0 || ~uTruth[0] == 0 )
838 if ( ( uTruth[0] == 0 && uTruth[1] == 0 ) || ( ~uTruth[0] == 0 && ~uTruth[1] == 0 ) )
844 Key = uTruth[0] ^ uTruth[1];
849 for ( pGate = *ppList, pGate2 = pGate? pGate->
pNext: NULL; pGate;
850 pGate = pGate2, pGate2 = pGate? pGate->
pNext: NULL )
853 if ( pGate->
uTruth[0] != uTruth[0] || pGate->
uTruth[1] != uTruth[1] )
864 for ( i = 0; i < nPins; i++ )
872 if ( fGateIsBetter && fNewIsBetter )
876 if ( fGateIsBetter && fNewIsBetter )
878 else if ( fNewIsBetter )
881 *ppList = pGate->
pNext;
887 else if ( fGateIsBetter )
908 unsigned uTruth[],
float Area,
float tPinDelaysRes[],
float tDelayMax,
int nPins )
913 pSuper->
pRoot = pRoot;
914 pSuper->
uTruth[0] = uTruth[0];
915 pSuper->
uTruth[1] = uTruth[1];
920 pSuper->
pNext = NULL;
990 printf(
"The generated library is empty. No output file written.\n" );
1003 for ( pGate = pGateRoot; pGate; pGate = pGate->
pNext )
1006 if ( pGate->
pRoot == NULL )
1010 for ( v = 0; v < pMan->
nVarsMax; v++ )
1013 else if ( fZeroFound )
1015 if ( v < pMan->nVarsMax )
1066 fprintf( pFile,
"#\n" );
1067 fprintf( pFile,
"# Supergate library derived for \"%s\" on %s.\n", pMan->
pName,
Extra_TimeStamp() );
1068 fprintf( pFile,
"#\n" );
1069 fprintf( pFile,
"# Command line: \"super -I %d -L %d -N %d -T %d -D %.2f -A %.2f %s %s\".\n",
1071 fprintf( pFile,
"#\n" );
1072 fprintf( pFile,
"# The number of inputs = %10d.\n", pMan->
nVarsMax );
1073 fprintf( pFile,
"# The number of levels = %10d.\n", pMan->
nLevels );
1074 fprintf( pFile,
"# The maximum delay = %10.2f.\n", pMan->
tDelayMax );
1075 fprintf( pFile,
"# The maximum area = %10.2f.\n", pMan->
tAreaMax );
1076 fprintf( pFile,
"# The maximum runtime (sec) = %10d.\n", pMan->
TimeLimit );
1077 fprintf( pFile,
"#\n" );
1078 fprintf( pFile,
"# The number of attempts = %10d.\n", pMan->
nTried );
1079 fprintf( pFile,
"# The number of supergates = %10d.\n", pMan->
nGates );
1080 fprintf( pFile,
"# The number of functions = %10d.\n", pMan->
nUnique );
1081 fprintf( pFile,
"# The total functions = %.0f (2^%d).\n", pow((
double)2,pMan->
nMints), pMan->
nMints );
1082 fprintf( pFile,
"#\n" );
1083 fprintf( pFile,
"# Generation time = %10.2f sec.\n", (
float)(pMan->
Time)/(
float)(CLOCKS_PER_SEC) );
1084 fprintf( pFile,
"#\n" );
1085 fprintf( pFile,
"%s\n", pMan->
pName );
1086 fprintf( pFile,
"%d\n", pMan->
nVarsMax );
1087 fprintf( pFile,
"%d\n", pMan->
nGates );
1098 sprintf( pBuffer,
"# Command line: \"super -I %d -L %d -N %d -T %d -D %.2f -A %.2f %s %s\".\n",
1103 sprintf( pBuffer,
"# The number of inputs = %10d.\n", pMan->
nVarsMax );
1105 sprintf( pBuffer,
"# The number of levels = %10d.\n", pMan->
nLevels );
1111 sprintf( pBuffer,
"# The maximum runtime (sec) = %10d.\n", pMan->
TimeLimit );
1115 sprintf( pBuffer,
"# The number of attempts = %10d.\n", pMan->
nTried );
1117 sprintf( pBuffer,
"# The number of supergates = %10d.\n", pMan->
nGates );
1119 sprintf( pBuffer,
"# The number of functions = %10d.\n", pMan->
nUnique );
1121 sprintf( pBuffer,
"# The total functions = %.0f (2^%d).\n", pow((
double)2,pMan->
nMints), pMan->
nMints );
1125 sprintf( pBuffer,
"# Generation time = %10.2f sec.\n", (
float)(pMan->
Time)/(
float)(CLOCKS_PER_SEC) );
1150 unsigned * pTruth1 = (*ppG1)->uTruth;
1151 unsigned * pTruth2 = (*ppG2)->uTruth;
1152 if ( pTruth1[1] < pTruth2[1] )
1154 if ( pTruth1[1] > pTruth2[1] )
1156 if ( pTruth1[0] < pTruth2[0] )
1158 if ( pTruth1[0] > pTruth2[0] )
1164 if ( (*ppG1)->tDelayMax < (*ppG2)->tDelayMax )
1166 if ( (*ppG1)->tDelayMax > (*ppG2)->tDelayMax )
1172 if ( (*ppG1)->Area < (*ppG2)->Area )
1174 if ( (*ppG1)->Area > (*ppG2)->Area )
1200 if ( pGate->
pRoot == NULL )
1203 strcat( pBuffer, Buffer );
1208 for ( i = 0; i < (int)pGate->
nFanins; i++ )
1218 static char Buffer[2000];
1226 fprintf( pFile,
"%04d ", Num );
1228 fprintf( pFile,
" %5.2f", pGate->
tDelayMax );
1229 fprintf( pFile,
" " );
1230 for ( i = 0; i < pMan->
nVarsMax; i++ )
1232 fprintf( pFile,
" %5.2f", pGate->
Area );
1233 fprintf( pFile,
" " );
1235 fprintf( pFile,
"\n" );
1242 char * pNameGeneric;
1249 sprintf( FileName,
"%s.super_old", pNameGeneric );
1256 if ( i == pMan->
nGates - 1 )
1259 pGateNext = pMan->
pGates[i+1];
1265 pFile = fopen( FileName,
"w" );
1273 if ( i == pMan->
nGates - 1 )
1276 pGateNext = pMan->
pGates[i+1];
1278 fprintf( pFile,
"\n" );
1285 printf(
"The supergates are written using old format \"%s\" ", FileName );
1286 printf(
"(%0.3f MB).\n", ((
double)
Extra_FileSize(FileName))/(1<<20) );
1314 for ( i = 0; i < nFanins; i++ )
1317 pSuper->
Number = (*pCounter)++;
1318 fprintf( pFile,
"%s", pSuper->
fSuper?
"* " :
"" );
1320 for ( i = 0; i < nFanins; i++ )
1327 fprintf( pFile,
"\n" );
1334 char * pNameGeneric;
1342 sprintf( FileName,
"%s.super", pNameGeneric );
1346 pFile = fopen( FileName,
"wb" );
1349 posStart = ftell( pFile );
1350 fprintf( pFile,
" \n" );
1360 pFile = fopen( FileName,
"rb+" );
1361 fseek( pFile, posStart,
SEEK_SET );
1362 fprintf( pFile,
"%d", Counter );
1367 printf(
"The supergates are written using new format \"%s\" ", FileName );
1368 printf(
"(%0.3f MB).\n", ((
double)
Extra_FileSize(FileName))/(1<<20) );
1394 for ( i = 0; i < nFanins; i++ )
1397 pSuper->
Number = (*pCounter)++;
1404 for ( i = 0; i < nFanins; i++ )
1429 for ( i = 0; i < 9; i++ )
1441 sprintf( pInsert,
"%d", Counter );
1442 for ( i = 0; i < (int)
strlen(pInsert); i++ )
1450 FILE * pFile = fopen( pFileName,
"wb" );
1451 if ( pFile == NULL )
1453 printf(
"Cannot open output file \"%s\".\n", pFileName );
1463 printf(
"The supergates are written using new format \"%s\" ", pFileName );
1464 printf(
"(%0.3f MB).\n", ((
double)
Extra_FileSize(pFileName))/(1<<20) );
static void Super_WriteFileHeader(Super_Man_t *pMan, FILE *pFile)
static void Super_ManStop(Super_Man_t *pMan)
void Super_Precompute(Mio_Library_t *pLibGen, int nVarsMax, int nLevels, int nGatesMax, float tDelayMax, float tAreaMax, int TimeLimit, int fSkipInv, int fVerbose, char *pFileName)
FUNCTION DEFINITIONS ///.
void Super_WriteLibraryTreeStr_rec(Vec_Str_t *vStr, Super_Man_t *pMan, Super_Gate_t *pSuper, int *pCounter)
stmm_table * stmm_init_table(stmm_compare_func_type compare, stmm_hash_func_type hash)
static char * Vec_StrArray(Vec_Str_t *p)
static void Vec_StrPrintNum(Vec_Str_t *p, int Num)
int st__ptrcmp(const char *, const char *)
char * Super_WriteLibraryGateName(Super_Gate_t *pGate)
#define ABC_ALLOC(type, num)
static Vec_Str_t * Super_Write(Super_Man_t *pMan)
static Vec_Str_t * Vec_StrAlloc(int nCap)
static void Super_WriteLibrary(Super_Man_t *pMan)
static abctime Abc_Clock()
static void Vec_StrPush(Vec_Str_t *p, char Entry)
char * Mio_LibraryReadName(Mio_Library_t *pLib)
DECLARATIONS ///.
int Mio_GateReadPinNum(Mio_Gate_t *pGate)
static void Vec_StrWriteEntry(Vec_Str_t *p, int i, char Entry)
static void Super_First(Super_Man_t *pMan, int nVarsMax)
static int Super_AreaCompare(Super_Gate_t **ppG1, Super_Gate_t **ppG2)
void Super_WriteLibraryGateName_rec(Super_Gate_t *pGate, char *pBuffer)
static void Vec_StrFree(Vec_Str_t *p)
static void Super_TranferGatesToArray(Super_Man_t *pMan)
static int Super_DelayCompare(Super_Gate_t **ppG1, Super_Gate_t **ppG2)
#define ABC_NAMESPACE_IMPL_END
#define Super_ManForEachGate(GateArray, Limit, Index, Gate)
STRUCTURE DEFINITIONS ///.
static Super_Man_t * Super_Compute(Super_Man_t *pMan, Mio_Gate_t **ppGates, int nGates, int nGatesMax, int fSkipInv)
int stmm_find_or_add(stmm_table *table, char *key, char ***slot)
static void Super_AddGateToTable(Super_Man_t *pMan, Super_Gate_t *pGate)
void Mio_DeriveTruthTable(Mio_Gate_t *pGate, unsigned uTruthsIn[][2], int nSigns, int nInputs, unsigned uTruthRes[])
static Vec_Str_t * Super_WriteLibraryTreeStr(Super_Man_t *pMan)
static int Super_CompareGates(Super_Man_t *pMan, unsigned uTruth[], float Area, float tPinDelaysRes[], int nPins)
static Super_Gate_t * Super_CreateGateNew(Super_Man_t *pMan, Mio_Gate_t *pRoot, Super_Gate_t **pSupers, int nSupers, unsigned uTruth[], float Area, float tPinDelaysRes[], float tDelayMax, int nPins)
static int Super_WriteCompare(Super_Gate_t **ppG1, Super_Gate_t **ppG2)
#define ABC_NAMESPACE_IMPL_START
void Super_WriteLibraryTreeFile_rec(FILE *pFile, Super_Man_t *pMan, Super_Gate_t *pSuper, int *pCounter)
void Super_WriteLibraryGate(FILE *pFile, Super_Man_t *pMan, Super_Gate_t *pGate, int Num)
double Mio_GateReadArea(Mio_Gate_t *pGate)
static int Vec_StrSize(Vec_Str_t *p)
void stmm_free_table(stmm_table *table)
void Super_WriteLibraryTree(Super_Man_t *pMan)
double Mio_GateReadDelayMax(Mio_Gate_t *pGate)
void Extra_PrintBinary(FILE *pFile, unsigned Sign[], int nBits)
Mio_Gate_t ** Mio_CollectRoots(Mio_Library_t *pLib, int nInputs, float tDelay, int fSkipInv, int *pnGates, int fVerbose)
Super_Gate_t * pInputs[10]
#define ABC_CALLOC(type, num)
static Super_Man_t * Super_ManStart()
Extra_MmFlex_t * pMemFlex
void Mio_DeriveGateDelays(Mio_Gate_t *pGate, float **ptPinDelays, int nPins, int nInputs, float tDelayZero, float *ptDelaysRes, float *ptPinDelayMax)
static void Super_WriteLibraryTreeFile(Super_Man_t *pMan)
Vec_Str_t * Super_PrecomputeStr(Mio_Library_t *pLibGen, int nVarsMax, int nLevels, int nGatesMax, float tDelayMax, float tAreaMax, int TimeLimit, int fSkipInv, int fVerbose)
static void Vec_StrPrintStr(Vec_Str_t *p, const char *pStr)
int stmm_find(stmm_table *table, char *key, char ***slot)
#define stmm_foreach_item(table, gen, key, value)
void Super_WriteFileHeaderStr(Super_Man_t *pMan, Vec_Str_t *vStr)
static int Super_CheckTimeout(ProgressBar *pPro, Super_Man_t *pMan)
char * Mio_GateReadName(Mio_Gate_t *pGate)
int st__ptrhash(const char *, int)
Super_Gate_t * pFanins[6]