|
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.