@@ -1233,7 +1233,7 @@ void Gia_ManLutSat( Gia_Man_t * pGia, int LutSize, int nNumber, int nImproves, i
12331233 SeeAlso []
12341234
12351235***********************************************************************/
1236- Vec_Int_t * Gia_RunKadical ( char * pFileNameIn , char * pFileNameOut , int TimeOut , int fVerbose )
1236+ Vec_Int_t * Gia_RunKadical ( char * pFileNameIn , char * pFileNameOut , int nBTLimit , int TimeOut , int fVerbose )
12371237{
12381238 extern Vec_Int_t * Exa4_ManParse ( char * pFileName );
12391239 int fVerboseSolver = 0 ;
@@ -1245,10 +1245,18 @@ Vec_Int_t * Gia_RunKadical( char * pFileNameIn, char * pFileNameOut, int TimeOut
12451245 char * pKadical = "kadical" ;
12461246#endif
12471247 char Command [1000 ], * pCommand = (char * )& Command ;
1248- if ( TimeOut )
1249- sprintf ( pCommand , "%s -t %d %s %s > %s" , pKadical , TimeOut , fVerboseSolver ? "" : "-q" , pFileNameIn , pFileNameOut );
1250- else
1251- sprintf ( pCommand , "%s %s %s > %s" , pKadical , fVerboseSolver ? "" : "-q" , pFileNameIn , pFileNameOut );
1248+ if ( nBTLimit ) {
1249+ if ( TimeOut )
1250+ sprintf ( pCommand , "%s -c %d -t %d %s %s > %s" , pKadical , nBTLimit , TimeOut , fVerboseSolver ? "" : "-q" , pFileNameIn , pFileNameOut );
1251+ else
1252+ sprintf ( pCommand , "%s -c %d %s %s > %s" , pKadical , nBTLimit , fVerboseSolver ? "" : "-q" , pFileNameIn , pFileNameOut );
1253+ }
1254+ else {
1255+ if ( TimeOut )
1256+ sprintf ( pCommand , "%s -t %d %s %s > %s" , pKadical , TimeOut , fVerboseSolver ? "" : "-q" , pFileNameIn , pFileNameOut );
1257+ else
1258+ sprintf ( pCommand , "%s %s %s > %s" , pKadical , fVerboseSolver ? "" : "-q" , pFileNameIn , pFileNameOut );
1259+ }
12521260#ifdef __wasm
12531261 if ( 1 )
12541262#else
@@ -1266,7 +1274,7 @@ Vec_Int_t * Gia_RunKadical( char * pFileNameIn, char * pFileNameOut, int TimeOut
12661274 else if ( vRes == NULL && TimeOut == 0 )
12671275 printf ( "The problem has no solution. " );
12681276 else if ( vRes == NULL )
1269- printf ( "The problem has no solution or timed out after %d sec. " , TimeOut );
1277+ printf ( "The problem has no solution or reached a resource limit after %d sec. " , TimeOut );
12701278 Abc_PrintTime ( 1 , "SAT solver time" , Abc_Clock () - clkTotal );
12711279 }
12721280 return vRes ;
@@ -1527,7 +1535,7 @@ int Gia_ManDumpCnf( char * pFileName, Vec_Str_t * vStr, int nVars )
15271535 fclose ( pFile );
15281536 return 1 ;
15291537}
1530- int Gia_ManSimpleMapping ( Gia_Man_t * p , int nBTLimit , int nBound , int fVerbose )
1538+ int Gia_ManSimpleMapping ( Gia_Man_t * p , int nBound , int nBTLimit , int nTimeout , int fVerbose )
15311539{
15321540 char * pFileNameI = (char * )"__temp__.cnf" ;
15331541 char * pFileNameO = (char * )"__temp__.out" ;
@@ -1540,11 +1548,12 @@ int Gia_ManSimpleMapping( Gia_Man_t * p, int nBTLimit, int nBound, int fVerbose
15401548 return 0 ;
15411549 }
15421550 if ( fVerbose )
1543- printf ( "SAT variables = %d. SAT clauses = %d. Cardinality bound = %d.\n" , nVars , Vec_StrCountEntry (vStr , '\n' ), nBound );
1551+ printf ( "SAT variables = %d. SAT clauses = %d. Cardinality bound = %d. Conflict limit = %d. Timeout = %d.\n" ,
1552+ nVars , Vec_StrCountEntry (vStr , '\n' ), nBound , nBTLimit , nTimeout );
15441553 //char pFileName[100]; sprintf( pFileName, "temp%02d.cnf", nBound/2 );
15451554 //Gia_ManDumpCnf( pFileName, vStr, nVars );
15461555 Vec_StrFree ( vStr );
1547- Vec_Int_t * vRes = Gia_RunKadical ( pFileNameI , pFileNameO , 0 , 1 );
1556+ Vec_Int_t * vRes = Gia_RunKadical ( pFileNameI , pFileNameO , nBTLimit , nTimeout , 1 );
15481557 unlink ( pFileNameI );
15491558 //unlink( pFileNameO );
15501559 if ( vRes == NULL )
0 commit comments