ssw.h 8.96 KB
Newer Older
Alan Mishchenko committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/**CFile****************************************************************

  FileName    [ssw.h] 

  SystemName  [ABC: Logic synthesis and verification system.]

  PackageName [Inductive prover with constraints.]

  Synopsis    [External declarations.]

  Author      [Alan Mishchenko]
  
  Affiliation [UC Berkeley]

  Date        [Ver. 1.0. Started - September 1, 2008.]

  Revision    [$Id: ssw.h,v 1.00 2008/09/01 00:00:00 alanmi Exp $]

***********************************************************************/
Alan Mishchenko committed
20

21 22
#ifndef ABC__aig__ssw__ssw_h
#define ABC__aig__ssw__ssw_h
Alan Mishchenko committed
23

24

Alan Mishchenko committed
25 26 27 28 29 30 31 32
////////////////////////////////////////////////////////////////////////
///                          INCLUDES                                ///
////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////
///                         PARAMETERS                               ///
////////////////////////////////////////////////////////////////////////

33
ABC_NAMESPACE_HEADER_START
Alan Mishchenko committed
34

Alan Mishchenko committed
35 36 37 38 39 40 41 42 43 44
////////////////////////////////////////////////////////////////////////
///                         BASIC TYPES                              ///
////////////////////////////////////////////////////////////////////////

// choicing parameters
typedef struct Ssw_Pars_t_ Ssw_Pars_t;
struct Ssw_Pars_t_
{
    int              nPartSize;     // size of the partition
    int              nOverSize;     // size of the overlap between partitions
Alan Mishchenko committed
45
    int              nProcs;        // the number of processors
Alan Mishchenko committed
46
    int              nFramesK;      // the induction depth
Alan Mishchenko committed
47
    int              nFramesAddSim; // the number of additional frames to simulate
48 49
    int              fConstrs;      // treat the last nConstrs POs as seq constraints
    int              fMergeFull;    // enables full merge when constraints are used
Alan Mishchenko committed
50 51
    int              nMaxLevs;      // the max number of levels of nodes to consider
    int              nBTLimit;      // conflict limit at a node
Alan Mishchenko committed
52
    int              nBTLimitGlobal;// conflict limit for multiple runs
Alan Mishchenko committed
53
    int              nMinDomSize;   // min clock domain considered for optimization
Alan Mishchenko committed
54
    int              nItersStop;    // stop after the given number of iterations
Alan Mishchenko committed
55 56
    int              fDumpSRInit;   // dumps speculative reduction
    int              nResimDelta;   // the number of nodes to resimulate
57 58
    int              nStepsMax;     // (scorr only) the max number of induction steps
    int              TimeLimit;     // time out in seconds
59
    int              nLimitMax;     // the limit on the number of iterations
Alan Mishchenko committed
60 61
    int              fPolarFlip;    // uses polarity adjustment
    int              fLatchCorr;    // perform register correspondence
62
    int              fConstCorr;    // perform constant correspondence
63
    int              fOutputCorr;   // perform 'PO correspondence'
Alan Mishchenko committed
64
    int              fSemiFormal;   // enable semiformal filtering
65
//    int              fUniqueness;   // enable uniqueness constraints
Alan Mishchenko committed
66
    int              fDynamic;      // enable dynamic addition of constraints
Alan Mishchenko committed
67 68 69
    int              fLocalSim;     // enable local simulation simulation
    int              fPartSigCorr;  // uses partial signal correspondence
    int              nIsleDist;     // extends islands by the given distance
Alan Mishchenko committed
70 71
    int              fScorrGia;     // new signal correspondence implementation
    int              fUseCSat;      // new SAT solver using when fScorrGia is selected
Alan Mishchenko committed
72
    int              fVerbose;      // verbose stats
Alan Mishchenko committed
73
    int              fFlopVerbose;  // verbose printout of redundant flops
74
    int              fEquivDump;    // enables dumping equivalences
75
    int              fEquivDump2;   // enables dumping equivalences
76
    int              fStopWhenGone; // stop when PO output is not a candidate constant
Alan Mishchenko committed
77
    // optimized latch correspondence
Alan Mishchenko committed
78 79
    int              fLatchCorrOpt; // perform register correspondence (optimized)
    int              nSatVarMax;    // max number of SAT vars before recycling SAT solver (optimized latch corr only)
Alan Mishchenko committed
80
    int              nRecycleCalls; // calls to perform before recycling SAT solver (optimized latch corr only)
Alan Mishchenko committed
81 82 83
    // optimized signal correspondence
    int              nSatVarMax2;   // max number of SAT vars before recycling SAT solver (optimized latch corr only)
    int              nRecycleCalls2;// calls to perform before recycling SAT solver (optimized latch corr only)
Alan Mishchenko committed
84 85
    // internal parameters
    int              nIters;        // the number of iterations performed
Alan Mishchenko committed
86
    int              nConflicts;    // the total number of conflicts performed
87 88 89
    // callback
    void *           pData;
    void *           pFunc;
Alan Mishchenko committed
90 91
};

