Commit fbd6a08e by Alan Mishchenko

Other changes to enable new features in the mapper (bug fix).

parent 7ad51056
...@@ -278,6 +278,7 @@ Abc_Ntk_t * Abc_NtkFromIf( If_Man_t * pIfMan, Abc_Ntk_t * pNtk ) ...@@ -278,6 +278,7 @@ Abc_Ntk_t * Abc_NtkFromIf( If_Man_t * pIfMan, Abc_Ntk_t * pNtk )
{ {
// collect drivers // collect drivers
Vec_Ptr_t * vDrivers, * vFanins; Vec_Ptr_t * vDrivers, * vFanins;
int nRealLuts, nStopPoint;
vDrivers = Vec_PtrAlloc( Abc_NtkCoNum(pNtk) ); vDrivers = Vec_PtrAlloc( Abc_NtkCoNum(pNtk) );
Abc_NtkForEachCo( pNtk, pNode, i ) Abc_NtkForEachCo( pNtk, pNode, i )
{ {
...@@ -291,6 +292,8 @@ Abc_Ntk_t * Abc_NtkFromIf( If_Man_t * pIfMan, Abc_Ntk_t * pNtk ) ...@@ -291,6 +292,8 @@ Abc_Ntk_t * Abc_NtkFromIf( If_Man_t * pIfMan, Abc_Ntk_t * pNtk )
pNodeNew = Abc_NtkCreateNodeBuf( pNtkNew, pNodeNew ); pNodeNew = Abc_NtkCreateNodeBuf( pNtkNew, pNodeNew );
Vec_PtrPush( vDrivers, pNodeNew ); Vec_PtrPush( vDrivers, pNodeNew );
} }
nStopPoint = Abc_NtkObjNumMax( pNtkNew );
// update drivers // update drivers
vFanins = Vec_PtrAlloc( 2 ); vFanins = Vec_PtrAlloc( 2 );
for ( i = pNtk->nRealPos; i < Abc_NtkPoNum(pNtk); i += 5 ) for ( i = pNtk->nRealPos; i < Abc_NtkPoNum(pNtk); i += 5 )
...@@ -300,6 +303,9 @@ Abc_Ntk_t * Abc_NtkFromIf( If_Man_t * pIfMan, Abc_Ntk_t * pNtk ) ...@@ -300,6 +303,9 @@ Abc_Ntk_t * Abc_NtkFromIf( If_Man_t * pIfMan, Abc_Ntk_t * pNtk )
Vec_PtrPush( vFanins, (Abc_Obj_t *)Vec_PtrEntry(vDrivers, i+0) ); Vec_PtrPush( vFanins, (Abc_Obj_t *)Vec_PtrEntry(vDrivers, i+0) );
Vec_PtrPush( vFanins, (Abc_Obj_t *)Vec_PtrEntry(vDrivers, i+1) ); Vec_PtrPush( vFanins, (Abc_Obj_t *)Vec_PtrEntry(vDrivers, i+1) );
pExor = Abc_NtkCreateNodeExor( pNtkNew, vFanins ); pExor = Abc_NtkCreateNodeExor( pNtkNew, vFanins );
// update polarity
if ( strstr( Abc_ObjName(Abc_NtkPo(pNtk, i)), "SUB" ) != NULL )
pExor->pData = Hop_Not( (Hop_Obj_t *) pExor->pData );
// create second XOR // create second XOR
Vec_PtrClear( vFanins ); Vec_PtrClear( vFanins );
Vec_PtrPush( vFanins, pExor ); Vec_PtrPush( vFanins, pExor );
...@@ -319,7 +325,17 @@ Abc_Ntk_t * Abc_NtkFromIf( If_Man_t * pIfMan, Abc_Ntk_t * pNtk ) ...@@ -319,7 +325,17 @@ Abc_Ntk_t * Abc_NtkFromIf( If_Man_t * pIfMan, Abc_Ntk_t * pNtk )
Vec_PtrFree( vDrivers ); Vec_PtrFree( vDrivers );
// sweep // sweep
nDupGates = Abc_NtkCleanup( pNtkNew, 0 ); nDupGates = Abc_NtkCleanup( pNtkNew, 0 );
printf( "The number of removed nodes = %d.\n", nDupGates ); // printf( "The number of removed nodes = %d.\n", nDupGates );
// count non-trivial LUTs nodes
nRealLuts = 0;
Abc_NtkForEachNode( pNtkNew, pNode, i )
{
if ( (int)Abc_ObjId(pNode) > nStopPoint )
break;
if ( Abc_ObjFaninNum(pNode) > 1 )
nRealLuts++;
}
printf( "The number of real LUTs = %d.\n", nRealLuts );
} }
else else
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment