/**Function************************************************************* Synopsis [Starts rewriting manager.] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ Rwr_Man_t * Rwr_ManStart( bool fPrecompute ) { Dec_Man_t * pManDec; Rwr_Man_t * p; int clk = clock(); clk = clock(); p = ALLOC( Rwr_Man_t, 1 ); memset( p, 0, sizeof(Rwr_Man_t) ); p->nFuncs = (1<<16); pManDec = Abc_FrameReadManDec(); p->puCanons = pManDec->puCanons; p->pPhases = pManDec->pPhases; p->pPerms = pManDec->pPerms; p->pMap = pManDec->pMap; // initialize practical NPN classes p->pPractical = Rwr_ManGetPractical( p ); // create the table p->pTable = ALLOC( Rwr_Node_t *, p->nFuncs ); memset( p->pTable, 0, sizeof(Rwr_Node_t *) * p->nFuncs ); // create the elementary nodes p->pMmNode = Extra_MmFixedStart( sizeof(Rwr_Node_t) ); p->vForest = Vec_PtrAlloc( 100 ); Rwr_ManAddVar( p, 0x0000, fPrecompute ); // constant 0 Rwr_ManAddVar( p, 0xAAAA, fPrecompute ); // var A Rwr_ManAddVar( p, 0xCCCC, fPrecompute ); // var B Rwr_ManAddVar( p, 0xF0F0, fPrecompute ); // var C Rwr_ManAddVar( p, 0xFF00, fPrecompute ); // var D p->nClasses = 5; // other stuff p->nTravIds = 1; p->pPerms4 = Extra_Permutations( 4 ); p->vLevNums = Vec_IntAlloc( 50 ); p->vFanins = Vec_PtrAlloc( 50 ); p->vFaninsCur = Vec_PtrAlloc( 50 ); p->vNodesTemp = Vec_PtrAlloc( 50 ); if ( fPrecompute ) { // precompute subgraphs Rwr_ManPrecompute( p ); // Rwr_ManPrint( p ); Rwr_ManWriteToArray( p ); } else { // load saved subgraphs Rwr_ManLoadFromArray( p, 0 ); // Rwr_ManPrint( p ); Rwr_ManPreprocess( p ); } p->timeStart = clock() - clk; return p; }
ABC_NAMESPACE_IMPL_START //////////////////////////////////////////////////////////////////////// /// DECLARATIONS /// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// /// FUNCTION DEFINITIONS /// //////////////////////////////////////////////////////////////////////// /**Function************************************************************* Synopsis [Starts rewriting manager.] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ Rwr_Man_t * Rwr_ManStart( int fPrecompute ) { Dec_Man_t * pManDec; Rwr_Man_t * p; int clk = clock(); clk = clock(); p = ABC_ALLOC( Rwr_Man_t, 1 ); memset( p, 0, sizeof(Rwr_Man_t) ); p->nFuncs = (1<<16); pManDec = (Dec_Man_t *)Abc_FrameReadManDec(); p->puCanons = pManDec->puCanons; p->pPhases = pManDec->pPhases; p->pPerms = pManDec->pPerms; p->pMap = pManDec->pMap; // initialize practical NPN classes p->pPractical = Rwr_ManGetPractical( p ); // create the table p->pTable = ABC_ALLOC( Rwr_Node_t *, p->nFuncs ); memset( p->pTable, 0, sizeof(Rwr_Node_t *) * p->nFuncs ); // create the elementary nodes p->pMmNode = Extra_MmFixedStart( sizeof(Rwr_Node_t) ); p->vForest = Vec_PtrAlloc( 100 ); Rwr_ManAddVar( p, 0x0000, fPrecompute ); // constant 0 Rwr_ManAddVar( p, 0xAAAA, fPrecompute ); // var A Rwr_ManAddVar( p, 0xCCCC, fPrecompute ); // var B Rwr_ManAddVar( p, 0xF0F0, fPrecompute ); // var C Rwr_ManAddVar( p, 0xFF00, fPrecompute ); // var D p->nClasses = 5; // other stuff p->nTravIds = 1; p->pPerms4 = Extra_Permutations( 4 ); p->vLevNums = Vec_IntAlloc( 50 ); p->vFanins = Vec_PtrAlloc( 50 ); p->vFaninsCur = Vec_PtrAlloc( 50 ); p->vNodesTemp = Vec_PtrAlloc( 50 ); if ( fPrecompute ) { // precompute subgraphs Rwr_ManPrecompute( p ); // Rwr_ManPrint( p ); Rwr_ManWriteToArray( p ); } else { // load saved subgraphs Rwr_ManLoadFromArray( p, 0 ); // Rwr_ManPrint( p ); Rwr_ManPreprocess( p ); } p->timeStart = clock() - clk; return p; }