mpm.h 3.38 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 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
/**CFile****************************************************************

  FileName    [mpm.h]

  SystemName  [ABC: Logic synthesis and verification system.]

  PackageName [Configurable technology mapper.]

  Synopsis    [External declarations.]

  Author      [Alan Mishchenko]
  
  Affiliation [UC Berkeley]

  Date        [Ver. 1.0. Started - June 1, 2013.]

  Revision    [$Id: mpm.h,v 1.00 2013/06/01 00:00:00 alanmi Exp $]

***********************************************************************/
 
#ifndef ABC__map__mpm__h
#define ABC__map__mpm__h


////////////////////////////////////////////////////////////////////////
///                          INCLUDES                                ///
////////////////////////////////////////////////////////////////////////
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>

ABC_NAMESPACE_HEADER_START

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

Alan Mishchenko committed
40
#define MPM_VAR_MAX  12  
Alan Mishchenko committed
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58

////////////////////////////////////////////////////////////////////////
///                         BASIC TYPES                              ///
////////////////////////////////////////////////////////////////////////

typedef struct Mpm_LibLut_t_ Mpm_LibLut_t;
struct Mpm_LibLut_t_
{
    char *           pName;                                     // the name of the LUT library
    int              LutMax;                                    // the maximum LUT size 
    int              fVarPinDelays;                             // set to 1 if variable pin delays are specified
    int              pLutAreas[MPM_VAR_MAX+1];                  // the areas of LUTs
    int              pLutDelays[MPM_VAR_MAX+1][MPM_VAR_MAX+1];  // the delays of LUTs
};

typedef struct Mpm_Par_t_ Mpm_Par_t;
struct Mpm_Par_t_
{
Alan Mishchenko committed
59
    Mpm_LibLut_t *   pLib;
Alan Mishchenko committed
60
    void *           pScl;
Alan Mishchenko committed
61
    int              nNumCuts;
Alan Mishchenko committed
62
    int              DelayTarget;
Alan Mishchenko committed
63
    int              fUseGates;
Alan Mishchenko committed
64
    int              fUseTruth;
Alan Mishchenko committed
65
    int              fUseDsd;
Alan Mishchenko committed
66
    int              fCutMin;
Alan Mishchenko committed
67
    int              fOneRound;
Alan Mishchenko committed
68
    int              fDeriveLuts;
Alan Mishchenko committed
69 70
    int              fMap4Cnf;
    int              fMap4Aig;
Alan Mishchenko committed
71
    int              fMap4Gates;
Alan Mishchenko committed
72
    int              fVerbose;
Alan Mishchenko committed
73
    int              fVeryVerbose;
Alan Mishchenko committed
74 75 76 77 78 79 80 81 82 83 84 85 86
};

////////////////////////////////////////////////////////////////////////
///                      MACRO DEFINITIONS                           ///
////////////////////////////////////////////////////////////////////////


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

/*=== mpmCore.c ===========================================================*/
extern void           Mpm_ManSetParsDefault( Mpm_Par_t * p );
Alan Mishchenko committed
87 88 89
/*=== mpmLib.c ===========================================================*/
extern Mpm_LibLut_t * Mpm_LibLutSetSimple( int nLutSize );
extern void           Mpm_LibLutFree( Mpm_LibLut_t * pLib );
Alan Mishchenko committed
90 91 92 93 94 95 96 97 98

ABC_NAMESPACE_HEADER_END

#endif

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