mirror of https://github.com/YosysHQ/abc.git
Tuning for multi-ouptut solver.
This commit is contained in:
parent
0ab8cd1191
commit
a1d2ba0fcc
|
|
@ -32439,8 +32439,9 @@ int Abc_CommandAbc9MultiProve( Abc_Frame_t * pAbc, int argc, char ** argv )
|
|||
pPars->TimeOutGlo = 30;
|
||||
pPars->TimeOutLoc = 2;
|
||||
pPars->TimeOutInc = 100;
|
||||
pPars->TimePerOut = 0;
|
||||
Extra_UtilGetoptReset();
|
||||
while ( ( c = Extra_UtilGetopt( argc, argv, "TLMsdvwh" ) ) != EOF )
|
||||
while ( ( c = Extra_UtilGetopt( argc, argv, "TLMHsdvwh" ) ) != EOF )
|
||||
{
|
||||
switch ( c )
|
||||
{
|
||||
|
|
@ -32477,6 +32478,17 @@ int Abc_CommandAbc9MultiProve( Abc_Frame_t * pAbc, int argc, char ** argv )
|
|||
if ( pPars->TimeOutInc <= 0 )
|
||||
goto usage;
|
||||
break;
|
||||
case 'H':
|
||||
if ( globalUtilOptind >= argc )
|
||||
{
|
||||
Abc_Print( -1, "Command line switch \"-M\" should be followed by an integer.\n" );
|
||||
goto usage;
|
||||
}
|
||||
pPars->TimePerOut = atoi(argv[globalUtilOptind]);
|
||||
globalUtilOptind++;
|
||||
if ( pPars->TimePerOut <= 0 )
|
||||
goto usage;
|
||||
break;
|
||||
case 's':
|
||||
pPars->fUseSyn ^= 1;
|
||||
break;
|
||||
|
|
@ -32512,6 +32524,7 @@ usage:
|
|||
Abc_Print( -2, "\t-T num : approximate global runtime limit in seconds [default = %d]\n", pPars->TimeOutGlo );
|
||||
Abc_Print( -2, "\t-L num : approximate local runtime limit in seconds [default = %d]\n", pPars->TimeOutLoc );
|
||||
Abc_Print( -2, "\t-M num : percentage of local runtime limit increase [default = %d]\n", pPars->TimeOutInc );
|
||||
Abc_Print( -2, "\t-H num : timeout per output in miliseconds [default = %d]\n", pPars->TimePerOut );
|
||||
Abc_Print( -2, "\t-s : toggle using combinational synthesis [default = %s]\n", pPars->fUseSyn? "yes": "no" );
|
||||
Abc_Print( -2, "\t-d : toggle dumping invariant into a file [default = %s]\n", pPars->fDumpFinal? "yes": "no" );
|
||||
Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", pPars->fVerbose? "yes": "no" );
|
||||
|
|
|
|||
|
|
@ -351,7 +351,10 @@ void Abc_CexFreeP( Abc_Cex_t ** p )
|
|||
{
|
||||
if ( *p == NULL )
|
||||
return;
|
||||
ABC_FREE( *p );
|
||||
if ( *p == (Abc_Cex_t *)(ABC_PTRINT_T)1 )
|
||||
*p = NULL;
|
||||
else
|
||||
ABC_FREE( *p );
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ struct Bmc_MulPar_t_
|
|||
int TimeOutGlo;
|
||||
int TimeOutLoc;
|
||||
int TimeOutInc;
|
||||
int TimePerOut;
|
||||
int fUseSyn;
|
||||
int fDumpFinal;
|
||||
int fVerbose;
|
||||
|
|
|
|||
|
|
@ -1649,7 +1649,7 @@ nTimeSat += Abc_Clock() - clk2;
|
|||
Vec_PtrWriteEntry( p->vCexes, k, Abc_CexDup(pCexNew, Saig_ManRegNum(pAig)) );
|
||||
}
|
||||
Abc_CexFreeP( &pCexNew0 );
|
||||
Abc_CexFreeP( &pCexNew );
|
||||
Abc_CexFree( pCexNew );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -73,6 +73,34 @@ Vec_Int_t * Gia_ManProcessOutputs( Vec_Ptr_t * vCexesIn, Vec_Ptr_t * vCexesOut,
|
|||
return vLeftOver;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Counts the number of constant 0 POs.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
int Gia_ManCountConst0PosGia( Gia_Man_t * p )
|
||||
{
|
||||
Gia_Obj_t * pObj;
|
||||
int i, Counter = 0;
|
||||
Gia_ManForEachPo( p, pObj, i )
|
||||
Counter += (Gia_ObjFaninLit0p(p, pObj) == 0);
|
||||
return Counter;
|
||||
}
|
||||
int Gia_ManCountConst0Pos( Aig_Man_t * p )
|
||||
{
|
||||
Aig_Obj_t * pObj;
|
||||
int i, Counter = 0;
|
||||
Saig_ManForEachPo( p, pObj, i )
|
||||
Counter += (Aig_ObjChild0(pObj) == Aig_ManConst0(p));
|
||||
return Counter;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis []
|
||||
|
|
@ -186,7 +214,7 @@ Vec_Ptr_t * Gia_ManMultiProveAig( Aig_Man_t * p, Bmc_MulPar_t * pPars )
|
|||
pParsBmc->fNotVerbose = 1;
|
||||
pParsBmc->fSilent = !pPars->fVeryVerbose;
|
||||
pParsBmc->nTimeOut = TimeOutLoc;
|
||||
pParsBmc->nTimeOutOne = 100;
|
||||
pParsBmc->nTimeOutOne = pPars->TimePerOut;
|
||||
RetValue *= Saig_ManBmcScalable( p, pParsBmc );
|
||||
if ( pPars->fVeryVerbose )
|
||||
Abc_Print( 1, "Some outputs are SAT (%d out of %d) after %d frames.\n",
|
||||
|
|
@ -225,6 +253,8 @@ Vec_Ptr_t * Gia_ManMultiProveAig( Aig_Man_t * p, Bmc_MulPar_t * pPars )
|
|||
TimeOutLoc += TimeOutLoc * pPars->TimeOutInc / 100;
|
||||
}
|
||||
Vec_IntFree( vOutMap );
|
||||
if ( pPars->fVerbose )
|
||||
printf( "The number of const0 POs = %d.\n", Gia_ManCountConst0Pos(p) );
|
||||
if ( pPars->fDumpFinal )
|
||||
{
|
||||
char * pFileName = Extra_FileNameGenericAppend( p->pName, "_out.aig" );
|
||||
|
|
|
|||
Loading…
Reference in New Issue