Small changes in several packages.

This commit is contained in:
Alan Mishchenko 2014-07-17 09:47:07 -07:00
parent c58b57e2b4
commit 4a861d868c
4 changed files with 55 additions and 4 deletions

View File

@ -280,6 +280,7 @@ struct Jf_Par_t_
word Area;
word Edge;
word Clause;
word Mux7;
float * pTimesArr;
float * pTimesReq;
};

View File

@ -327,8 +327,7 @@ Gia_Man_t * Gia_ManFalseRebuildPath( Gia_Man_t * p, Vec_Int_t * vHooks, int fVer
{
Gia_Man_t * pNew, * pTemp;
Gia_Obj_t * pObj;
int i, Counter = 0;
int iPathEnd = Vec_IntEntryLast(vHooks);
int i, iPathEnd = Vec_IntEntryLast(vHooks);
pNew = Gia_ManStart( 4 * Gia_ManObjNum(p) / 3 );
pNew->pName = Abc_UtilStrsav( p->pName );
pNew->pSpec = Abc_UtilStrsav( p->pSpec );

View File

@ -308,16 +308,63 @@ int Gia_ManComputeOverlap( Gia_Man_t * p )
SeeAlso []
***********************************************************************/
void Gia_ManPrintGetMuxFanins( Gia_Man_t * p, Gia_Obj_t * pObj, int * pFanins )
{
Gia_Obj_t * pData0, * pData1;
Gia_Obj_t * pCtrl = Gia_ObjRecognizeMux( pObj, &pData1, &pData0 );
pFanins[0] = Gia_ObjId(p, Gia_Regular(pCtrl));
pFanins[1] = Gia_ObjId(p, Gia_Regular(pData1));
pFanins[2] = Gia_ObjId(p, Gia_Regular(pData0));
}
int Gia_ManCountDupLut6( Gia_Man_t * p )
{
int i, nCountDup = 0, nCountPis = 0;
Gia_ManCleanMark0( p );
Gia_ManForEachLut( p, i )
if ( Gia_ObjLutSize(p, i) == 3 && Gia_ObjLutFanins(p, i)[3] == -i )
{
Gia_Obj_t * pFanin;
int pFanins[3];
Gia_ManPrintGetMuxFanins( p, Gia_ManObj(p, i), pFanins );
pFanin = Gia_ManObj(p, pFanins[1]);
nCountPis += Gia_ObjIsCi(pFanin);
nCountDup += pFanin->fMark0;
pFanin->fMark0 = 1;
pFanin = Gia_ManObj(p, pFanins[2]);
nCountPis += Gia_ObjIsCi(pFanin);
nCountDup += pFanin->fMark0;
pFanin->fMark0 = 1;
}
Gia_ManCleanMark0( p );
if ( nCountDup + nCountDup )
printf( "Dup fanins = %d. CI fanins = %d. Total = %d. (%.2f %%)\n",
nCountDup, nCountPis, nCountDup + nCountPis, 100.0 * (nCountDup + nCountPis) / Gia_ManLutNum(p) );
return nCountDup + nCountPis;
}
void Gia_ManPrintMappingStats( Gia_Man_t * p, char * pDumpFile )
{
Gia_Obj_t * pObj;
int * pLevels;
int i, k, iFan, nLutSize = 0, nLuts = 0, nFanins = 0, LevelMax = 0, Ave = 0;
int i, k, iFan, nLutSize = 0, nLuts = 0, nFanins = 0, LevelMax = 0, Ave = 0, nMuxF7 = 0;
if ( !Gia_ManHasMapping(p) )
return;
pLevels = ABC_CALLOC( int, Gia_ManObjNum(p) );
Gia_ManForEachLut( p, i )
{
if ( Gia_ObjLutSize(p, i) == 3 && Gia_ObjLutFanins(p, i)[3] == -i )
{
int pFanins[3];
Gia_ManPrintGetMuxFanins( p, Gia_ManObj(p, i), pFanins );
pLevels[i] = Abc_MaxInt( pLevels[i], pLevels[pFanins[0]]+1 );
pLevels[i] = Abc_MaxInt( pLevels[i], pLevels[pFanins[1]] );
pLevels[i] = Abc_MaxInt( pLevels[i], pLevels[pFanins[2]] );
LevelMax = Abc_MaxInt( LevelMax, pLevels[i] );
nMuxF7++;
continue;
}
nLuts++;
nFanins += Gia_ObjLutSize(p, i);
nLutSize = Abc_MaxInt( nLutSize, Gia_ObjLutSize(p, i) );
@ -336,6 +383,8 @@ void Gia_ManPrintMappingStats( Gia_Man_t * p, char * pDumpFile )
Abc_Print( 1, "Mapping (K=%d) : ", nLutSize );
SetConsoleTextAttribute( hConsole, 14 ); // yellow
Abc_Print( 1, "lut =%7d ", nLuts );
if ( nMuxF7 )
Abc_Print( 1, "mux =%7d ", nMuxF7 );
SetConsoleTextAttribute( hConsole, 10 ); // green
Abc_Print( 1, "edge =%8d ", nFanins );
SetConsoleTextAttribute( hConsole, 12 ); // red
@ -357,6 +406,8 @@ void Gia_ManPrintMappingStats( Gia_Man_t * p, char * pDumpFile )
Abc_Print( 1, "\n" );
#endif
Gia_ManCountDupLut6( p );
if ( pDumpFile )
{

View File

@ -27845,7 +27845,7 @@ int Abc_CommandAbc9BalanceLut( Abc_Frame_t * pAbc, int argc, char ** argv )
int nCutNum = 8;
int fUseMuxes = 1;
int fRecursive = 1;
int fOptArea = 0;
int fOptArea = 1;
int c, fVerbose = 0;
int fVeryVerbose = 0;
Extra_UtilGetoptReset();