92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
typedef struct Ssw_RarPars_t_ Ssw_RarPars_t;
struct Ssw_RarPars_t_
{
    int              nFrames;
    int              nWords;
    int              nBinSize;
    int              nRounds;
    int              nRestart;
    int              nRandSeed;
    int              TimeOut;
    int              TimeOutGap;
    int              fSolveAll;
    int              fSetLastState;
    int              fVerbose;
    int              fNotVerbose;
107
    int              fSilent;
108 109 110 111
    int              fDropSatOuts;
    int              fMiter;
    int              fUseCex;
    int              fLatchOnly;
112
    int              fUseFfGrouping;
113
    int              nSolved;
114
    Abc_Cex_t *      pCex;
115
    int(*pFuncOnFail)(int,Abc_Cex_t*); // called for a failed output in MO mode
116 117
};

Alan Mishchenko committed
118 119
typedef struct Ssw_Sml_t_ Ssw_Sml_t; // sequential simulation manager

Alan Mishchenko committed
120 121 122 123 124 125 126 127
////////////////////////////////////////////////////////////////////////
///                      MACRO DEFINITIONS                           ///
////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////
///                    FUNCTION DECLARATIONS                         ///
////////////////////////////////////////////////////////////////////////

Alan Mishchenko committed
128 129
/*=== sswBmc.c ==========================================================*/
extern int           Ssw_BmcDynamic( Aig_Man_t * pAig, int nFramesMax, int nConfLimit, int fVerbose, int * piFrame );
130 131
/*=== sswConstr.c ==========================================================*/
extern int           Ssw_ManSetConstrPhases( Aig_Man_t * p, int nFrames, Vec_Int_t ** pvInits );
Alan Mishchenko committed
132 133
/*=== sswCore.c ==========================================================*/
extern void          Ssw_ManSetDefaultParams( Ssw_Pars_t * p );
Alan Mishchenko committed
134 135 136
extern void          Ssw_ManSetDefaultParamsLcorr( Ssw_Pars_t * p );
extern Aig_Man_t *   Ssw_SignalCorrespondence( Aig_Man_t * pAig, Ssw_Pars_t * pPars );
extern Aig_Man_t *   Ssw_LatchCorrespondence( Aig_Man_t * pAig, Ssw_Pars_t * pPars );
Alan Mishchenko committed
137 138 139
/*=== sswIslands.c ==========================================================*/
extern int           Ssw_SecWithSimilarityPairs( Aig_Man_t * p0, Aig_Man_t * p1, Vec_Int_t * vPairs, Ssw_Pars_t * pPars );
extern int           Ssw_SecWithSimilarity( Aig_Man_t * p0, Aig_Man_t * p1, Ssw_Pars_t * pPars );
Alan Mishchenko committed
140
/*=== sswMiter.c ===================================================*/
Alan Mishchenko committed
141 142
/*=== sswPart.c ==========================================================*/
extern Aig_Man_t *   Ssw_SignalCorrespondencePart( Aig_Man_t * pAig, Ssw_Pars_t * pPars );
Alan Mishchenko committed
143
/*=== sswPairs.c ===================================================*/
Alan Mishchenko committed
144
extern int           Ssw_MiterStatus( Aig_Man_t * p, int fVerbose );
Alan Mishchenko committed
145 146
extern int           Ssw_SecWithPairs( Aig_Man_t * pAig1, Aig_Man_t * pAig2, Vec_Int_t * vIds1, Vec_Int_t * vIds2, Ssw_Pars_t * pPars );
extern int           Ssw_SecGeneral( Aig_Man_t * pAig1, Aig_Man_t * pAig2, Ssw_Pars_t * pPars );
Alan Mishchenko committed
147
extern int           Ssw_SecGeneralMiter( Aig_Man_t * pMiter, Ssw_Pars_t * pPars );
148
/*=== sswRarity.c ===================================================*/
149 150 151
extern void          Ssw_RarSetDefaultParams( Ssw_RarPars_t * p );
extern int           Ssw_RarSignalFilter( Aig_Man_t * pAig, Ssw_RarPars_t * pPars );
extern int           Ssw_RarSimulate( Aig_Man_t * pAig, Ssw_RarPars_t * pPars );
Alan Mishchenko committed
152
/*=== sswSim.c ===================================================*/
Alan Mishchenko committed
153 154 155 156 157 158 159 160
extern Ssw_Sml_t *   Ssw_SmlSimulateComb( Aig_Man_t * pAig, int nWords );
extern Ssw_Sml_t *   Ssw_SmlSimulateSeq( Aig_Man_t * pAig, int nPref, int nFrames, int nWords );
extern void          Ssw_SmlUnnormalize( Ssw_Sml_t * p );
extern void          Ssw_SmlStop( Ssw_Sml_t * p );
extern int           Ssw_SmlNumFrames( Ssw_Sml_t * p );
extern int           Ssw_SmlNumWordsTotal( Ssw_Sml_t * p );
extern unsigned *    Ssw_SmlSimInfo( Ssw_Sml_t * p, Aig_Obj_t * pObj );
extern int           Ssw_SmlObjsAreEqualWord( Ssw_Sml_t * p, Aig_Obj_t * pObj0, Aig_Obj_t * pObj1 );
161
extern void          Ssw_SmlInitializeSpecial( Ssw_Sml_t * p, Vec_Int_t * vInit );
162
extern int           Ssw_SmlCheckNonConstOutputs( Ssw_Sml_t * p );
163 164
extern Vec_Ptr_t *   Ssw_SmlSimDataPointers( Ssw_Sml_t * p );

165 166 167

ABC_NAMESPACE_HEADER_END

Alan Mishchenko committed
168 169 170 171 172 173
#endif

////////////////////////////////////////////////////////////////////////
///                       END OF FILE                                ///
////////////////////////////////////////////////////////////////////////