abc-master
|
#include "fpgaInt.h"
Go to the source code of this file.
Data Structures | |
struct | Fpga_CutTableStrutct_t |
Macros | |
#define | FPGA_CUTS_MAX_COMPUTE 2000 |
#define | FPGA_CUTS_MAX_USE 1000 |
#define | FPGA_COUNT_ONES(u) (bit_count[(u)&255]+bit_count[((u)>>8)&255]+bit_count[((u)>>16)&255]+bit_count[(u)>>24]) |
#define | Fpga_ListForEachCut(pList, pCut) |
#define | Fpga_ListForEachCutSafe(pList, pCut, pCut2) |
Typedefs | |
typedef typedefABC_NAMESPACE_IMPL_START struct Fpga_CutTableStrutct_t | Fpga_CutTable_t |
DECLARATIONS ///. More... | |
Variables | |
static int | s_HashPrimes [10] = { 109, 499, 557, 619, 631, 709, 797, 881, 907, 991 } |
static int | bit_count [256] |
#define Fpga_ListForEachCut | ( | pList, | |
pCut | |||
) |
#define Fpga_ListForEachCutSafe | ( | pList, | |
pCut, | |||
pCut2 | |||
) |
typedef typedefABC_NAMESPACE_IMPL_START struct Fpga_CutTableStrutct_t Fpga_CutTable_t |
DECLARATIONS ///.
CFile****************************************************************
FileName [fpgaCut.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 [
]
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.
|
static |
Function*************************************************************
Synopsis [Moves the nodes from the array into the list.]
Description []
SideEffects []
SeeAlso []
Definition at line 1161 of file fpgaCut.c.
|
static |
Function*************************************************************
Synopsis [Checks whether the given cut belongs to the list.]
Description [This procedure takes most of the runtime in the cut computation.]
SideEffects []
SeeAlso []
Definition at line 741 of file fpgaCut.c.
|
static |
Function*************************************************************
Synopsis [Computes the cuts for one node.]
Description []
SideEffects []
SeeAlso []
Definition at line 211 of file fpgaCut.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.
|
static |
Function*************************************************************
Synopsis [Filter the cuts using dominance.]
Description []
SideEffects []
SeeAlso []
Definition at line 303 of file fpgaCut.c.
|
static |
|
static |
Function*************************************************************
Synopsis [Prints the cuts in the list.]
Description []
SideEffects []
SeeAlso []
Definition at line 843 of file fpgaCut.c.
|
static |
Function*************************************************************
Synopsis [Prints the cuts in the list.]
Description []
SideEffects []
SeeAlso []
Definition at line 865 of file fpgaCut.c.
|
static |
Function*************************************************************
Synopsis [Merges two lists of cuts.]
Description []
SideEffects []
SeeAlso []
Definition at line 354 of file fpgaCut.c.
Fpga_Cut_t* Fpga_CutMergeLists2 | ( | Fpga_Man_t * | p, |
Fpga_CutTable_t * | pTable, | ||
Fpga_Cut_t * | pList1, | ||
Fpga_Cut_t * | pList2, | ||
int | fComp1, | ||
int | fComp2, | ||
int | fPivot1, | ||
int | fPivot2 | ||
) |
Function*************************************************************
Synopsis [Merges two lists of cuts.]
Description []
SideEffects []
SeeAlso []
Definition at line 539 of file fpgaCut.c.
|
static |
Function*************************************************************
Synopsis [Merges two cuts.]
Description [Returns the number of nodes in the resulting cut, or 0 if the cut is infeasible. Returns the resulting nodes in the array ppNodes[].]
SideEffects []
SeeAlso []
Definition at line 606 of file fpgaCut.c.
|
static |
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.
|
static |
Function*************************************************************
Synopsis [Sorts the cuts by average arrival time.]
Description []
SideEffects []
SeeAlso []
Definition at line 1107 of file fpgaCut.c.
|
static |
Function*************************************************************
Synopsis [Compares the cuts by the number of leaves and then by delay.]
Description []
SideEffects []
SeeAlso []
|
static |
Function*************************************************************
Synopsis [Starts the hash table to canonicize cuts.]
Description [Considers addition of the cut to the hash table.]
SideEffects []
SeeAlso []
Definition at line 1018 of file fpgaCut.c.
|
static |
|
static |
Function*************************************************************
Synopsis [Looks up the table for the available cut.]
Description [Returns -1 if the same cut is found. Returns the index of the cell where the cut should be added, if it does not exist.]
SideEffects []
SeeAlso []
Definition at line 985 of file fpgaCut.c.
|
static |
Function*************************************************************
Synopsis [Prepares the table to be used with other cuts.]
Description [Restarts the table by cleaning the info about cuts stored when the previous node was considered.]
SideEffects []
SeeAlso []
|
static |
Function*************************************************************
Synopsis [Starts the hash table to canonicize cuts.]
Description []
SideEffects []
SeeAlso []
Definition at line 915 of file fpgaCut.c.
|
static |
Function*************************************************************
Synopsis [Stops the hash table.]
Description []
SideEffects []
SeeAlso []
|
static |
Function*************************************************************
Synopsis [Computes the union of the two lists of cuts.]
Description []
SideEffects []
SeeAlso []
Definition at line 714 of file fpgaCut.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 | ) |
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.
|
static |