abc-master
|
#include "base/abc/abc.h"
#include "misc/vec/vecWec.h"
#include "misc/vec/vecQue.h"
#include "misc/vec/vecHsh.h"
Go to the source code of this file.
Data Structures | |
struct | Fx_Man_t_ |
Macros | |
#define | Fx_ManForEachCubeVec(vVec, vCubes, vCube, i) for ( i = 0; (i < Vec_IntSize(vVec)) && ((vCube) = Vec_WecEntry(vCubes, Vec_IntEntry(vVec, i))); i++ ) |
Typedefs | |
typedef typedefABC_NAMESPACE_IMPL_START struct Fx_Man_t_ | Fx_Man_t |
DECLARATIONS ///. More... | |
Functions | |
static int | Fx_ManGetFirstVarCube (Fx_Man_t *p, Vec_Int_t *vCube) |
Vec_Wec_t * | Abc_NtkFxRetrieve (Abc_Ntk_t *pNtk) |
FUNCTION DEFINITIONS ///. More... | |
void | Abc_NtkFxInsert (Abc_Ntk_t *pNtk, Vec_Wec_t *vCubes) |
int | Abc_NtkFxCheck (Abc_Ntk_t *pNtk) |
int | Abc_NtkFxPerform (Abc_Ntk_t *pNtk, int nNewNodesMax, int LitCountMax, int fVerbose, int fVeryVerbose) |
Fx_Man_t * | Fx_ManStart (Vec_Wec_t *vCubes) |
void | Fx_ManStop (Fx_Man_t *p) |
static int | Fx_ManComputeLevelDiv (Fx_Man_t *p, Vec_Int_t *vCubeFree) |
static int | Fx_ManComputeLevelCube (Fx_Man_t *p, Vec_Int_t *vCube) |
void | Fx_ManComputeLevel (Fx_Man_t *p) |
static char | Fx_PrintDivLit (int Lit) |
static void | Fx_PrintDivOneReal (Vec_Int_t *vDiv) |
static void | Fx_PrintDivOne (Vec_Int_t *vDiv) |
static void | Fx_PrintDivArray (Vec_Int_t *vDiv) |
static void | Fx_PrintDiv (Fx_Man_t *p, int iDiv) |
static void | Fx_PrintDivisors (Fx_Man_t *p) |
static void | Fx_PrintLiterals (Fx_Man_t *p) |
static void | Fx_PrintMatrix (Fx_Man_t *p) |
static void | Fx_PrintStats (Fx_Man_t *p, abctime clk) |
static int | Fx_ManDivNormalize (Vec_Int_t *vCubeFree) |
int | Fx_ManDivFindCubeFree (Vec_Int_t *vArr1, Vec_Int_t *vArr2, Vec_Int_t *vCubeFree) |
static void | Fx_ManDivFindPivots (Vec_Int_t *vDiv, int *pLit0, int *pLit1) |
static int | Fx_ManDivRemoveLits (Vec_Int_t *vCube, Vec_Int_t *vDiv, int fCompl) |
static void | Fx_ManDivAddLits (Vec_Int_t *vCube, Vec_Int_t *vCube2, Vec_Int_t *vDiv) |
void | Fx_ManCreateLiterals (Fx_Man_t *p, int nVars) |
int | Fx_ManCubeSingleCubeDivisors (Fx_Man_t *p, Vec_Int_t *vPivot, int fRemove, int fUpdate) |
void | Fx_ManCubeDoubleCubeDivisors (Fx_Man_t *p, int iFirst, Vec_Int_t *vPivot, int fRemove, int fUpdate) |
void | Fx_ManCreateDivisors (Fx_Man_t *p) |
static void | Fx_ManCompressCubes (Vec_Wec_t *vCubes, Vec_Int_t *vLit2Cube) |
static int | Fx_ManGetCubeVar (Vec_Wec_t *vCubes, int iCube) |
void | Fx_ManFindCommonPairs (Vec_Wec_t *vCubes, Vec_Int_t *vPart0, Vec_Int_t *vPart1, Vec_Int_t *vPairs, Vec_Int_t *vCompls, Vec_Int_t *vDiv, Vec_Int_t *vCubeFree) |
void | Fx_ManUpdate (Fx_Man_t *p, int iDiv) |
int | Fx_FastExtract (Vec_Wec_t *vCubes, int ObjIdMax, int nNewNodesMax, int LitCountMax, int fVerbose, int fVeryVerbose) |
#define Fx_ManForEachCubeVec | ( | vVec, | |
vCubes, | |||
vCube, | |||
i | |||
) | for ( i = 0; (i < Vec_IntSize(vVec)) && ((vCube) = Vec_WecEntry(vCubes, Vec_IntEntry(vVec, i))); i++ ) |
DECLARATIONS ///.
CFile****************************************************************
FileName [abcFx.c]
SystemName [ABC: Logic synthesis and verification system.]
PackageName [Network and node package.]
Synopsis [Implementation of traditional "fast_extract" algorithm.]
Author [Alan Mishchenko]
Affiliation [UC Berkeley]
Date [Ver. 1.0. Started - April 26, 2013.]
Revision [
]
int Abc_NtkFxCheck | ( | Abc_Ntk_t * | pNtk | ) |
Function*************************************************************
Synopsis [Inserts SOP information after fast_extract.]
Description []
SideEffects []
SeeAlso []
Definition at line 180 of file abcFx.c.
int Abc_NtkFxPerform | ( | Abc_Ntk_t * | pNtk, |
int | nNewNodesMax, | ||
int | LitCountMax, | ||
int | fVerbose, | ||
int | fVeryVerbose | ||
) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 303 of file abcFx.c.
FUNCTION DEFINITIONS ///.
Function*************************************************************
Synopsis [Retrieves SOP information for fast_extract.]
Description []
SideEffects []
SeeAlso []
Definition at line 137 of file abcFx.c.
int Fx_FastExtract | ( | Vec_Wec_t * | vCubes, |
int | ObjIdMax, | ||
int | nNewNodesMax, | ||
int | LitCountMax, | ||
int | fVerbose, | ||
int | fVeryVerbose | ||
) |
Function*************************************************************
Synopsis [Implements the traditional fast_extract algorithm.]
Description [J. Rajski and J. Vasudevamurthi, "The testability- preserving concurrent decomposition and factorization of Boolean expressions", IEEE TCAD, Vol. 11, No. 6, June 1992, pp. 778-793.]
SideEffects []
SeeAlso []
Definition at line 1168 of file abcFx.c.
Function*************************************************************
Synopsis [Compress the cubes by removing unused ones.]
Description []
SideEffects []
SeeAlso []
Definition at line 907 of file abcFx.c.
void Fx_ManComputeLevel | ( | Fx_Man_t * | p | ) |
Definition at line 407 of file abcFx.c.
Definition at line 400 of file abcFx.c.
Function*************************************************************
Synopsis [Compute levels of the nodes.]
Description []
SideEffects []
SeeAlso []
Definition at line 393 of file abcFx.c.
void Fx_ManCreateDivisors | ( | Fx_Man_t * | p | ) |
Definition at line 871 of file abcFx.c.
void Fx_ManCreateLiterals | ( | Fx_Man_t * | p, |
int | nVars | ||
) |
Function*************************************************************
Synopsis [Setting up the data-structure.]
Description []
SideEffects []
SeeAlso []
Definition at line 746 of file abcFx.c.
void Fx_ManCubeDoubleCubeDivisors | ( | Fx_Man_t * | p, |
int | iFirst, | ||
Vec_Int_t * | vPivot, | ||
int | fRemove, | ||
int | fUpdate | ||
) |
Definition at line 822 of file abcFx.c.
Definition at line 782 of file abcFx.c.
|
inlinestatic |
Definition at line 713 of file abcFx.c.
Function*************************************************************
Synopsis [Find a cube-free divisor of the two cubes.]
Description []
SideEffects []
SeeAlso []
Definition at line 638 of file abcFx.c.
|
inlinestatic |
Function*************************************************************
Synopsis [Procedures operating on a two-cube divisor.]
Description []
SideEffects []
SeeAlso []
Definition at line 684 of file abcFx.c.
|
static |
Function*************************************************************
Synopsis [Returns 1 if the divisor should be complemented.]
Description [Normalizes the divisor by putting, first, positive control literal first and, second, positive data1 literal. As the result, a MUX divisor is (ab + !ac) and an XOR divisor is (ab + !a!b).]
SideEffects []
SeeAlso []
Definition at line 558 of file abcFx.c.
Definition at line 705 of file abcFx.c.
void Fx_ManFindCommonPairs | ( | Vec_Wec_t * | vCubes, |
Vec_Int_t * | vPart0, | ||
Vec_Int_t * | vPart1, | ||
Vec_Int_t * | vPairs, | ||
Vec_Int_t * | vCompls, | ||
Vec_Int_t * | vDiv, | ||
Vec_Int_t * | vCubeFree | ||
) |
Definition at line 929 of file abcFx.c.
|
inlinestatic |
Function*************************************************************
Synopsis [Starting the manager.]
Description []
SideEffects []
SeeAlso []
Definition at line 350 of file abcFx.c.
void Fx_ManUpdate | ( | Fx_Man_t * | p, |
int | iDiv | ||
) |
Function*************************************************************
Synopsis [Updates the data-structure when one divisor is selected.]
Description []
SideEffects []
SeeAlso []
Definition at line 984 of file abcFx.c.
|
inlinestatic |
Definition at line 471 of file abcFx.c.
|
inlinestatic |
Definition at line 460 of file abcFx.c.
|
inlinestatic |
|
inlinestatic |
Definition at line 449 of file abcFx.c.
|
inlinestatic |
Definition at line 438 of file abcFx.c.
|
static |
Definition at line 491 of file abcFx.c.
|
static |
Definition at line 501 of file abcFx.c.
Definition at line 530 of file abcFx.c.