abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
pdr.h File Reference

Go to the source code of this file.

Data Structures

struct  Pdr_Par_t_
 

Typedefs

typedef
typedefABC_NAMESPACE_HEADER_START
struct Pdr_Par_t_ 
Pdr_Par_t
 INCLUDES ///. More...
 

Functions

void Pdr_ManSetDefaultParams (Pdr_Par_t *pPars)
 MACRO DEFINITIONS ///. More...
 
int Pdr_ManSolve (Aig_Man_t *p, Pdr_Par_t *pPars)
 

Typedef Documentation

typedef typedefABC_NAMESPACE_HEADER_START struct Pdr_Par_t_ Pdr_Par_t

INCLUDES ///.

CFile****************************************************************

FileName [pdr.h]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Property driven reachability.]

Synopsis [External declarations.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

Date [Ver. 1.0. Started - November 20, 2010.]

Revision [

Id:
pdr.h,v 1.00 2010/11/20 00:00:00 alanmi Exp

]PARAMETERS ///BASIC TYPES ///

Definition at line 40 of file pdr.h.

Function Documentation

void Pdr_ManSetDefaultParams ( Pdr_Par_t pPars)

MACRO DEFINITIONS ///.

FUNCTION DECLARATIONS ///

MACRO DEFINITIONS ///.

Function*************************************************************

Synopsis [Returns 1 if the state could be blocked.]

Description []

SideEffects []

SeeAlso []

Definition at line 48 of file pdrCore.c.

49 {
50  memset( pPars, 0, sizeof(Pdr_Par_t) );
51 // pPars->iOutput = -1; // zero-based output number
52  pPars->nRecycle = 300; // limit on vars for recycling
53  pPars->nFrameMax = 10000; // limit on number of timeframes
54  pPars->nTimeOut = 0; // timeout in seconds
55  pPars->nTimeOutGap = 0; // timeout in seconds since the last solved
56  pPars->nConfLimit = 0; // limit on SAT solver conflicts
57  pPars->nRestLimit = 0; // limit on the number of proof-obligations
58  pPars->fTwoRounds = 0; // use two rounds for generalization
59  pPars->fMonoCnf = 0; // monolythic CNF
60  pPars->fDumpInv = 0; // dump inductive invariant
61  pPars->fShortest = 0; // forces bug traces to be shortest
62  pPars->fVerbose = 0; // verbose output
63  pPars->fVeryVerbose = 0; // very verbose output
64  pPars->fNotVerbose = 0; // not printing line-by-line progress
65  pPars->iFrame = -1; // explored up to this frame
66  pPars->nFailOuts = 0; // the number of disproved outputs
67  pPars->nDropOuts = 0; // the number of timed out outputs
68  pPars->timeLastSolved = 0; // last one solved
69 }
char * memset()
typedefABC_NAMESPACE_HEADER_START struct Pdr_Par_t_ Pdr_Par_t
INCLUDES ///.
Definition: pdr.h:40
int Pdr_ManSolve ( Aig_Man_t pAig,
Pdr_Par_t pPars 
)

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 886 of file pdrCore.c.

887 {
888  Pdr_Man_t * p;
889  int k, RetValue;
890  abctime clk = Abc_Clock();
891  if ( pPars->nTimeOutOne && !pPars->fSolveAll )
892  pPars->nTimeOutOne = 0;
893  if ( pPars->nTimeOutOne && pPars->nTimeOut == 0 )
894  pPars->nTimeOut = pPars->nTimeOutOne * Saig_ManPoNum(pAig) / 1000 + (int)((pPars->nTimeOutOne * Saig_ManPoNum(pAig) % 1000) > 0);
895  if ( pPars->fVerbose )
896  {
897 // Abc_Print( 1, "Running PDR by Niklas Een (aka IC3 by Aaron Bradley) with these parameters:\n" );
898  Abc_Print( 1, "VarMax = %d. FrameMax = %d. QueMax = %d. TimeMax = %d. ",
899  pPars->nRecycle,
900  pPars->nFrameMax,
901  pPars->nRestLimit,
902  pPars->nTimeOut );
903  Abc_Print( 1, "MonoCNF = %s. SkipGen = %s. SolveAll = %s.\n",
904  pPars->fMonoCnf ? "yes" : "no",
905  pPars->fSkipGeneral ? "yes" : "no",
906  pPars->fSolveAll ? "yes" : "no" );
907  }
908  ABC_FREE( pAig->pSeqModel );
909  p = Pdr_ManStart( pAig, pPars, NULL );
910  RetValue = Pdr_ManSolveInt( p );
911  if ( RetValue == 0 )
912  assert( pAig->pSeqModel != NULL || p->vCexes != NULL );
913  if ( p->vCexes )
914  {
915  assert( p->pAig->vSeqModelVec == NULL );
916  p->pAig->vSeqModelVec = p->vCexes;
917  p->vCexes = NULL;
918  }
919  if ( p->pPars->fDumpInv )
920  Pdr_ManDumpClauses( p, (char *)"inv.pla", RetValue==1 );
921  p->tTotal += Abc_Clock() - clk;
922  Pdr_ManStop( p );
923  pPars->iFrame--;
924  // convert all -2 (unknown) entries into -1 (undec)
925  if ( pPars->vOutMap )
926  for ( k = 0; k < Saig_ManPoNum(pAig); k++ )
927  if ( Vec_IntEntry(pPars->vOutMap, k) == -2 ) // unknown
928  Vec_IntWriteEntry( pPars->vOutMap, k, -1 ); // undec
929  if ( pPars->fUseBridge )
930  Gia_ManToBridgeAbort( stdout, 7, (unsigned char *)"timeout" );
931  return RetValue;
932 }
Aig_Man_t * pAig
Definition: pdrInt.h:70
static int Saig_ManPoNum(Aig_Man_t *p)
Definition: saig.h:74
static Llb_Mgr_t * p
Definition: llb3Image.c:950
Pdr_Man_t * Pdr_ManStart(Aig_Man_t *pAig, Pdr_Par_t *pPars, Vec_Int_t *vPrioInit)
DECLARATIONS ///.
Definition: pdrMan.c:45
static abctime Abc_Clock()
Definition: abc_global.h:279
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
Definition: bblif.c:285
int Pdr_ManSolveInt(Pdr_Man_t *p)
Definition: pdrCore.c:570
static int Vec_IntEntry(Vec_Int_t *p, int i)
Definition: bblif.c:268
Pdr_Par_t * pPars
Definition: pdrInt.h:69
void Pdr_ManDumpClauses(Pdr_Man_t *p, char *pFileName, int fProved)
Definition: pdrInv.c:313
static void Abc_Print(int level, const char *format,...)
Definition: abc_global.h:313
abctime tTotal
Definition: pdrInt.h:132
#define ABC_FREE(obj)
Definition: abc_global.h:232
void Pdr_ManStop(Pdr_Man_t *p)
Definition: pdrMan.c:106
int Gia_ManToBridgeAbort(FILE *pFile, int Size, unsigned char *pBuffer)
Definition: utilBridge.c:175
Vec_Ptr_t * vCexes
Definition: pdrInt.h:82
#define assert(ex)
Definition: util_old.h:213
ABC_INT64_T abctime
Definition: abc_global.h:278