abc-master
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "misc/extra/extra.h"
#include "fpga.h"
Go to the source code of this file.
Data Structures | |
struct | Fpga_ManStruct_t_ |
STRUCTURE DEFINITIONS ///. More... | |
struct | Fpga_LutLibStruct_t_ |
struct | Fpga_NodeStruct_t_ |
struct | Fpga_CutStruct_t_ |
struct | Fpga_NodeVecStruct_t_ |
Macros | |
#define | FPGA_MAX_LEAVES 6 |
INCLUDES ///. More... | |
#define | FPGA_MASK(n) ((~((unsigned)0)) >> (32-(n))) |
#define | FPGA_FULL (~((unsigned)0)) |
#define | FPGA_NO_VAR (-9999.0) |
#define | FPGA_NUM_BYTES(n) (((n)/16 + (((n)%16) > 0))*16) |
#define | FPGA_MIN(a, b) (((a) < (b))? (a) : (b)) |
#define | FPGA_MAX(a, b) (((a) > (b))? (a) : (b)) |
#define | FPGA_FLOAT_LARGE ((float)1.0e+20) |
#define | FPGA_FLOAT_SMALL ((float)1.0e-20) |
#define | FPGA_INT_LARGE (10000000) |
#define | FPGA_SEQ_SIGN(p) (1 << (((ABC_PTRUINT_T)p)%31)); |
#define | Fpga_CutIsComplement(p) (((int)((ABC_PTRUINT_T)(p) & 01))) |
#define | Fpga_CutRegular(p) ((Fpga_Cut_t *)((ABC_PTRUINT_T)(p) & ~01)) |
#define | Fpga_CutNot(p) ((Fpga_Cut_t *)((ABC_PTRUINT_T)(p) ^ 01)) |
#define | Fpga_CutNotCond(p, c) ((Fpga_Cut_t *)((ABC_PTRUINT_T)(p) ^ (c))) |
#define | Fpga_SeqIsComplement(p) (((int)((ABC_PTRUINT_T) (p) & 01))) |
#define | Fpga_SeqRegular(p) ((Fpga_Node_t *)((ABC_PTRUINT_T)(p) & ~015)) |
#define | Fpga_SeqIndex(p) ((((ABC_PTRUINT_T)(p)) >> 1) & 07) |
#define | Fpga_SeqIndexCreate(p, Ind) (((ABC_PTRUINT_T)(p)) | (1 << (((ABC_PTRUINT_T)(Ind)) & 07))) |
#define | Fpga_NodeReadRef(p) ((Fpga_Regular(p))->nRefs) |
#define | Fpga_NodeRef(p) ((Fpga_Regular(p))->nRefs++) |
#define | Fpga_NodeIsSimComplement(p) (Fpga_IsComplement(p)? !(Fpga_Regular(p)->fInv) : (p)->fInv) |
#define | FPGA_RANDOM_UNSIGNED ((((unsigned)rand()) << 24) ^ (((unsigned)rand()) << 12) ^ ((unsigned)rand())) |
#define | Fpga_NodeReadNextFanout(pNode, pFanout) |
#define | Fpga_NodeReadNextFanoutPlace(pNode, pFanout) |
#define | Fpga_NodeForEachFanout(pNode, pFanout) |
#define | Fpga_NodeForEachFanoutSafe(pNode, pFanout, pFanout2) |
#define Fpga_CutNot | ( | p | ) | ((Fpga_Cut_t *)((ABC_PTRUINT_T)(p) ^ 01)) |
#define Fpga_CutNotCond | ( | p, | |
c | |||
) | ((Fpga_Cut_t *)((ABC_PTRUINT_T)(p) ^ (c))) |
#define Fpga_CutRegular | ( | p | ) | ((Fpga_Cut_t *)((ABC_PTRUINT_T)(p) & ~01)) |
#define FPGA_MAX_LEAVES 6 |
INCLUDES ///.
CFile****************************************************************
FileName [fpgaInt.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 ///MACRO DEFINITIONS ///
#define Fpga_NodeForEachFanout | ( | pNode, | |
pFanout | |||
) |
#define Fpga_NodeForEachFanoutSafe | ( | pNode, | |
pFanout, | |||
pFanout2 | |||
) |
#define Fpga_NodeIsSimComplement | ( | p | ) | (Fpga_IsComplement(p)? !(Fpga_Regular(p)->fInv) : (p)->fInv) |
#define Fpga_NodeReadNextFanout | ( | pNode, | |
pFanout | |||
) |
#define Fpga_NodeReadNextFanoutPlace | ( | pNode, | |
pFanout | |||
) |
#define Fpga_NodeReadRef | ( | p | ) | ((Fpga_Regular(p))->nRefs) |
#define Fpga_NodeRef | ( | p | ) | ((Fpga_Regular(p))->nRefs++) |
#define FPGA_RANDOM_UNSIGNED ((((unsigned)rand()) << 24) ^ (((unsigned)rand()) << 12) ^ ((unsigned)rand())) |
#define Fpga_SeqRegular | ( | p | ) | ((Fpga_Node_t *)((ABC_PTRUINT_T)(p) & ~015)) |
int Fpga_CountLevels | ( | Fpga_Man_t * | pMan | ) |
Fpga_Cut_t* Fpga_CutAlloc | ( | Fpga_Man_t * | p | ) |
DECLARATIONS ///.
CFile****************************************************************
FileName [fpgaCutUtils.c]
PackageName [MVSIS 1.3: Multi-valued logic synthesis system.]
Synopsis [Generic technology mapping engine.]
Author [MVSIS Group]
Affiliation [UC Berkeley]
Date [Ver. 2.0. Started - August 18, 2004.]
Revision [
]FUNCTION DEFINITIONS /// Function*************************************************************
Synopsis [Allocates the cut.]
Description []
SideEffects []
SeeAlso []
Definition at line 43 of file fpgaCutUtils.c.
int Fpga_CutCountAll | ( | Fpga_Man_t * | pMan | ) |
Function*************************************************************
Synopsis [Counts all the cuts.]
Description []
SideEffects []
SeeAlso []
Definition at line 767 of file fpgaCut.c.
Fpga_Cut_t* Fpga_CutCreateSimple | ( | Fpga_Man_t * | p, |
Fpga_Node_t * | pNode | ||
) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 123 of file fpgaCutUtils.c.
float Fpga_CutDeref | ( | Fpga_Man_t * | pMan, |
Fpga_Node_t * | pNode, | ||
Fpga_Cut_t * | pCut, | ||
int | fFanouts | ||
) |
function*************************************************************
synopsis [Dereferences the cut.]
description [This procedure is similar to the procedure NodeRecusiveDeref.]
sideeffects []
seealso []
Definition at line 421 of file fpgaCutUtils.c.
float Fpga_CutDerefSwitch | ( | Fpga_Man_t * | pMan, |
Fpga_Node_t * | pNode, | ||
Fpga_Cut_t * | pCut, | ||
int | fFanouts | ||
) |
function*************************************************************
synopsis [Dereferences the cut.]
description [This procedure is similar to the procedure NodeRecusiveDeref.]
sideeffects []
seealso []
Definition at line 95 of file fpgaSwitch.c.
Fpga_Cut_t* Fpga_CutDup | ( | Fpga_Man_t * | p, |
Fpga_Cut_t * | pCutOld | ||
) |
Function*************************************************************
Synopsis [Duplicates the cut.]
Description []
SideEffects []
SeeAlso []
Definition at line 62 of file fpgaCutUtils.c.
void Fpga_CutFree | ( | Fpga_Man_t * | p, |
Fpga_Cut_t * | pCut | ||
) |
Function*************************************************************
Synopsis [Deallocates the cut.]
Description []
SideEffects []
SeeAlso []
Definition at line 85 of file fpgaCutUtils.c.
float Fpga_CutGetAreaDerefed | ( | Fpga_Man_t * | pMan, |
Fpga_Cut_t * | pCut | ||
) |
function*************************************************************
synopsis [Computes the exact area associated with the cut.]
description []
sideeffects []
seealso []
Definition at line 362 of file fpgaCutUtils.c.
float Fpga_CutGetAreaFlow | ( | Fpga_Man_t * | pMan, |
Fpga_Cut_t * | pCut | ||
) |
function*************************************************************
synopsis [Computes the area flow of the cut.]
description []
sideeffects []
seealso []
Definition at line 314 of file fpgaCutUtils.c.
float Fpga_CutGetAreaRefed | ( | Fpga_Man_t * | pMan, |
Fpga_Cut_t * | pCut | ||
) |
function*************************************************************
synopsis [Computes the exact area associated with the cut.]
description []
sideeffects []
seealso []
Definition at line 340 of file fpgaCutUtils.c.
void Fpga_CutGetParameters | ( | Fpga_Man_t * | pMan, |
Fpga_Cut_t * | pCut | ||
) |
Function*************************************************************
Synopsis [Computes the arrival time and the area flow of the cut.]
Description []
SideEffects []
SeeAlso []
Definition at line 279 of file fpgaCutUtils.c.
float Fpga_CutGetRootArea | ( | Fpga_Man_t * | p, |
Fpga_Cut_t * | pCut | ||
) |
function*************************************************************
synopsis [Computes the exact area associated with the cut.]
description []
sideeffects []
seealso []
Definition at line 146 of file fpgaCutUtils.c.
float Fpga_CutGetSwitchDerefed | ( | Fpga_Man_t * | pMan, |
Fpga_Node_t * | pNode, | ||
Fpga_Cut_t * | pCut | ||
) |
DECLARATIONS ///.
CFile****************************************************************
FileName [fpgaSwitch.c]
PackageName [MVSIS 1.3: Multi-valued logic synthesis system.]
Synopsis [Generic technology mapping engine.]
Author [MVSIS Group]
Affiliation [UC Berkeley]
Date [Ver. 1.0. Started - September 8, 2003.]
Revision [
]FUNCTION DEFINITIONS /// function*************************************************************
synopsis [Computes the exact area associated with the cut.]
description []
sideeffects []
seealso []
Definition at line 43 of file fpgaSwitch.c.
void Fpga_CutInsertFanouts | ( | Fpga_Man_t * | p, |
Fpga_Node_t * | pNode, | ||
Fpga_Cut_t * | pCut | ||
) |
Fpga_Cut_t* Fpga_CutListAppend | ( | Fpga_Cut_t * | pSetAll, |
Fpga_Cut_t * | pSets | ||
) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 162 of file fpgaCutUtils.c.
int Fpga_CutListCount | ( | Fpga_Cut_t * | pSets | ) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 211 of file fpgaCutUtils.c.
void Fpga_CutListRecycle | ( | Fpga_Man_t * | p, |
Fpga_Cut_t * | pSetList, | ||
Fpga_Cut_t * | pSave | ||
) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 190 of file fpgaCutUtils.c.
void Fpga_CutPrint | ( | Fpga_Man_t * | p, |
Fpga_Node_t * | pRoot, | ||
Fpga_Cut_t * | pCut | ||
) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 102 of file fpgaCutUtils.c.
float Fpga_CutRef | ( | Fpga_Man_t * | pMan, |
Fpga_Node_t * | pNode, | ||
Fpga_Cut_t * | pCut, | ||
int | fFanouts | ||
) |
function*************************************************************
synopsis [References the cut.]
description [This procedure is similar to the procedure NodeReclaim.]
sideeffects []
seealso []
Definition at line 384 of file fpgaCutUtils.c.
float Fpga_CutRefSwitch | ( | Fpga_Man_t * | pMan, |
Fpga_Node_t * | pNode, | ||
Fpga_Cut_t * | pCut, | ||
int | fFanouts | ||
) |
function*************************************************************
synopsis [References the cut.]
description [This procedure is similar to the procedure NodeReclaim.]
sideeffects []
seealso []
Definition at line 63 of file fpgaSwitch.c.
void Fpga_CutRemoveFanouts | ( | Fpga_Man_t * | p, |
Fpga_Node_t * | pNode, | ||
Fpga_Cut_t * | pCut | ||
) |
Fpga_NodeVec_t* Fpga_DfsLim | ( | Fpga_Man_t * | pMan, |
Fpga_Node_t * | pNode, | ||
int | nLevels | ||
) |
Function*************************************************************
Synopsis [Computes the limited DFS ordering for one node.]
Description []
SideEffects []
SeeAlso []
Definition at line 606 of file fpgaUtils.c.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
int Fpga_LutLibDelaysAreDiscrete | ( | Fpga_LutLib_t * | pLutLib | ) |
Function*************************************************************
Synopsis [Returns 1 if the delays are discrete.]
Description []
SideEffects []
SeeAlso []
Definition at line 236 of file fpgaLib.c.
void Fpga_LutLibFree | ( | Fpga_LutLib_t * | pLutLib | ) |
void Fpga_LutLibPrint | ( | Fpga_LutLib_t * | pLutLib | ) |
Function*************************************************************
Synopsis [Prints the LUT library.]
Description []
SideEffects []
SeeAlso []
Definition at line 205 of file fpgaLib.c.
Fpga_LutLib_t* Fpga_LutLibRead | ( | char * | FileName, |
int | fVerbose | ||
) |
Function*************************************************************
Synopsis [Reads the description of LUTs from the LUT library file.]
Description []
SideEffects []
SeeAlso []
Definition at line 58 of file fpgaLib.c.
void Fpga_ManReportChoices | ( | Fpga_Man_t * | pMan | ) |
Function*************************************************************
Synopsis [Reports statistics on choice nodes.]
Description [The number of choice nodes is the number of primary nodes, which has pNextE set to a pointer. The number of choices is the number of entries in the equivalent-node lists of the primary nodes.]
SideEffects []
SeeAlso []
Definition at line 897 of file fpgaUtils.c.
float Fpga_MappingArea | ( | Fpga_Man_t * | pMan | ) |
Function*************************************************************
Synopsis [Computes the area of the current mapping.]
Description []
SideEffects []
SeeAlso []
Definition at line 177 of file fpgaUtils.c.
float Fpga_MappingAreaTrav | ( | Fpga_Man_t * | pMan | ) |
Function*************************************************************
Synopsis [Computes the area of the current mapping.]
Description []
SideEffects []
SeeAlso []
Definition at line 239 of file fpgaUtils.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_MappingCuts | ( | Fpga_Man_t * | p | ) |
GLOBAL VARIABLES ///.
FUNCTION DEFINITIONS ///
GLOBAL VARIABLES ///.
Function*************************************************************
Synopsis [Computes the cuts for each node in the object graph.]
Description [The cuts are computed in one sweep over the mapping graph. First, the elementary cuts, which include the node itself, are assigned to the PI nodes. The internal nodes are considered in the DFS order. Each node is two-input AND-gate. So to compute the cuts at a node, we need to merge the sets of cuts of its two predecessors. The merged set contains only unique cuts with the number of inputs equal to k or less. Finally, the elementary cut, composed of the node itself, is added to the set of cuts for the node.
This procedure is pretty fast for 5-feasible cuts, but it dramatically slows down on some "dense" networks when computing 6-feasible cuts. The problem is that there are too many cuts in this case. We should think how to heuristically trim the number of cuts in such cases, to have reasonable runtime.]
SideEffects []
SeeAlso []
Definition at line 130 of file fpgaCut.c.
Fpga_NodeVec_t* Fpga_MappingDfs | ( | Fpga_Man_t * | pMan, |
int | fCollectEquiv | ||
) |
FUNCTION DEFINITIONS ///.
Function*************************************************************
Synopsis [Computes the DFS ordering of the nodes.]
Description []
SideEffects []
SeeAlso []
Definition at line 54 of file fpgaUtils.c.
Fpga_NodeVec_t* Fpga_MappingDfsNodes | ( | Fpga_Man_t * | pMan, |
Fpga_Node_t ** | ppNodes, | ||
int | nNodes, | ||
int | fEquiv | ||
) |
Function*************************************************************
Synopsis [Computes the DFS ordering of the nodes.]
Description []
SideEffects []
SeeAlso []
Definition at line 129 of file fpgaUtils.c.
float Fpga_MappingGetAreaFlow | ( | Fpga_Man_t * | p | ) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 153 of file fpgaUtils.c.
float Fpga_MappingGetSwitching | ( | Fpga_Man_t * | pMan, |
Fpga_NodeVec_t * | vMapping | ||
) |
Function*************************************************************
Synopsis [Computes the array of mapping.]
Description []
SideEffects []
SeeAlso []
Definition at line 127 of file fpgaSwitch.c.
Fpga_NodeVec_t* Fpga_MappingLevelize | ( | Fpga_Man_t * | pMan, |
Fpga_NodeVec_t * | vNodes | ||
) |
Function*************************************************************
Synopsis [Levelizes the nodes accessible from the POs.]
Description []
SideEffects []
SeeAlso []
Definition at line 747 of file fpgaUtils.c.
int Fpga_MappingMatches | ( | Fpga_Man_t * | p, |
int | fDelayOriented | ||
) |
FUNCTION DEFINITIONS ///.
Function*************************************************************
Synopsis [Finds the best delay assignment of LUTs.]
Description [This procedure iterates through all the nodes of the object graph reachable from the POs and assigns the best match to each of them. If the flag fDelayOriented is set to 1, it tries to minimize the arrival time and uses the area flow as a tie-breaker. If the flag is set to 0, it considers all the cuts, whose arrival times matches the required time at the node, and minimizes the area flow using the arrival time as a tie-breaker.
Before this procedure is called, the required times should be set and the fanout counts should be computed. In the first iteration, the required times are set to very large number (by NodeCreate) and the fanout counts are set to the number of fanouts in the AIG. In the following iterations, the required times are set by the backward traversal, while the fanouts are estimated approximately.
If the arrival times of the PI nodes are given, they should be assigned to the PIs after the cuts are computed and before this procedure is called for the first time.]
SideEffects []
SeeAlso []
Definition at line 67 of file fpgaMatch.c.
int Fpga_MappingMatchesArea | ( | Fpga_Man_t * | p | ) |
Function*************************************************************
Synopsis [Finds the best area assignment of LUTs.]
Description []
SideEffects []
SeeAlso []
Definition at line 196 of file fpgaMatch.c.
int Fpga_MappingMatchesSwitch | ( | Fpga_Man_t * | p | ) |
Function*************************************************************
Synopsis [Finds the best area assignment of LUTs.]
Description []
SideEffects []
SeeAlso []
Definition at line 349 of file fpgaMatch.c.
int Fpga_MappingMaxLevel | ( | Fpga_Man_t * | pMan | ) |
Function*************************************************************
Synopsis [Sets up the mask.]
Description []
SideEffects []
SeeAlso []
Definition at line 804 of file fpgaUtils.c.
void Fpga_MappingPrintOutputArrivals | ( | Fpga_Man_t * | p | ) |
Function*************************************************************
Synopsis [Prints a bunch of latest arriving outputs.]
Description []
SideEffects []
SeeAlso []
Definition at line 402 of file fpgaUtils.c.
void Fpga_MappingSetChoiceLevels | ( | Fpga_Man_t * | pMan | ) |
Function*************************************************************
Synopsis [Resets the levels of the nodes in the choice graph.]
Description [Makes the level of the choice nodes to be equal to the maximum of the level of the nodes in the equivalence class. This way sorting by level leads to the reverse topological order, which is needed for the required time computation.]
SideEffects []
SeeAlso []
Definition at line 876 of file fpgaUtils.c.
float Fpga_MappingSetRefsAndArea | ( | Fpga_Man_t * | pMan | ) |
Function*************************************************************
Synopsis [Sets the correct reference counts for the mapping.]
Description [Collects the nodes in reverse topological order and places in them in array pMan->vMapping.]
SideEffects []
SeeAlso []
Definition at line 299 of file fpgaUtils.c.
void Fpga_MappingSetupMask | ( | unsigned | uMask[], |
int | nVarsMax | ||
) |
Function*************************************************************
Synopsis [Sets up the mask.]
Description []
SideEffects []
SeeAlso []
Definition at line 475 of file fpgaUtils.c.
void Fpga_MappingSetupTruthTables | ( | unsigned | uTruths[][2] | ) |
Function*************************************************************
Synopsis [Sets up the truth tables.]
Description []
SideEffects []
SeeAlso []
Definition at line 449 of file fpgaUtils.c.
void Fpga_MappingShow | ( | Fpga_Man_t * | pMan, |
char * | pFileName | ||
) |
void Fpga_MappingShowNodes | ( | Fpga_Man_t * | pMan, |
Fpga_Node_t ** | ppRoots, | ||
int | nRoots, | ||
char * | pFileName | ||
) |
void Fpga_MappingSortByLevel | ( | Fpga_Man_t * | pMan, |
Fpga_NodeVec_t * | vNodes, | ||
int | fIncreasing | ||
) |
Function*************************************************************
Synopsis [Orders the nodes in the decreasing order of levels.]
Description []
SideEffects []
SeeAlso []
Definition at line 584 of file fpgaUtils.c.
void Fpga_NodeAddFaninFanout | ( | Fpga_Node_t * | pFanin, |
Fpga_Node_t * | pFanout | ||
) |
int Fpga_NodeGetFanoutNum | ( | Fpga_Node_t * | pNode | ) |
void Fpga_NodeRemoveFaninFanout | ( | Fpga_Node_t * | pFanin, |
Fpga_Node_t * | pFanoutToRemove | ||
) |
Fpga_NodeVec_t* Fpga_NodeVecAlloc | ( | int | nCap | ) |
FUNCTION DEFINITIONS ///.
Function*************************************************************
Synopsis [Allocates a vector with the given capacity.]
Description []
SideEffects []
SeeAlso []
Definition at line 45 of file fpgaVec.c.
void Fpga_NodeVecClear | ( | Fpga_NodeVec_t * | p | ) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
void Fpga_NodeVecFree | ( | Fpga_NodeVec_t * | p | ) |
void Fpga_NodeVecGrow | ( | Fpga_NodeVec_t * | p, |
int | nCapMin | ||
) |
Function*************************************************************
Synopsis [Resizes the vector to the given capacity.]
Description []
SideEffects []
SeeAlso []
Definition at line 117 of file fpgaVec.c.
Fpga_Node_t* Fpga_NodeVecPop | ( | Fpga_NodeVec_t * | p | ) |
void Fpga_NodeVecPush | ( | Fpga_NodeVec_t * | p, |
Fpga_Node_t * | Entry | ||
) |
void Fpga_NodeVecPushOrder | ( | Fpga_NodeVec_t * | vNodes, |
Fpga_Node_t * | pNode, | ||
int | fIncreasing | ||
) |
Function*************************************************************
Synopsis [Inserts a new node in the order by arrival times.]
Description []
SideEffects []
SeeAlso []
Definition at line 366 of file fpgaVec.c.
int Fpga_NodeVecPushUnique | ( | Fpga_NodeVec_t * | p, |
Fpga_Node_t * | Entry | ||
) |
Function*************************************************************
Synopsis [Add the element while ensuring uniqueness.]
Description [Returns 1 if the element was found, and 0 if it was new. ]
SideEffects []
SeeAlso []
Definition at line 192 of file fpgaVec.c.
Fpga_Node_t** Fpga_NodeVecReadArray | ( | Fpga_NodeVec_t * | p | ) |
Fpga_Node_t* Fpga_NodeVecReadEntry | ( | Fpga_NodeVec_t * | p, |
int | i | ||
) |
int Fpga_NodeVecReadSize | ( | Fpga_NodeVec_t * | p | ) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
void Fpga_NodeVecReverse | ( | Fpga_NodeVec_t * | vNodes | ) |
Function*************************************************************
Synopsis [Inserts a new node in the order by arrival times.]
Description []
SideEffects []
SeeAlso []
Definition at line 395 of file fpgaVec.c.
void Fpga_NodeVecShrink | ( | Fpga_NodeVec_t * | p, |
int | nSizeNew | ||
) |
void Fpga_NodeVecSortByLevel | ( | Fpga_NodeVec_t * | p | ) |
Function*************************************************************
Synopsis [Sorting the entries by their integer value.]
Description []
SideEffects []
SeeAlso []
Definition at line 289 of file fpgaVec.c.
void Fpga_NodeVecUnion | ( | Fpga_NodeVec_t * | p, |
Fpga_NodeVec_t * | p1, | ||
Fpga_NodeVec_t * | p2 | ||
) |
Function*************************************************************
Synopsis [Computes the union of nodes in two arrays.]
Description []
SideEffects []
SeeAlso []
Definition at line 345 of file fpgaVec.c.
void Fpga_NodeVecWriteEntry | ( | Fpga_NodeVec_t * | p, |
int | i, | ||
Fpga_Node_t * | Entry | ||
) |
void Fpga_SortNodesByArrivalTimes | ( | Fpga_NodeVec_t * | p | ) |
Function*************************************************************
Synopsis [Orders the nodes in the increasing order of the arrival times.]
Description []
SideEffects []
SeeAlso []
Definition at line 326 of file fpgaVec.c.
float Fpga_TimeComputeArrivalMax | ( | Fpga_Man_t * | p | ) |
Function*************************************************************
Synopsis [Computes the maximum arrival times.]
Description []
SideEffects []
SeeAlso []
Definition at line 89 of file fpgaTime.c.
void Fpga_TimeComputeRequired | ( | Fpga_Man_t * | p, |
float | fRequired | ||
) |
Function*************************************************************
Synopsis [Computes the required times of all nodes.]
Description []
SideEffects []
SeeAlso []
Definition at line 168 of file fpgaTime.c.
void Fpga_TimeComputeRequiredGlobal | ( | Fpga_Man_t * | p, |
int | fFirstTime | ||
) |
Function*************************************************************
Synopsis [Computes the required times of all nodes.]
Description []
SideEffects []
SeeAlso []
Definition at line 136 of file fpgaTime.c.
float Fpga_TimeCutComputeArrival | ( | Fpga_Man_t * | pMan, |
Fpga_Cut_t * | pCut | ||
) |
DECLARATIONS ///.
CFile****************************************************************
FileName [fpgaTime.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 [Computes the arrival times of the cut.]
Description [Computes the maximum arrival time of the cut leaves and adds the delay of the LUT.]
SideEffects []
SeeAlso []
Definition at line 44 of file fpgaTime.c.
float Fpga_TimeCutComputeArrival_rec | ( | Fpga_Man_t * | pMan, |
Fpga_Cut_t * | pCut | ||
) |
Function*************************************************************
Synopsis [Computes the arrival times of the cut recursively.]
Description [When computing the arrival time for the previously unused cuts, their arrival time may be incorrect because their fanins have incorrect arrival time. This procedure is called to fix this problem.]
SideEffects []
SeeAlso []
Definition at line 69 of file fpgaTime.c.
void Fpga_TimePropagateArrival | ( | Fpga_Man_t * | p | ) |
Function*************************************************************
Synopsis [Computes the required times of all nodes.]
Description []
SideEffects []
SeeAlso []
Definition at line 245 of file fpgaTime.c.
void Fpga_TimePropagateRequired | ( | Fpga_Man_t * | p, |
Fpga_NodeVec_t * | vNodes | ||
) |
Function*************************************************************
Synopsis [Computes the required times of the given nodes.]
Description []
SideEffects []
SeeAlso []
Definition at line 205 of file fpgaTime.c.