/**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ void Cnf_ClearMemory() { if ( s_pManCnf == NULL ) return; Cnf_ManStop( s_pManCnf ); s_pManCnf = NULL; }
void Cnf_ManFree() { if ( s_pManCnf == NULL ) return; Cnf_ManStop( s_pManCnf ); s_pManCnf = NULL; }
/**Function************************************************************* Synopsis [Converts AIG into the SAT solver.] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ Vec_Int_t * Cnf_DeriveMappingArray( Aig_Man_t * pAig ) { Vec_Int_t * vResult; Cnf_Man_t * p; Vec_Ptr_t * vMapped; Aig_MmFixed_t * pMemCuts; abctime clk; // allocate the CNF manager p = Cnf_ManStart(); p->pManAig = pAig; // generate cuts for all nodes, assign cost, and find best cuts clk = Abc_Clock(); pMemCuts = Dar_ManComputeCuts( pAig, 10, 0, 0 ); p->timeCuts = Abc_Clock() - clk; // find the mapping clk = Abc_Clock(); Cnf_DeriveMapping( p ); p->timeMap = Abc_Clock() - clk; // Aig_ManScanMapping( p, 1 ); // convert it into CNF clk = Abc_Clock(); Cnf_ManTransferCuts( p ); vMapped = Cnf_ManScanMapping( p, 1, 0 ); vResult = Cnf_ManWriteCnfMapping( p, vMapped ); Vec_PtrFree( vMapped ); Aig_MmFixedStop( pMemCuts, 0 ); p->timeSave = Abc_Clock() - clk; // reset reference counters Aig_ManResetRefs( pAig ); //ABC_PRT( "Cuts ", p->timeCuts ); //ABC_PRT( "Map ", p->timeMap ); //ABC_PRT( "Saving ", p->timeSave ); Cnf_ManStop( p ); return vResult; }