abc-master
|
Go to the source code of this file.
Macros | |
#define | FPGA_MAX_LUTSIZE 32 |
INCLUDES ///. More... | |
#define | Fpga_IsComplement(p) (((int)((ABC_PTRUINT_T) (p) & 01))) |
GLOBAL VARIABLES ///. More... | |
#define | Fpga_Regular(p) ((Fpga_Node_t *)((ABC_PTRUINT_T)(p) & ~01)) |
#define | Fpga_Not(p) ((Fpga_Node_t *)((ABC_PTRUINT_T)(p) ^ 01)) |
#define | Fpga_NotCond(p, c) ((Fpga_Node_t *)((ABC_PTRUINT_T)(p) ^ (c))) |
#define | Fpga_Ref(p) |
#define | Fpga_Deref(p) |
#define | Fpga_RecursiveDeref(p, c) |
Typedefs | |
typedef struct Fpga_ManStruct_t_ | Fpga_Man_t |
STRUCTURE DEFINITIONS ///. More... | |
typedef struct Fpga_NodeStruct_t_ | Fpga_Node_t |
typedef struct Fpga_NodeVecStruct_t_ | Fpga_NodeVec_t |
typedef struct Fpga_CutStruct_t_ | Fpga_Cut_t |
typedef struct Fpga_LutLibStruct_t_ | Fpga_LutLib_t |
#define FPGA_MAX_LUTSIZE 32 |
INCLUDES ///.
CFile****************************************************************
FileName [fpga.h]
PackageName [MVSIS 2.0: Multi-valued logic synthesis system.]
Synopsis [Technology mapping for variable-size-LUT FPGAs.]
Author [MVSIS Group]
Affiliation [UC Berkeley]
Date [Ver. 2.0. Started - August 18, 2004.]
Revision [
]PARAMETERS ///
#define Fpga_Not | ( | p | ) | ((Fpga_Node_t *)((ABC_PTRUINT_T)(p) ^ 01)) |
#define Fpga_NotCond | ( | p, | |
c | |||
) | ((Fpga_Node_t *)((ABC_PTRUINT_T)(p) ^ (c))) |
#define Fpga_Regular | ( | p | ) | ((Fpga_Node_t *)((ABC_PTRUINT_T)(p) & ~01)) |
typedef struct Fpga_CutStruct_t_ Fpga_Cut_t |
typedef struct Fpga_LutLibStruct_t_ Fpga_LutLib_t |
typedef struct Fpga_ManStruct_t_ Fpga_Man_t |
typedef struct Fpga_NodeStruct_t_ Fpga_Node_t |
typedef struct Fpga_NodeVecStruct_t_ Fpga_NodeVec_t |
Fpga_NodeVec_t* Fpga_CollectNodeTfo | ( | Fpga_Man_t * | pMan, |
Fpga_Node_t * | pNode | ||
) |
Function*************************************************************
Synopsis [Collects the TFO of the node.]
Description []
SideEffects []
SeeAlso []
Definition at line 675 of file fpgaUtils.c.
void Fpga_CutCreateFromNode | ( | Fpga_Man_t * | p, |
int | iRoot, | ||
int * | pLeaves, | ||
int | nLeaves | ||
) |
Fpga_Node_t** Fpga_CutReadLeaves | ( | Fpga_Cut_t * | p | ) |
Definition at line 142 of file fpgaCreate.c.
int Fpga_CutReadLeavesNum | ( | Fpga_Cut_t * | p | ) |
Function*************************************************************
Synopsis [Reads parameters from the cut.]
Description []
SideEffects []
SeeAlso []
Definition at line 141 of file fpgaCreate.c.
void Fpga_CutsCleanRoot | ( | Fpga_Man_t * | pMan | ) |
Function*************************************************************
Synopsis [Clean the signatures.]
Description []
SideEffects []
SeeAlso []
Definition at line 819 of file fpgaCut.c.
void Fpga_CutsCleanSign | ( | Fpga_Man_t * | pMan | ) |
Function*************************************************************
Synopsis [Clean the signatures.]
Description []
SideEffects []
SeeAlso []
Definition at line 797 of file fpgaCut.c.
int Fpga_CutVolume | ( | Fpga_Cut_t * | pCut | ) |
Function*************************************************************
Synopsis [Derives the truth table for one cut.]
Description []
SideEffects []
SeeAlso []
Definition at line 140 of file fpgaTruth.c.
int Fpga_LibReadLutMax | ( | Fpga_LutLib_t * | pLib | ) |
Function*************************************************************
Synopsis [Reads the parameters of the LUT library.]
Description []
SideEffects []
SeeAlso []
Definition at line 86 of file fpgaCreate.c.
Fpga_LutLib_t* Fpga_LutLibDup | ( | Fpga_LutLib_t * | p | ) |
Function*************************************************************
Synopsis [Duplicates the LUT library.]
Description []
SideEffects []
SeeAlso []
Definition at line 165 of file fpgaLib.c.
float Fpga_LutLibReadLutArea | ( | Fpga_LutLib_t * | p, |
int | Size | ||
) |
float* Fpga_LutLibReadLutAreas | ( | Fpga_LutLib_t * | p | ) |
float Fpga_LutLibReadLutDelay | ( | Fpga_LutLib_t * | p, |
int | Size | ||
) |
float* Fpga_LutLibReadLutDelays | ( | Fpga_LutLib_t * | p | ) |
int Fpga_LutLibReadVarMax | ( | Fpga_LutLib_t * | p | ) |
DECLARATIONS ///.
CFile****************************************************************
FileName [fpgaLib.c]
PackageName [MVSIS 1.3: Multi-valued logic synthesis system.]
Synopsis [Technology mapping for variable-size-LUT FPGAs.]
Author [MVSIS Group]
Affiliation [UC Berkeley]
Date [Ver. 2.0. Started - August 18, 2004.]
Revision [
]FUNCTION DEFINITIONS /// Function*************************************************************
Synopsis [APIs to access LUT library.]
Description []
SideEffects []
SeeAlso []
Definition at line 43 of file fpgaLib.c.
int Fpga_ManCheckConsistency | ( | Fpga_Man_t * | p | ) |
Function*************************************************************
Synopsis [Verify one useful property.]
Description [This procedure verifies one useful property. After the FRAIG construction with choice nodes is over, each primary node should have fanins that are primary nodes. The primary nodes is the one that does not have pNode->pRepr set to point to another node.]
SideEffects []
SeeAlso []
Definition at line 500 of file fpgaUtils.c.
void Fpga_ManCleanData0 | ( | Fpga_Man_t * | pMan | ) |
Function*************************************************************
Synopsis [Computes the limited DFS ordering for one node.]
Description []
SideEffects []
SeeAlso []
Definition at line 657 of file fpgaUtils.c.
Fpga_Man_t* Fpga_ManCreate | ( | int | nInputs, |
int | nOutputs, | ||
int | fVerbose | ||
) |
FUNCTION DEFINITIONS ///.
Function*************************************************************
Synopsis [Create the mapping manager.]
Description [The number of inputs and outputs is assumed to be known is advance. It is much simpler to have them fixed upfront. When it comes to representing the object graph in the form of AIG, the resulting manager is similar to the regular AIG manager, except that it does not use reference counting (and therefore does not have garbage collections). It does have table resizing. The data structure is more flexible to represent additional information needed for mapping.]
SideEffects []
SeeAlso []
Definition at line 163 of file fpgaCreate.c.
void Fpga_ManFree | ( | Fpga_Man_t * | p | ) |
Function*************************************************************
Synopsis [Deallocates the mapping manager.]
Description []
SideEffects []
SeeAlso []
Definition at line 217 of file fpgaCreate.c.
void Fpga_ManPrintTimeStats | ( | Fpga_Man_t * | p | ) |
Function*************************************************************
Synopsis [Prints runtime statistics of the mapping manager.]
Description []
SideEffects []
SeeAlso []
Definition at line 252 of file fpgaCreate.c.
Fpga_Node_t* Fpga_ManReadConst1 | ( | Fpga_Man_t * | p | ) |
Definition at line 55 of file fpgaCreate.c.
int Fpga_ManReadFanoutViolations | ( | Fpga_Man_t * | p | ) |
float* Fpga_ManReadInputArrivals | ( | Fpga_Man_t * | p | ) |
Definition at line 56 of file fpgaCreate.c.
int Fpga_ManReadInputNum | ( | Fpga_Man_t * | p | ) |
FUNCTION DEFINITIONS ///.
Function*************************************************************
Synopsis [Reads parameters of the mapping manager.]
Description []
SideEffects []
SeeAlso []
Definition at line 51 of file fpgaCreate.c.
Fpga_Node_t** Fpga_ManReadInputs | ( | Fpga_Man_t * | p | ) |
Definition at line 53 of file fpgaCreate.c.
float* Fpga_ManReadLutAreas | ( | Fpga_Man_t * | p | ) |
Definition at line 59 of file fpgaCreate.c.
Fpga_NodeVec_t* Fpga_ManReadMapping | ( | Fpga_Man_t * | p | ) |
Definition at line 60 of file fpgaCreate.c.
int Fpga_ManReadOutputNum | ( | Fpga_Man_t * | p | ) |
Definition at line 52 of file fpgaCreate.c.
Fpga_Node_t** Fpga_ManReadOutputs | ( | Fpga_Man_t * | p | ) |
Definition at line 54 of file fpgaCreate.c.
int Fpga_ManReadVarMax | ( | Fpga_Man_t * | p | ) |
Definition at line 58 of file fpgaCreate.c.
int Fpga_ManReadVerbose | ( | Fpga_Man_t * | p | ) |
Definition at line 57 of file fpgaCreate.c.
void Fpga_ManSetAreaLimit | ( | Fpga_Man_t * | p, |
float | AreaLimit | ||
) |
Definition at line 65 of file fpgaCreate.c.
void Fpga_ManSetAreaRecovery | ( | Fpga_Man_t * | p, |
int | fAreaRecovery | ||
) |
Definition at line 63 of file fpgaCreate.c.
void Fpga_ManSetChoiceNodeNum | ( | Fpga_Man_t * | p, |
int | nChoiceNodes | ||
) |
Definition at line 66 of file fpgaCreate.c.
void Fpga_ManSetChoiceNum | ( | Fpga_Man_t * | p, |
int | nChoices | ||
) |
Definition at line 67 of file fpgaCreate.c.
void Fpga_ManSetDelayLimit | ( | Fpga_Man_t * | p, |
float | DelayLimit | ||
) |
Definition at line 64 of file fpgaCreate.c.
void Fpga_ManSetDelayTarget | ( | Fpga_Man_t * | p, |
float | DelayTarget | ||
) |
Definition at line 72 of file fpgaCreate.c.
void Fpga_ManSetFanoutViolations | ( | Fpga_Man_t * | p, |
int | nVio | ||
) |
void Fpga_ManSetInputArrivals | ( | Fpga_Man_t * | p, |
float * | pArrivals | ||
) |
Definition at line 62 of file fpgaCreate.c.
void Fpga_ManSetLatchNum | ( | Fpga_Man_t * | p, |
int | nLatches | ||
) |
Definition at line 71 of file fpgaCreate.c.
void Fpga_ManSetLatchPaths | ( | Fpga_Man_t * | p, |
int | fLatchPaths | ||
) |
Definition at line 70 of file fpgaCreate.c.
void Fpga_ManSetName | ( | Fpga_Man_t * | p, |
char * | pFileName | ||
) |
Definition at line 73 of file fpgaCreate.c.
void Fpga_ManSetNumIterations | ( | Fpga_Man_t * | p, |
int | nNumIterations | ||
) |
void Fpga_ManSetObeyFanoutLimits | ( | Fpga_Man_t * | p, |
int | fObeyFanoutLimits | ||
) |
void Fpga_ManSetOutputNames | ( | Fpga_Man_t * | p, |
char ** | ppNames | ||
) |
Definition at line 61 of file fpgaCreate.c.
void Fpga_ManSetSwitching | ( | Fpga_Man_t * | p, |
int | fSwitching | ||
) |
Definition at line 69 of file fpgaCreate.c.
void Fpga_ManSetVerbose | ( | Fpga_Man_t * | p, |
int | fVerbose | ||
) |
Definition at line 68 of file fpgaCreate.c.
void Fpga_ManStats | ( | Fpga_Man_t * | p | ) |
Function*************************************************************
Synopsis [Prints some interesting stats.]
Description []
SideEffects []
SeeAlso []
Definition at line 564 of file fpgaCreate.c.
int Fpga_Mapping | ( | Fpga_Man_t * | p | ) |
FUNCTION DEFINITIONS ///.
Function*************************************************************
Synopsis [Performs technology mapping for the given object graph.]
Description [The object graph is stored in the mapping manager. First, all the AND-nodes, which fanout into the POs, are collected in the DFS fashion. Next, three steps are performed: the k-feasible cuts are computed for each node, the truth tables are computed for each cut, and the delay-optimal matches are assigned for each node.]
SideEffects []
SeeAlso []
Definition at line 53 of file fpgaCore.c.
void Fpga_MappingCreatePiCuts | ( | Fpga_Man_t * | p | ) |
Function*************************************************************
Synopsis [Performs technology mapping for variable-size-LUTs.]
Description []
SideEffects []
SeeAlso []
Definition at line 181 of file fpgaCut.c.
void Fpga_MappingSetUsedCuts | ( | Fpga_Man_t * | pMan | ) |
Function*************************************************************
Synopsis [Sets the used cuts to be the currently selected ones.]
Description []
SideEffects []
SeeAlso []
Definition at line 459 of file fpgaCutUtils.c.
Fpga_Node_t* Fpga_NodeAnd | ( | Fpga_Man_t * | p, |
Fpga_Node_t * | p1, | ||
Fpga_Node_t * | p2 | ||
) |
Function*************************************************************
Synopsis [Elementary AND operation on the AIG.]
Description []
SideEffects []
SeeAlso []
Definition at line 470 of file fpgaCreate.c.
int Fpga_NodeComparePhase | ( | Fpga_Node_t * | p1, |
Fpga_Node_t * | p2 | ||
) |
Definition at line 128 of file fpgaCreate.c.
Fpga_Node_t* Fpga_NodeCreate | ( | Fpga_Man_t * | p, |
Fpga_Node_t * | p1, | ||
Fpga_Node_t * | p2 | ||
) |
Function*************************************************************
Synopsis [Creates a new node.]
Description [This procedure should be called to create the constant node and the PI nodes first.]
SideEffects []
SeeAlso []
Definition at line 293 of file fpgaCreate.c.
Fpga_Node_t* Fpga_NodeExor | ( | Fpga_Man_t * | p, |
Fpga_Node_t * | p1, | ||
Fpga_Node_t * | p2 | ||
) |
Function*************************************************************
Synopsis [Elementary EXOR operation on the AIG.]
Description []
SideEffects []
SeeAlso []
Definition at line 506 of file fpgaCreate.c.
int Fpga_NodeIsAnd | ( | Fpga_Node_t * | p | ) |
Definition at line 127 of file fpgaCreate.c.
int Fpga_NodeIsConst | ( | Fpga_Node_t * | p | ) |
Function*************************************************************
Synopsis [Checks the type of the node.]
Description []
SideEffects []
SeeAlso []
Definition at line 125 of file fpgaCreate.c.
int Fpga_NodeIsVar | ( | Fpga_Node_t * | p | ) |
Definition at line 126 of file fpgaCreate.c.
Fpga_Node_t* Fpga_NodeMux | ( | Fpga_Man_t * | p, |
Fpga_Node_t * | pC, | ||
Fpga_Node_t * | pT, | ||
Fpga_Node_t * | pE | ||
) |
Function*************************************************************
Synopsis [Elementary MUX operation on the AIG.]
Description []
SideEffects []
SeeAlso []
Definition at line 522 of file fpgaCreate.c.
Fpga_Node_t* Fpga_NodeOr | ( | Fpga_Man_t * | p, |
Fpga_Node_t * | p1, | ||
Fpga_Node_t * | p2 | ||
) |
Function*************************************************************
Synopsis [Elementary OR operation on the AIG.]
Description []
SideEffects []
SeeAlso []
Definition at line 488 of file fpgaCreate.c.
Fpga_Cut_t* Fpga_NodeReadCutBest | ( | Fpga_Node_t * | p | ) |
Definition at line 105 of file fpgaCreate.c.
Fpga_Cut_t* Fpga_NodeReadCuts | ( | Fpga_Node_t * | p | ) |
Definition at line 104 of file fpgaCreate.c.
char* Fpga_NodeReadData0 | ( | Fpga_Node_t * | p | ) |
Function*************************************************************
Synopsis [Reads parameters of the mapping node.]
Description []
SideEffects []
SeeAlso []
Definition at line 99 of file fpgaCreate.c.
Fpga_Node_t* Fpga_NodeReadData1 | ( | Fpga_Node_t * | p | ) |
Definition at line 100 of file fpgaCreate.c.
int Fpga_NodeReadLevel | ( | Fpga_Node_t * | p | ) |
Definition at line 103 of file fpgaCreate.c.
int Fpga_NodeReadNum | ( | Fpga_Node_t * | p | ) |
Definition at line 102 of file fpgaCreate.c.
Fpga_Node_t* Fpga_NodeReadOne | ( | Fpga_Node_t * | p | ) |
Definition at line 106 of file fpgaCreate.c.
int Fpga_NodeReadRefs | ( | Fpga_Node_t * | p | ) |
Definition at line 101 of file fpgaCreate.c.
Fpga_Node_t* Fpga_NodeReadTwo | ( | Fpga_Node_t * | p | ) |
Definition at line 107 of file fpgaCreate.c.
void Fpga_NodeSetArrival | ( | Fpga_Node_t * | p, |
float | Time | ||
) |
void Fpga_NodeSetChoice | ( | Fpga_Man_t * | pMan, |
Fpga_Node_t * | pNodeOld, | ||
Fpga_Node_t * | pNodeNew | ||
) |
Function*************************************************************
Synopsis [Sets the node to be equivalent to the given one.]
Description [This procedure is a work-around for the equivalence check. Does not verify the equivalence. Use at the user's risk.]
SideEffects []
SeeAlso []
Definition at line 544 of file fpgaCreate.c.
void Fpga_NodeSetData0 | ( | Fpga_Node_t * | p, |
char * | pData | ||
) |
Definition at line 108 of file fpgaCreate.c.
void Fpga_NodeSetData1 | ( | Fpga_Node_t * | p, |
Fpga_Node_t * | pNode | ||
) |
Definition at line 109 of file fpgaCreate.c.
void Fpga_NodeSetLevel | ( | Fpga_Node_t * | p, |
Fpga_Node_t * | pNode | ||
) |
void Fpga_NodeSetNextE | ( | Fpga_Node_t * | p, |
Fpga_Node_t * | pNextE | ||
) |
Definition at line 110 of file fpgaCreate.c.
void Fpga_NodeSetRepr | ( | Fpga_Node_t * | p, |
Fpga_Node_t * | pRepr | ||
) |
Definition at line 111 of file fpgaCreate.c.
void Fpga_NodeSetSwitching | ( | Fpga_Node_t * | p, |
float | Switching | ||
) |
Definition at line 112 of file fpgaCreate.c.
void Fpga_SetSimpleLutLib | ( | int | nLutSize | ) |
Function*************************************************************
Synopsis [Sets simple LUT library.]
Description []
SideEffects []
SeeAlso []
Definition at line 252 of file fpga.c.
void* Fpga_TruthsCutBdd | ( | void * | dd, |
Fpga_Cut_t * | pCut | ||
) |
Function*************************************************************
Synopsis [Derives the truth table for one cut.]
Description []
SideEffects []
SeeAlso []
Definition at line 79 of file fpgaTruth.c.