Commit 51db5602 by Alan Mishchenko

Procedures for sorting fanins of the nodes.

parent f0288863
...@@ -356,6 +356,7 @@ char * Abc_ConvertBddToSop( Mem_Flex_t * pMan, DdManager * dd, DdNode * bFuncOn, ...@@ -356,6 +356,7 @@ char * Abc_ConvertBddToSop( Mem_Flex_t * pMan, DdManager * dd, DdNode * bFuncOn,
***********************************************************************/ ***********************************************************************/
int Abc_NtkBddToSop( Abc_Ntk_t * pNtk, int fDirect ) int Abc_NtkBddToSop( Abc_Ntk_t * pNtk, int fDirect )
{ {
extern void Abc_NtkSortSops( Abc_Ntk_t * pNtk );
Abc_Obj_t * pNode; Abc_Obj_t * pNode;
Mem_Flex_t * pManNew; Mem_Flex_t * pManNew;
DdManager * dd = (DdManager *)pNtk->pManFunc; DdManager * dd = (DdManager *)pNtk->pManFunc;
...@@ -406,6 +407,9 @@ int Abc_NtkBddToSop( Abc_Ntk_t * pNtk, int fDirect ) ...@@ -406,6 +407,9 @@ int Abc_NtkBddToSop( Abc_Ntk_t * pNtk, int fDirect )
// check for remaining references in the package // check for remaining references in the package
Extra_StopManager( dd ); Extra_StopManager( dd );
// reorder fanins and cubes to make SOPs more human-readable
Abc_NtkSortSops( pNtk );
return 1; return 1;
} }
......
...@@ -3856,7 +3856,8 @@ int Abc_CommandDisjoint( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -3856,7 +3856,8 @@ int Abc_CommandDisjoint( Abc_Frame_t * pAbc, int argc, char ** argv )
Abc_Print( -1, "This command is only applicable to logic BDD networks.\n" ); Abc_Print( -1, "This command is only applicable to logic BDD networks.\n" );
return 1; return 1;
} }
Abc_Print( 1, "Performing recursive DSD and MUX decomposition of local functions.\n" ); if ( fVerbose )
Abc_Print( 1, "Performing recursive DSD and MUX decomposition of local functions.\n" );
if ( !Abc_NtkDsdLocal( pNtk, fVerbose, fRecursive ) ) if ( !Abc_NtkDsdLocal( pNtk, fVerbose, fRecursive ) )
Abc_Print( -1, "Recursive DSD has failed.\n" ); Abc_Print( -1, "Recursive DSD has failed.\n" );
} }
...@@ -3867,7 +3868,8 @@ int Abc_CommandDisjoint( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -3867,7 +3868,8 @@ int Abc_CommandDisjoint( Abc_Frame_t * pAbc, int argc, char ** argv )
Abc_Print( -1, "This command is only applicable to logic BDD networks (run \"bdd\").\n" ); Abc_Print( -1, "This command is only applicable to logic BDD networks (run \"bdd\").\n" );
return 1; return 1;
} }
Abc_Print( 1, "Performing simple non-recursive DSD of local functions.\n" ); if ( fVerbose )
Abc_Print( 1, "Performing simple non-recursive DSD of local functions.\n" );
if ( !Abc_NtkDsdLocal( pNtk, fVerbose, fRecursive ) ) if ( !Abc_NtkDsdLocal( pNtk, fVerbose, fRecursive ) )
Abc_Print( -1, "Simple DSD of local functions has failed.\n" ); Abc_Print( -1, "Simple DSD of local functions has failed.\n" );
} }
......
...@@ -332,10 +332,13 @@ int Abc_NtkDsdLocal( Abc_Ntk_t * pNtk, int fVerbose, int fRecursive ) ...@@ -332,10 +332,13 @@ int Abc_NtkDsdLocal( Abc_Ntk_t * pNtk, int fVerbose, int fRecursive )
Abc_NodeDecompDsdAndMux( (Abc_Obj_t *)vNodes->pArray[i], vNodes, pManDsd, fRecursive, pCounters ); Abc_NodeDecompDsdAndMux( (Abc_Obj_t *)vNodes->pArray[i], vNodes, pManDsd, fRecursive, pCounters );
Vec_PtrFree( vNodes ); Vec_PtrFree( vNodes );
printf( "Number of non-decomposable functions:\n" ); if ( fVerbose )
for ( i = 3; i < 10; i++ ) {
printf( "Inputs = %d. Functions = %6d.\n", i, pCounters[i] ); printf( "Number of non-decomposable functions:\n" );
printf( "Inputs > %d. Functions = %6d.\n", 9, pCounters[10] ); for ( i = 3; i < 10; i++ )
printf( "Inputs = %d. Functions = %6d.\n", i, pCounters[i] );
printf( "Inputs > %d. Functions = %6d.\n", 9, pCounters[10] );
}
// stop the DSD manager // stop the DSD manager
Dsd_ManagerStop( pManDsd ); Dsd_ManagerStop( pManDsd );
......
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