summaryrefslogtreecommitdiffstats
path: root/src/opt/sim/sim.h
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2007-09-30 08:01:00 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2007-09-30 08:01:00 -0700
commite54d9691616b9a0326e2fdb3156bb4eeb8abfcd7 (patch)
treede3ffe87c3e17950351e3b7d97fa18318bd5ea9a /src/opt/sim/sim.h
parent7d7e60f2dc84393cd4c5db22d2eaf7b1fb1a79b2 (diff)
downloadabc-e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7.tar.gz
abc-e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7.tar.bz2
abc-e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7.zip
Version abc70930
Diffstat (limited to 'src/opt/sim/sim.h')
-rw-r--r--src/opt/sim/sim.h233
1 files changed, 0 insertions, 233 deletions
diff --git a/src/opt/sim/sim.h b/src/opt/sim/sim.h
deleted file mode 100644
index 7fcf5ae6..00000000
--- a/src/opt/sim/sim.h
+++ /dev/null
@@ -1,233 +0,0 @@
-/**CFile****************************************************************
-
- FileName [sim.h]
-
- SystemName [ABC: Logic synthesis and verification system.]
-
- PackageName [Simulation package.]
-
- Synopsis [External declarations.]
-
- Author [Alan Mishchenko]
-
- Affiliation [UC Berkeley]
-
- Date [Ver. 1.0. Started - June 20, 2005.]
-
- Revision [$Id: sim.h,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
-
-***********************************************************************/
-
-#ifndef __SIM_H__
-#define __SIM_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- The ideas realized in this package are described in the paper:
- "Detecting Symmetries in Boolean Functions using Circuit Representation,
- Simulation, and Satisfiability".
-*/
-
-////////////////////////////////////////////////////////////////////////
-/// INCLUDES ///
-////////////////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////////////////
-/// PARAMETERS ///
-////////////////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////////////////
-/// BASIC TYPES ///
-////////////////////////////////////////////////////////////////////////
-
-typedef struct Sym_Man_t_ Sym_Man_t;
-struct Sym_Man_t_
-{
- // info about the network
- Abc_Ntk_t * pNtk; // the network
- Vec_Ptr_t * vNodes; // internal nodes in topological order
- int nInputs;
- int nOutputs;
- // internal simulation information
- int nSimWords; // the number of bits in simulation info
- Vec_Ptr_t * vSim; // simulation info
- // support information
- Vec_Ptr_t * vSuppFun; // bit representation
- Vec_Vec_t * vSupports; // integer representation
- // symmetry info for each output
- Vec_Ptr_t * vMatrSymms; // symmetric pairs
- Vec_Ptr_t * vMatrNonSymms; // non-symmetric pairs
- Vec_Int_t * vPairsTotal; // total pairs
- Vec_Int_t * vPairsSym; // symmetric pairs
- Vec_Int_t * vPairsNonSym; // non-symmetric pairs
- // temporary simulation info
- unsigned * uPatRand;
- unsigned * uPatCol;
- unsigned * uPatRow;
- // temporary
- Vec_Int_t * vVarsU;
- Vec_Int_t * vVarsV;
- int iOutput;
- int iVar1;
- int iVar2;
- int iVar1Old;
- int iVar2Old;
- // internal data structures
- int nSatRuns;
- int nSatRunsSat;
- int nSatRunsUnsat;
- // pairs
- int nPairsSymm;
- int nPairsSymmStr;
- int nPairsNonSymm;
- int nPairsRem;
- int nPairsTotal;
- // runtime statistics
- int timeStruct;
- int timeCount;
- int timeMatr;
- int timeSim;
- int timeFraig;
- int timeSat;
- int timeTotal;
-};
-
-typedef struct Sim_Man_t_ Sim_Man_t;
-struct Sim_Man_t_
-{
- // info about the network
- Abc_Ntk_t * pNtk;
- int nInputs;
- int nOutputs;
- int fLightweight;
- // internal simulation information
- int nSimBits; // the number of bits in simulation info
- int nSimWords; // the number of words in simulation info
- Vec_Ptr_t * vSim0; // simulation info 1
- Vec_Ptr_t * vSim1; // simulation info 2
- // support information
- int nSuppBits; // the number of bits in support info
- int nSuppWords; // the number of words in support info
- Vec_Ptr_t * vSuppStr; // structural supports
- Vec_Ptr_t * vSuppFun; // functional supports
- // simulation targets
- Vec_Vec_t * vSuppTargs; // support targets
- int iInput; // the input current processed
- // internal data structures
- Extra_MmFixed_t * pMmPat;
- Vec_Ptr_t * vFifo;
- Vec_Int_t * vDiffs;
- int nSatRuns;
- int nSatRunsSat;
- int nSatRunsUnsat;
- // runtime statistics
- int timeSim;
- int timeTrav;
- int timeFraig;
- int timeSat;
- int timeTotal;
-};
-
-typedef struct Sim_Pat_t_ Sim_Pat_t;
-struct Sim_Pat_t_
-{
- int Input; // the input which it has detected
- int Output; // the output for which it was collected
- unsigned * pData; // the simulation data
-};
-
-////////////////////////////////////////////////////////////////////////
-/// MACRO DEFINITIONS ///
-////////////////////////////////////////////////////////////////////////
-
-#define SIM_NUM_WORDS(n) (((n)>>5) + (((n)&31) > 0))
-#define SIM_LAST_BITS(n) ((((n)&31) > 0)? (n)&31 : 32)
-
-#define SIM_MASK_FULL (0xFFFFFFFF)
-#define SIM_MASK_BEG(n) (SIM_MASK_FULL >> (32-n))
-#define SIM_MASK_END(n) (SIM_MASK_FULL << (n))
-#define SIM_SET_0_FROM(m,n) ((m) & ~SIM_MASK_BEG(n))
-#define SIM_SET_1_FROM(m,n) ((m) | SIM_MASK_END(n))
-
-// generating random unsigned (#define RAND_MAX 0x7fff)
-#define SIM_RANDOM_UNSIGNED ((((unsigned)rand()) << 24) ^ (((unsigned)rand()) << 12) ^ ((unsigned)rand()))
-
-// macros to get hold of bits in a bit string
-#define Sim_SetBit(p,i) ((p)[(i)>>5] |= (1<<((i) & 31)))
-#define Sim_XorBit(p,i) ((p)[(i)>>5] ^= (1<<((i) & 31)))
-#define Sim_HasBit(p,i) (((p)[(i)>>5] & (1<<((i) & 31))) > 0)
-
-// macros to get hold of the support info
-#define Sim_SuppStrSetVar(vSupps,pNode,v) Sim_SetBit((unsigned*)(vSupps)->pArray[(pNode)->Id],(v))
-#define Sim_SuppStrHasVar(vSupps,pNode,v) Sim_HasBit((unsigned*)(vSupps)->pArray[(pNode)->Id],(v))
-#define Sim_SuppFunSetVar(vSupps,Output,v) Sim_SetBit((unsigned*)(vSupps)->pArray[Output],(v))
-#define Sim_SuppFunHasVar(vSupps,Output,v) Sim_HasBit((unsigned*)(vSupps)->pArray[Output],(v))
-#define Sim_SimInfoSetVar(vSupps,pNode,v) Sim_SetBit((unsigned*)(vSupps)->pArray[(pNode)->Id],(v))
-#define Sim_SimInfoHasVar(vSupps,pNode,v) Sim_HasBit((unsigned*)(vSupps)->pArray[(pNode)->Id],(v))
-#define Sim_SimInfoGet(vInfo,pNode) ((unsigned *)((vInfo)->pArray[(pNode)->Id]))
-
-////////////////////////////////////////////////////////////////////////
-/// FUNCTION DECLARATIONS ///
-////////////////////////////////////////////////////////////////////////
-
-/*=== simMan.c ==========================================================*/
-extern Sym_Man_t * Sym_ManStart( Abc_Ntk_t * pNtk, int fVerbose );
-extern void Sym_ManStop( Sym_Man_t * p );
-extern void Sym_ManPrintStats( Sym_Man_t * p );
-extern Sim_Man_t * Sim_ManStart( Abc_Ntk_t * pNtk, int fLightweight );
-extern void Sim_ManStop( Sim_Man_t * p );
-extern void Sim_ManPrintStats( Sim_Man_t * p );
-extern Sim_Pat_t * Sim_ManPatAlloc( Sim_Man_t * p );
-extern void Sim_ManPatFree( Sim_Man_t * p, Sim_Pat_t * pPat );
-/*=== simSeq.c ==========================================================*/
-extern Vec_Ptr_t * Sim_SimulateSeqRandom( Abc_Ntk_t * pNtk, int nFrames, int nWords );
-extern Vec_Ptr_t * Sim_SimulateSeqModel( Abc_Ntk_t * pNtk, int nFrames, int * pModel );
-/*=== simSupp.c ==========================================================*/
-extern Vec_Ptr_t * Sim_ComputeStrSupp( Abc_Ntk_t * pNtk );
-extern Vec_Ptr_t * Sim_ComputeFunSupp( Abc_Ntk_t * pNtk, int fVerbose );
-/*=== simSym.c ==========================================================*/
-extern int Sim_ComputeTwoVarSymms( Abc_Ntk_t * pNtk, int fVerbose );
-/*=== simSymSat.c ==========================================================*/
-extern int Sim_SymmsGetPatternUsingSat( Sym_Man_t * p, unsigned * pPattern );
-/*=== simSymStr.c ==========================================================*/
-extern void Sim_SymmsStructCompute( Abc_Ntk_t * pNtk, Vec_Ptr_t * vMatrs, Vec_Ptr_t * vSuppFun );
-/*=== simSymSim.c ==========================================================*/
-extern void Sim_SymmsSimulate( Sym_Man_t * p, unsigned * pPatRand, Vec_Ptr_t * vMatrsNonSym );
-/*=== simUtil.c ==========================================================*/
-extern Vec_Ptr_t * Sim_UtilInfoAlloc( int nSize, int nWords, bool fClean );
-extern void Sim_UtilInfoFree( Vec_Ptr_t * p );
-extern void Sim_UtilInfoAdd( unsigned * pInfo1, unsigned * pInfo2, int nWords );
-extern void Sim_UtilInfoDetectDiffs( unsigned * pInfo1, unsigned * pInfo2, int nWords, Vec_Int_t * vDiffs );
-extern void Sim_UtilInfoDetectNews( unsigned * pInfo1, unsigned * pInfo2, int nWords, Vec_Int_t * vDiffs );
-extern void Sim_UtilInfoFlip( Sim_Man_t * p, Abc_Obj_t * pNode );
-extern bool Sim_UtilInfoCompare( Sim_Man_t * p, Abc_Obj_t * pNode );
-extern void Sim_UtilSimulate( Sim_Man_t * p, bool fFirst );
-extern void Sim_UtilSimulateNode( Sim_Man_t * p, Abc_Obj_t * pNode, bool fType, bool fType1, bool fType2 );
-extern void Sim_UtilSimulateNodeOne( Abc_Obj_t * pNode, Vec_Ptr_t * vSimInfo, int nSimWords, int nOffset );
-extern void Sim_UtilTransferNodeOne( Abc_Obj_t * pNode, Vec_Ptr_t * vSimInfo, int nSimWords, int nOffset, int fShift );
-extern int Sim_UtilCountSuppSizes( Sim_Man_t * p, int fStruct );
-extern int Sim_UtilCountOnes( unsigned * pSimInfo, int nSimWords );
-extern Vec_Int_t * Sim_UtilCountOnesArray( Vec_Ptr_t * vInfo, int nSimWords );
-extern void Sim_UtilSetRandom( unsigned * pPatRand, int nSimWords );
-extern void Sim_UtilSetCompl( unsigned * pPatRand, int nSimWords );
-extern void Sim_UtilSetConst( unsigned * pPatRand, int nSimWords, int fConst1 );
-extern int Sim_UtilInfoIsEqual( unsigned * pPats1, unsigned * pPats2, int nSimWords );
-extern int Sim_UtilInfoIsImp( unsigned * pPats1, unsigned * pPats2, int nSimWords );
-extern int Sim_UtilInfoIsClause( unsigned * pPats1, unsigned * pPats2, int nSimWords );
-extern int Sim_UtilCountAllPairs( Vec_Ptr_t * vSuppFun, int nSimWords, Vec_Int_t * vCounters );
-extern void Sim_UtilCountPairsAll( Sym_Man_t * p );
-extern int Sim_UtilMatrsAreDisjoint( Sym_Man_t * p );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-////////////////////////////////////////////////////////////////////////
-/// END OF FILE ///
-////////////////////////////////////////////////////////////////////////
-