| /**CFile**************************************************************** |
| |
| FileName [AbcGlucoseCmd.cpp] |
| |
| SystemName [ABC: Logic synthesis and verification system.] |
| |
| PackageName [SAT solver Glucose 3.0 by Gilles Audemard and Laurent Simon.] |
| |
| Synopsis [Interface to Glucose.] |
| |
| Author [Alan Mishchenko] |
| |
| Affiliation [UC Berkeley] |
| |
| Date [Ver. 1.0. Started - September 6, 2017.] |
| |
| Revision [$Id: AbcGlucoseCmd.cpp,v 1.00 2005/06/20 00:00:00 alanmi Exp $] |
| |
| ***********************************************************************/ |
| |
| #include "aig/gia/gia.h" |
| #include "base/main/mainInt.h" |
| |
| #include "sat/glucose/AbcGlucose.h" |
| |
| |
| ABC_NAMESPACE_HEADER_START |
| |
| extern void Glucose_Init( Abc_Frame_t *pAbc ); |
| extern void Glucose_End( Abc_Frame_t * pAbc ); |
| |
| ABC_NAMESPACE_HEADER_END |
| |
| ABC_NAMESPACE_IMPL_START |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// DECLARATIONS /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| static int Abc_CommandGlucose( Abc_Frame_t * pAbc, int argc, char ** argv ); |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// FUNCTION DEFINITIONS /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| /**Function************************************************************* |
| |
| Synopsis [] |
| |
| Description [] |
| |
| SideEffects [] |
| |
| SeeAlso [] |
| |
| ***********************************************************************/ |
| |
| void Glucose_Init(Abc_Frame_t *pAbc) |
| { |
| Cmd_CommandAdd( pAbc, "ABC9", "&glucose", Abc_CommandGlucose, 0 ); |
| } |
| |
| void Glucose_End( Abc_Frame_t * pAbc ) |
| { |
| } |
| |
| /**Function************************************************************* |
| |
| Synopsis [] |
| |
| Description [] |
| |
| SideEffects [] |
| |
| SeeAlso [] |
| |
| ***********************************************************************/ |
| int Abc_CommandGlucose( Abc_Frame_t * pAbc, int argc, char ** argv ) |
| { |
| int c = 0; |
| int pre = 1; |
| int verb = 0; |
| int nConfls = 0; |
| |
| Glucose_Pars pPars; |
| Extra_UtilGetoptReset(); |
| while ( ( c = Extra_UtilGetopt( argc, argv, "Cpvh" ) ) != EOF ) |
| { |
| switch ( c ) |
| { |
| case 'C': |
| if ( globalUtilOptind >= argc ) |
| { |
| Abc_Print( -1, "Command line switch \"-C\" should be followed by an integer.\n" ); |
| goto usage; |
| } |
| nConfls = atoi(argv[globalUtilOptind]); |
| globalUtilOptind++; |
| if ( nConfls < 0 ) |
| goto usage; |
| break; |
| case 'p': |
| pre ^= 1; |
| break; |
| case 'v': |
| verb ^= 1; |
| break; |
| case 'h': |
| goto usage; |
| default: |
| goto usage; |
| } |
| } |
| |
| pPars = Glucose_CreatePars(pre,verb,0,nConfls); |
| |
| if ( argc == globalUtilOptind + 1 ) |
| { |
| Glucose_SolveCnf( argv[globalUtilOptind], &pPars ); |
| return 0; |
| } |
| |
| if ( pAbc->pGia == NULL ) |
| { |
| Abc_Print( -1, "Abc_CommandGlucose(): There is no AIG.\n" ); |
| return 1; |
| } |
| |
| if ( Glucose_SolveAig( pAbc->pGia, &pPars ) == 10 ) |
| Abc_FrameReplaceCex( pAbc, &pAbc->pGia->pCexComb ); |
| |
| return 0; |
| |
| usage: |
| Abc_Print( -2, "usage: &glucose [-C num] [-pvh] <file.cnf>\n" ); |
| Abc_Print( -2, "\t run Glucose 3.0 by Gilles Audemard and Laurent Simon\n" ); |
| Abc_Print( -2, "\t-C num : conflict limit [default = %d]\n", nConfls ); |
| Abc_Print( -2, "\t-p : enable preprocessing [default = %d]\n",pre); |
| Abc_Print( -2, "\t-v : verbosity [default = %d]\n",verb); |
| Abc_Print( -2, "\t-h : print the command usage\n"); |
| Abc_Print( -2, "\t<file.cnf> : (optional) CNF file to solve\n"); |
| return 1; |
| } |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// END OF FILE /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| ABC_NAMESPACE_IMPL_END |