ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
pdr.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Pdr_Par_t_
 

Typedefs

typedef typedefABC_NAMESPACE_HEADER_START struct Pdr_Par_t_ Pdr_Par_t
 INCLUDES ///.
 

Functions

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

Typedef Documentation

◆ Pdr_Par_t

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

◆ Pdr_ManSetDefaultParams()

void Pdr_ManSetDefaultParams ( Pdr_Par_t * pPars)
extern

MACRO DEFINITIONS ///.

FUNCTION DECLARATIONS ///

MACRO DEFINITIONS ///.

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

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

Description []

SideEffects []

SeeAlso []

Definition at line 50 of file pdrCore.c.

51{
52 memset( pPars, 0, sizeof(Pdr_Par_t) );
53// pPars->iOutput = -1; // zero-based output number
54 pPars->nRecycle = 300; // limit on vars for recycling
55 pPars->nFrameMax = 10000; // limit on number of timeframes
56 pPars->nTimeOut = 0; // timeout in seconds
57 pPars->nTimeOutGap = 0; // timeout in seconds since the last solved
58 pPars->nConfLimit = 0; // limit on SAT solver conflicts
59 pPars->nConfGenLimit = 0; // limit on SAT solver conflicts during generalization
60 pPars->nRestLimit = 0; // limit on the number of proof-obligations
61 pPars->nRandomSeed = 91648253; // value to seed the SAT solver with
62 pPars->fTwoRounds = 0; // use two rounds for generalization
63 pPars->fMonoCnf = 0; // monolythic CNF
64 pPars->fNewXSim = 0; // updated X-valued simulation
65 pPars->fFlopPrio = 0; // use structural flop priorities
66 pPars->fFlopOrder = 0; // order flops for 'analyze_final' during generalization
67 pPars->fDumpInv = 0; // dump inductive invariant
68 pPars->fUseSupp = 1; // using support variables in the invariant
69 pPars->fShortest = 0; // forces bug traces to be shortest
70 pPars->fUsePropOut = 1; // use property output
71 pPars->fSkipDown = 1; // apply down in generalization
72 pPars->fCtgs = 0; // handle CTGs in down
73 pPars->fUseAbs = 0; // use abstraction
74 pPars->fUseSimpleRef = 0; // simplified CEX refinement
75 pPars->fVerbose = 0; // verbose output
76 pPars->fVeryVerbose = 0; // very verbose output
77 pPars->fNotVerbose = 0; // not printing line-by-line progress
78 pPars->iFrame = -1; // explored up to this frame
79 pPars->nFailOuts = 0; // the number of disproved outputs
80 pPars->nDropOuts = 0; // the number of timed out outputs
81 pPars->timeLastSolved = 0; // last one solved
82 pPars->pInvFileName = NULL; // invariant file name
83 pPars->fBlocking = 0; // clause pushing with blocking
84}
typedefABC_NAMESPACE_HEADER_START struct Pdr_Par_t_ Pdr_Par_t
INCLUDES ///.
Definition pdr.h:40
char * memset()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Pdr_ManSolve()

int Pdr_ManSolve ( Aig_Man_t * pAig,
Pdr_Par_t * pPars )
extern

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

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 1765 of file pdrCore.c.

1766{
1767 Pdr_Man_t * p;
1768 int k, RetValue;
1769 abctime clk = Abc_Clock();
1770 if ( pPars->nTimeOutOne && !pPars->fSolveAll )
1771 pPars->nTimeOutOne = 0;
1772 if ( pPars->nTimeOutOne && pPars->nTimeOut == 0 )
1773 pPars->nTimeOut = pPars->nTimeOutOne * Saig_ManPoNum(pAig) / 1000 + (int)((pPars->nTimeOutOne * Saig_ManPoNum(pAig) % 1000) > 0);
1774 if ( pPars->fVerbose )
1775 {
1776// Abc_Print( 1, "Running PDR by Niklas Een (aka IC3 by Aaron Bradley) with these parameters:\n" );
1777 Abc_Print( 1, "VarMax = %d. FrameMax = %d. QueMax = %d. TimeMax = %d. ",
1778 pPars->nRecycle,
1779 pPars->nFrameMax,
1780 pPars->nRestLimit,
1781 pPars->nTimeOut );
1782 Abc_Print( 1, "MonoCNF = %s. SkipGen = %s. SolveAll = %s.\n",
1783 pPars->fMonoCnf ? "yes" : "no",
1784 pPars->fSkipGeneral ? "yes" : "no",
1785 pPars->fSolveAll ? "yes" : "no" );
1786 }
1787 ABC_FREE( pAig->pSeqModel );
1788 p = Pdr_ManStart( pAig, pPars, NULL );
1789 RetValue = Pdr_ManSolveInt( p );
1790 if ( RetValue == 0 )
1791 assert( pAig->pSeqModel != NULL || p->vCexes != NULL );
1792 if ( p->vCexes )
1793 {
1794 assert( p->pAig->vSeqModelVec == NULL );
1795 p->pAig->vSeqModelVec = p->vCexes;
1796 p->vCexes = NULL;
1797 }
1798 if ( p->pPars->fDumpInv )
1799 {
1800 char * pFileName = pPars->pInvFileName ? pPars->pInvFileName : Extra_FileNameGenericAppend(p->pAig->pName, "_inv.pla");
1802 Pdr_ManDumpClauses( p, pFileName, RetValue==1 );
1803 printf( "Dumped inductive invariant in file \"%s\".\n", pFileName );
1804 }
1805 else if ( RetValue == 1 )
1807 p->tTotal += Abc_Clock() - clk;
1808 Pdr_ManStop( p );
1809 pPars->iFrame--;
1810 // convert all -2 (unknown) entries into -1 (undec)
1811 if ( pPars->vOutMap )
1812 for ( k = 0; k < Saig_ManPoNum(pAig); k++ )
1813 if ( Vec_IntEntry(pPars->vOutMap, k) == -2 ) // unknown
1814 Vec_IntWriteEntry( pPars->vOutMap, k, -1 ); // undec
1815 if ( pPars->fUseBridge )
1816 Gia_ManToBridgeAbort( stdout, 7, (unsigned char *)"timeout" );
1817 return RetValue;
1818}
ABC_INT64_T abctime
Definition abc_global.h:332
#define ABC_FREE(obj)
Definition abc_global.h:267
ABC_DLL void Abc_FrameSetInv(Vec_Int_t *vInv)
Definition mainFrame.c:104
Cube * p
Definition exorList.c:222
char * Extra_FileNameGenericAppend(char *pBase, char *pSuffix)
int Pdr_ManSolveInt(Pdr_Man_t *p)
Definition pdrCore.c:1394
int Gia_ManToBridgeAbort(FILE *pFile, int Size, unsigned char *pBuffer)
Definition utilBridge.c:178
Vec_Int_t * Pdr_ManDeriveInfinityClauses(Pdr_Man_t *p, int fReduce)
Definition pdrInv.c:595
void Pdr_ManDumpClauses(Pdr_Man_t *p, char *pFileName, int fProved)
Definition pdrInv.c:352
Pdr_Man_t * Pdr_ManStart(Aig_Man_t *pAig, Pdr_Par_t *pPars, Vec_Int_t *vPrioInit)
Definition pdrMan.c:248
void Pdr_ManStop(Pdr_Man_t *p)
Definition pdrMan.c:318
struct Pdr_Man_t_ Pdr_Man_t
Definition pdrInt.h:95
#define assert(ex)
Definition util_old.h:213
Here is the call graph for this function:
Here is the caller graph for this function: