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

  FileName    [fxu.h]

  PackageName [MVSIS 2.0: Multi-valued logic synthesis system.]

  Synopsis    [External declarations of fast extract for unate covers.]

  Author      [MVSIS Group]
  
  Affiliation [UC Berkeley]

  Date        [Ver. 1.0. Started - February 1, 2003.]

  Revision    [$Id: fxu.h,v 1.0 2003/02/01 00:00:00 alanmi Exp $]

***********************************************************************/

19 20
#ifndef ABC__opt__fxu__fxu_h
#define ABC__opt__fxu__fxu_h
Alan Mishchenko committed
21

22

Alan Mishchenko committed
23 24 25 26
////////////////////////////////////////////////////////////////////////
///                          INCLUDES                                ///
////////////////////////////////////////////////////////////////////////

27
#include "misc/vec/vec.h"
Alan Mishchenko committed
28 29 30 31 32

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

33 34 35 36


ABC_NAMESPACE_HEADER_START

Alan Mishchenko committed
37

Alan Mishchenko committed
38 39 40 41 42 43 44 45 46 47
////////////////////////////////////////////////////////////////////////
///                    STRUCTURE DEFINITIONS                         ///
////////////////////////////////////////////////////////////////////////

typedef struct FxuDataStruct   Fxu_Data_t;

// structure for the FX input/output data 
struct FxuDataStruct
{
    // user specified parameters
48 49 50 51 52
    int               fOnlyS;           // set to 1 to have only single-cube divs
    int               fOnlyD;           // set to 1 to have only double-cube divs
    int               fUse0;            // set to 1 to have 0-weight also extracted
    int               fUseCompl;        // set to 1 to have complement taken into account
    int               fVerbose;         // set to 1 to have verbose output
53
    int               fVeryVerbose;     // set to 1 to have more verbose output
Alan Mishchenko committed
54
    int               nNodesExt;        // the number of divisors to extract
Alan Mishchenko committed
55 56
    int               nSingleMax;       // the max number of single-cube divisors to consider
    int               nPairsMax;        // the max number of double-cube divisors to consider
57 58
    int               WeightMin;        // the min weight of a divisor to extract
    int               LitCountMax;      // the max literal count of a divisor to consider
59
    int               fCanonDivs;       // use only canonical divisors (AND/XOR/MUX) 
Alan Mishchenko committed
60 61 62 63 64 65 66
    // the input information
    Vec_Ptr_t *       vSops;            // the SOPs for each node in the network
    Vec_Ptr_t *       vFanins;          // the fanins of each node in the network
    // output information
    Vec_Ptr_t *       vSopsNew;         // the SOPs for each node in the network after extraction
    Vec_Ptr_t *       vFaninsNew;       // the fanins of each node in the network after extraction
    // the SOP manager
67
    Mem_Flex_t *      pManSop;
Alan Mishchenko committed
68 69 70
    // statistics   
    int               nNodesOld;        // the old number of nodes
    int               nNodesNew;        // the number of divisors actually extracted
Alan Mishchenko committed
71 72 73
};

////////////////////////////////////////////////////////////////////////
Alan Mishchenko committed
74
///                       MACRO DEFINITIONS                          ///
Alan Mishchenko committed
75 76 77
////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////
Alan Mishchenko committed
78
///                     FUNCTION DEFINITIONS                         ///
Alan Mishchenko committed
79 80 81
////////////////////////////////////////////////////////////////////////

/*===== fxu.c ==========================================================*/
82
extern void   Abc_NtkSetDefaultFxParams( Fxu_Data_t * p );
83 84
extern int    Abc_NtkFastExtract( Abc_Ntk_t * pNtk, Fxu_Data_t * p );
extern void   Abc_NtkFxuFreeInfo( Fxu_Data_t * p );
Alan Mishchenko committed
85

86 87 88 89 90


ABC_NAMESPACE_HEADER_END


Alan Mishchenko committed
91 92 93

#endif

Alan Mishchenko committed
94 95 96 97
////////////////////////////////////////////////////////////////////////
///                       END OF FILE                                ///
////////////////////////////////////////////////////////////////////////