summaryrefslogtreecommitdiffstats
path: root/src/aig/nwk
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2008-04-06 08:01:00 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2008-04-06 08:01:00 -0700
commit661abab094143930f58633dfad415468a90cef6f (patch)
treefa142590b1b9730282e34901d07398be8b34de95 /src/aig/nwk
parent0c4d314ef0460b94c3ccc4f8ddeedc8e49e35e96 (diff)
downloadabc-661abab094143930f58633dfad415468a90cef6f.tar.gz
abc-661abab094143930f58633dfad415468a90cef6f.tar.bz2
abc-661abab094143930f58633dfad415468a90cef6f.zip
Version abc80406
Diffstat (limited to 'src/aig/nwk')
-rw-r--r--src/aig/nwk/nwk.h1
-rw-r--r--src/aig/nwk/nwkMan.c26
-rw-r--r--src/aig/nwk/nwkMap.c2
-rw-r--r--src/aig/nwk/nwkSpeedup.c6
-rw-r--r--src/aig/nwk/nwkUtil.c15
5 files changed, 45 insertions, 5 deletions
diff --git a/src/aig/nwk/nwk.h b/src/aig/nwk/nwk.h
index eafc1bbf..4c99c3a9 100644
--- a/src/aig/nwk/nwk.h
+++ b/src/aig/nwk/nwk.h
@@ -252,6 +252,7 @@ extern int Nwk_ManGetAigNodeNum( Nwk_Man_t * pNtk );
extern int Nwk_NodeCompareLevelsIncrease( Nwk_Obj_t ** pp1, Nwk_Obj_t ** pp2 );
extern int Nwk_NodeCompareLevelsDecrease( Nwk_Obj_t ** pp1, Nwk_Obj_t ** pp2 );
extern void Nwk_ObjPrint( Nwk_Obj_t * pObj );
+extern void Nwk_ManDumpBlif( Nwk_Man_t * pNtk, char * pFileName, Vec_Ptr_t * vCiNames, Vec_Ptr_t * vCoNames );
#ifdef __cplusplus
}
diff --git a/src/aig/nwk/nwkMan.c b/src/aig/nwk/nwkMan.c
index 2d0254f2..9c2c5ed8 100644
--- a/src/aig/nwk/nwkMan.c
+++ b/src/aig/nwk/nwkMan.c
@@ -91,6 +91,29 @@ void Nwk_ManFree( Nwk_Man_t * p )
SeeAlso []
***********************************************************************/
+void Nwk_ManPrintLutSizes( Nwk_Man_t * p, If_Lib_t * pLutLib )
+{
+ Nwk_Obj_t * pObj;
+ int i, Counters[256] = {0};
+ Nwk_ManForEachNode( p, pObj, i )
+ Counters[Nwk_ObjFaninNum(pObj)]++;
+ printf( "LUTs by size: " );
+ for ( i = 0; i <= pLutLib->LutMax; i++ )
+ printf( "%d:%d ", i, Counters[i] );
+ printf( "\n" );
+}
+
+/**Function*************************************************************
+
+ Synopsis [Prints stats of the manager.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
void Nwk_ManPrintStats( Nwk_Man_t * p, If_Lib_t * pLutLib )
{
p->pLutLib = pLutLib;
@@ -104,7 +127,8 @@ void Nwk_ManPrintStats( Nwk_Man_t * p, If_Lib_t * pLutLib )
printf( "aig = %6d ", Nwk_ManGetAigNodeNum(p) );
printf( "lev = %3d ", Nwk_ManLevel(p) );
// printf( "lev2 = %3d ", Nwk_ManLevelBackup(p) );
- printf( "delay = %5.2f", Nwk_ManDelayTraceLut(p) );
+ printf( "delay = %5.2f ", Nwk_ManDelayTraceLut(p) );
+ Nwk_ManPrintLutSizes( p, pLutLib );
printf( "\n" );
// Nwk_ManDelayTracePrint( p, pLutLib );
fflush( stdout );
diff --git a/src/aig/nwk/nwkMap.c b/src/aig/nwk/nwkMap.c
index acbfbc0a..6c1e1330 100644
--- a/src/aig/nwk/nwkMap.c
+++ b/src/aig/nwk/nwkMap.c
@@ -134,7 +134,7 @@ If_Man_t * Nwk_ManToIf( Aig_Man_t * p, If_Par_t * pPars, Vec_Ptr_t * vAigToIf )
if ( Aig_ObjIsChoice( p, pNode ) )
{
pIfMan->nChoices++;
- for ( pPrev = pNode, pFanin = p->pEquivs[pNode->Id]; pFanin; pPrev = pFanin, pFanin = p->pEquivs[pFanin->Id] )
+ for ( pPrev = pNode, pFanin = Aig_ObjEquiv(p, pNode); pFanin; pPrev = pFanin, pFanin = Aig_ObjEquiv(p, pFanin) )
If_ObjSetChoice( pPrev->pData, pFanin->pData );
If_ManCreateChoice( pIfMan, pNode->pData );
}
diff --git a/src/aig/nwk/nwkSpeedup.c b/src/aig/nwk/nwkSpeedup.c
index 80404a44..b7802f72 100644
--- a/src/aig/nwk/nwkSpeedup.c
+++ b/src/aig/nwk/nwkSpeedup.c
@@ -137,7 +137,7 @@ void Aig_ManSpeedupNode( Nwk_Man_t * pNtk, Aig_Man_t * pAig, Nwk_Obj_t * pNode,
// create choice node
pAnd = Aig_Regular(pNode->pCopy); // repr
pTemp = Aig_Regular(ppCofs[0]); // new
- if ( pAig->pEquivs[pAnd->Id] == NULL && pAig->pEquivs[pTemp->Id] == NULL && !Aig_ObjCheckTfi(pAig, pTemp, pAnd) )
+ if ( Aig_ObjEquiv(pAig, pAnd) == NULL && Aig_ObjEquiv(pAig, pTemp) == NULL && !Aig_ObjCheckTfi(pAig, pTemp, pAnd) )
pAig->pEquivs[pAnd->Id] = pTemp;
}
@@ -339,9 +339,9 @@ Aig_Man_t * Nwk_ManSpeedup( Nwk_Man_t * pNtk, int fUseLutLib, int Percentage, in
// remove invalid choice nodes
Aig_ManForEachNode( pAig, pAnd, i )
- if ( pAig->pEquivs[pAnd->Id] )
+ if ( Aig_ObjEquiv(pAig, pAnd) )
{
- if ( Aig_ObjRefs(pAig->pEquivs[pAnd->Id]) > 0 )
+ if ( Aig_ObjRefs(Aig_ObjEquiv(pAig, pAnd)) > 0 )
pAig->pEquivs[pAnd->Id] = NULL;
}
diff --git a/src/aig/nwk/nwkUtil.c b/src/aig/nwk/nwkUtil.c
index b25fd68a..5fb594ec 100644
--- a/src/aig/nwk/nwkUtil.c
+++ b/src/aig/nwk/nwkUtil.c
@@ -238,6 +238,21 @@ void Nwk_ObjPrint( Nwk_Obj_t * pObj )
printf( "\n" );
}
+/**Function*************************************************************
+
+ Synopsis [Deletes the node.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Nwk_ManDumpBlif( Nwk_Man_t * pNtk, char * pFileName, Vec_Ptr_t * vCiNames, Vec_Ptr_t * vCoNames )
+{
+ printf( "Dumping logic network is currently not supported.\n" );
+}
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///