ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
fpga.h
Go to the documentation of this file.
1
18
19#ifndef ABC__map__fpga__fpga_h
20#define ABC__map__fpga__fpga_h
21
22
26
30
31
32
34
35
36// the maximum size of LUTs used for mapping
37#define FPGA_MAX_LUTSIZE 32
38
42
48
52
56
57#define Fpga_IsComplement(p) (((int)((ABC_PTRUINT_T) (p) & 01)))
58#define Fpga_Regular(p) ((Fpga_Node_t *)((ABC_PTRUINT_T)(p) & ~01))
59#define Fpga_Not(p) ((Fpga_Node_t *)((ABC_PTRUINT_T)(p) ^ 01))
60#define Fpga_NotCond(p,c) ((Fpga_Node_t *)((ABC_PTRUINT_T)(p) ^ (c)))
61
62#define Fpga_Ref(p)
63#define Fpga_Deref(p)
64#define Fpga_RecursiveDeref(p,c)
65
69
70/*=== fpgaCreate.c =============================================================*/
71extern Fpga_Man_t * Fpga_ManCreate( int nInputs, int nOutputs, int fVerbose );
73extern void Fpga_ManFree( Fpga_Man_t * pMan );
74extern void Fpga_ManPrintTimeStats( Fpga_Man_t * p );
75
76extern int Fpga_ManReadInputNum( Fpga_Man_t * p );
77extern int Fpga_ManReadOutputNum( Fpga_Man_t * p );
81extern float * Fpga_ManReadInputArrivals( Fpga_Man_t * p );
82extern int Fpga_ManReadVerbose( Fpga_Man_t * p );
83extern int Fpga_ManReadVarMax( Fpga_Man_t * p );
84extern float * Fpga_ManReadLutAreas( Fpga_Man_t * p );
86extern void Fpga_ManSetOutputNames( Fpga_Man_t * p, char ** ppNames );
87extern void Fpga_ManSetInputArrivals( Fpga_Man_t * p, float * pArrivals );
88extern void Fpga_ManSetAreaRecovery( Fpga_Man_t * p, int fAreaRecovery );
89extern void Fpga_ManSetDelayLimit( Fpga_Man_t * p, float DelayLimit );
90extern void Fpga_ManSetAreaLimit( Fpga_Man_t * p, float AreaLimit );
91extern void Fpga_ManSetObeyFanoutLimits( Fpga_Man_t * p, int fObeyFanoutLimits );
92extern void Fpga_ManSetNumIterations( Fpga_Man_t * p, int nNumIterations );
94extern void Fpga_ManSetFanoutViolations( Fpga_Man_t * p, int nVio );
95extern void Fpga_ManSetChoiceNodeNum( Fpga_Man_t * p, int nChoiceNodes );
96extern void Fpga_ManSetChoiceNum( Fpga_Man_t * p, int nChoices );
97extern void Fpga_ManSetVerbose( Fpga_Man_t * p, int fVerbose );
98extern void Fpga_ManSetSwitching( Fpga_Man_t * p, int fSwitching );
99extern void Fpga_ManSetLatchPaths( Fpga_Man_t * p, int fLatchPaths );
100extern void Fpga_ManSetLatchNum( Fpga_Man_t * p, int nLatches );
101extern void Fpga_ManSetDelayTarget( Fpga_Man_t * p, float DelayTarget );
102extern void Fpga_ManSetName( Fpga_Man_t * p, char * pFileName );
103
104extern int Fpga_LibReadLutMax( Fpga_LutLib_t * pLib );
105
106extern char * Fpga_NodeReadData0( Fpga_Node_t * p );
108extern int Fpga_NodeReadRefs( Fpga_Node_t * p );
109extern int Fpga_NodeReadNum( Fpga_Node_t * p );
110extern int Fpga_NodeReadLevel( Fpga_Node_t * p );
115extern void Fpga_NodeSetLevel( Fpga_Node_t * p, Fpga_Node_t * pNode );
116extern void Fpga_NodeSetData0( Fpga_Node_t * p, char * pData );
117extern void Fpga_NodeSetData1( Fpga_Node_t * p, Fpga_Node_t * pNode );
118extern void Fpga_NodeSetArrival( Fpga_Node_t * p, float Time );
119extern void Fpga_NodeSetNextE( Fpga_Node_t * p, Fpga_Node_t * pNextE );
120extern void Fpga_NodeSetRepr( Fpga_Node_t * p, Fpga_Node_t * pRepr );
121extern void Fpga_NodeSetSwitching( Fpga_Node_t * p, float Switching );
122
123extern int Fpga_NodeIsConst( Fpga_Node_t * p );
124extern int Fpga_NodeIsVar( Fpga_Node_t * p );
125extern int Fpga_NodeIsAnd( Fpga_Node_t * p );
126extern int Fpga_NodeComparePhase( Fpga_Node_t * p1, Fpga_Node_t * p2 );
127
128extern int Fpga_CutReadLeavesNum( Fpga_Cut_t * p );
130
134extern Fpga_Node_t * Fpga_NodeMux( Fpga_Man_t * p, Fpga_Node_t * pNode, Fpga_Node_t * pNodeT, Fpga_Node_t * pNodeE );
135extern void Fpga_NodeSetChoice( Fpga_Man_t * pMan, Fpga_Node_t * pNodeOld, Fpga_Node_t * pNodeNew );
136
137extern void Fpga_ManStats( Fpga_Man_t * p );
138
139/*=== fpgaCore.c =============================================================*/
140extern int Fpga_Mapping( Fpga_Man_t * p );
141/*=== fpgaCut.c ===============================================================*/
142extern void Fpga_MappingCreatePiCuts( Fpga_Man_t * p );
143extern void Fpga_CutsCleanSign( Fpga_Man_t * pMan );
144extern void Fpga_CutsCleanRoot( Fpga_Man_t * pMan );
145/*=== fpgaCutUtils.c =============================================================*/
146extern void Fpga_CutCreateFromNode( Fpga_Man_t * p, int iRoot, int * pLeaves, int nLeaves );
147extern void Fpga_MappingSetUsedCuts( Fpga_Man_t * p );
148/*=== fpgaLib.c =============================================================*/
151extern float * Fpga_LutLibReadLutAreas( Fpga_LutLib_t * p );
153extern float Fpga_LutLibReadLutArea( Fpga_LutLib_t * p, int Size );
154extern float Fpga_LutLibReadLutDelay( Fpga_LutLib_t * p, int Size );
155/*=== fpgaTruth.c =============================================================*/
156extern void * Fpga_TruthsCutBdd( void * dd, Fpga_Cut_t * pCut );
157extern int Fpga_CutVolume( Fpga_Cut_t * pCut );
158/*=== fpgaUtil.c =============================================================*/
160extern void Fpga_ManCleanData0( Fpga_Man_t * pMan );
161extern Fpga_NodeVec_t * Fpga_CollectNodeTfo( Fpga_Man_t * pMan, Fpga_Node_t * pNode );
162/*=== fpga.c =============================================================*/
163extern void Fpga_SetSimpleLutLib( int nLutSize );
164
165
166
168
169
170
171#endif
172
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
Cube * p
Definition exorList.c:222
Fpga_Node_t * Fpga_NodeMux(Fpga_Man_t *p, Fpga_Node_t *pNode, Fpga_Node_t *pNodeT, Fpga_Node_t *pNodeE)
Definition fpgaCreate.c:522
void Fpga_NodeSetData1(Fpga_Node_t *p, Fpga_Node_t *pNode)
Definition fpgaCreate.c:109
Fpga_NodeVec_t * Fpga_CollectNodeTfo(Fpga_Man_t *pMan, Fpga_Node_t *pNode)
Definition fpgaUtils.c:675
struct Fpga_NodeStruct_t_ Fpga_Node_t
Definition fpga.h:44
void Fpga_ManSetObeyFanoutLimits(Fpga_Man_t *p, int fObeyFanoutLimits)
void Fpga_ManSetNumIterations(Fpga_Man_t *p, int nNumIterations)
void Fpga_ManFree(Fpga_Man_t *pMan)
Definition fpgaCreate.c:217
void Fpga_CutCreateFromNode(Fpga_Man_t *p, int iRoot, int *pLeaves, int nLeaves)
void Fpga_ManSetAreaLimit(Fpga_Man_t *p, float AreaLimit)
Definition fpgaCreate.c:65
int Fpga_NodeIsConst(Fpga_Node_t *p)
Definition fpgaCreate.c:125
Fpga_Node_t * Fpga_ManReadConst1(Fpga_Man_t *p)
Definition fpgaCreate.c:55
Fpga_LutLib_t * Fpga_LutLibDup(Fpga_LutLib_t *p)
Definition fpgaLib.c:165
Fpga_NodeVec_t * Fpga_ManReadMapping(Fpga_Man_t *p)
Definition fpgaCreate.c:60
void Fpga_ManSetDelayLimit(Fpga_Man_t *p, float DelayLimit)
Definition fpgaCreate.c:64
void Fpga_NodeSetArrival(Fpga_Node_t *p, float Time)
Fpga_Cut_t * Fpga_NodeReadCutBest(Fpga_Node_t *p)
Definition fpgaCreate.c:105
struct Fpga_NodeVecStruct_t_ Fpga_NodeVec_t
Definition fpga.h:45
void Fpga_NodeSetLevel(Fpga_Node_t *p, Fpga_Node_t *pNode)
struct Fpga_ManStruct_t_ Fpga_Man_t
STRUCTURE DEFINITIONS ///.
Definition fpga.h:43
int Fpga_CutReadLeavesNum(Fpga_Cut_t *p)
Definition fpgaCreate.c:141
int Fpga_ManReadOutputNum(Fpga_Man_t *p)
Definition fpgaCreate.c:52
Fpga_Node_t * Fpga_NodeReadOne(Fpga_Node_t *p)
Definition fpgaCreate.c:106
int Fpga_LibReadLutMax(Fpga_LutLib_t *pLib)
Definition fpgaCreate.c:86
char * Fpga_NodeReadData0(Fpga_Node_t *p)
Definition fpgaCreate.c:99
float Fpga_LutLibReadLutDelay(Fpga_LutLib_t *p, int Size)
void Fpga_ManSetName(Fpga_Man_t *p, char *pFileName)
Definition fpgaCreate.c:73
Fpga_Node_t ** Fpga_CutReadLeaves(Fpga_Cut_t *p)
Definition fpgaCreate.c:142
Fpga_Node_t * Fpga_NodeCreate(Fpga_Man_t *p, Fpga_Node_t *p1, Fpga_Node_t *p2)
Definition fpgaCreate.c:293
void Fpga_ManSetDelayTarget(Fpga_Man_t *p, float DelayTarget)
Definition fpgaCreate.c:72
void Fpga_ManSetVerbose(Fpga_Man_t *p, int fVerbose)
Definition fpgaCreate.c:68
float * Fpga_ManReadInputArrivals(Fpga_Man_t *p)
Definition fpgaCreate.c:56
int Fpga_NodeComparePhase(Fpga_Node_t *p1, Fpga_Node_t *p2)
Definition fpgaCreate.c:128
void Fpga_MappingSetUsedCuts(Fpga_Man_t *p)
struct Fpga_LutLibStruct_t_ Fpga_LutLib_t
Definition fpga.h:47
struct Fpga_CutStruct_t_ Fpga_Cut_t
Definition fpga.h:46
float * Fpga_LutLibReadLutDelays(Fpga_LutLib_t *p)
float Fpga_LutLibReadLutArea(Fpga_LutLib_t *p, int Size)
Definition fpgaLib.c:45
Fpga_Node_t ** Fpga_ManReadInputs(Fpga_Man_t *p)
Definition fpgaCreate.c:53
void Fpga_NodeSetRepr(Fpga_Node_t *p, Fpga_Node_t *pRepr)
Definition fpgaCreate.c:111
int Fpga_NodeReadRefs(Fpga_Node_t *p)
Definition fpgaCreate.c:101
void Fpga_MappingCreatePiCuts(Fpga_Man_t *p)
Definition fpgaCut.c:181
float * Fpga_ManReadLutAreas(Fpga_Man_t *p)
Definition fpgaCreate.c:59
void Fpga_ManSetInputArrivals(Fpga_Man_t *p, float *pArrivals)
Definition fpgaCreate.c:62
void Fpga_ManSetFanoutViolations(Fpga_Man_t *p, int nVio)
int Fpga_ManReadFanoutViolations(Fpga_Man_t *p)
Fpga_Cut_t * Fpga_NodeReadCuts(Fpga_Node_t *p)
Definition fpgaCreate.c:104
Fpga_Node_t ** Fpga_ManReadOutputs(Fpga_Man_t *p)
Definition fpgaCreate.c:54
void Fpga_NodeSetNextE(Fpga_Node_t *p, Fpga_Node_t *pNextE)
Definition fpgaCreate.c:110
void Fpga_ManSetOutputNames(Fpga_Man_t *p, char **ppNames)
Definition fpgaCreate.c:61
Fpga_Node_t * Fpga_NodeReadData1(Fpga_Node_t *p)
Definition fpgaCreate.c:100
void Fpga_ManSetChoiceNodeNum(Fpga_Man_t *p, int nChoiceNodes)
Definition fpgaCreate.c:66
void Fpga_ManSetSwitching(Fpga_Man_t *p, int fSwitching)
Definition fpgaCreate.c:69
void Fpga_ManSetChoiceNum(Fpga_Man_t *p, int nChoices)
Definition fpgaCreate.c:67
int Fpga_CutVolume(Fpga_Cut_t *pCut)
Definition fpgaTruth.c:140
Fpga_Node_t * Fpga_NodeReadTwo(Fpga_Node_t *p)
Definition fpgaCreate.c:107
int Fpga_ManReadVerbose(Fpga_Man_t *p)
Definition fpgaCreate.c:57
float * Fpga_LutLibReadLutAreas(Fpga_LutLib_t *p)
Definition fpgaLib.c:44
int Fpga_NodeReadLevel(Fpga_Node_t *p)
Definition fpgaCreate.c:103
int Fpga_ManReadInputNum(Fpga_Man_t *p)
FUNCTION DEFINITIONS ///.
Definition fpgaCreate.c:51
Fpga_Node_t * Fpga_NodeOr(Fpga_Man_t *p, Fpga_Node_t *p1, Fpga_Node_t *p2)
Definition fpgaCreate.c:488
void * Fpga_TruthsCutBdd(void *dd, Fpga_Cut_t *pCut)
Definition fpgaTruth.c:79
int Fpga_Mapping(Fpga_Man_t *p)
FUNCTION DEFINITIONS ///.
Definition fpgaCore.c:53
void Fpga_CutsCleanSign(Fpga_Man_t *pMan)
Definition fpgaCut.c:797
void Fpga_ManSetAreaRecovery(Fpga_Man_t *p, int fAreaRecovery)
Definition fpgaCreate.c:63
void Fpga_NodeSetData0(Fpga_Node_t *p, char *pData)
Definition fpgaCreate.c:108
void Fpga_ManStats(Fpga_Man_t *p)
Definition fpgaCreate.c:564
int Fpga_NodeIsAnd(Fpga_Node_t *p)
Definition fpgaCreate.c:127
void Fpga_NodeSetChoice(Fpga_Man_t *pMan, Fpga_Node_t *pNodeOld, Fpga_Node_t *pNodeNew)
Definition fpgaCreate.c:544
Fpga_Man_t * Fpga_ManCreate(int nInputs, int nOutputs, int fVerbose)
FUNCTION DEFINITIONS ///.
Definition fpgaCreate.c:163
void Fpga_ManSetLatchPaths(Fpga_Man_t *p, int fLatchPaths)
Definition fpgaCreate.c:70
void Fpga_SetSimpleLutLib(int nLutSize)
Definition fpga.c:252
int Fpga_NodeIsVar(Fpga_Node_t *p)
Definition fpgaCreate.c:126
int Fpga_ManReadVarMax(Fpga_Man_t *p)
Definition fpgaCreate.c:58
void Fpga_NodeSetSwitching(Fpga_Node_t *p, float Switching)
Definition fpgaCreate.c:112
void Fpga_ManPrintTimeStats(Fpga_Man_t *p)
Definition fpgaCreate.c:252
Fpga_Node_t * Fpga_NodeExor(Fpga_Man_t *p, Fpga_Node_t *p1, Fpga_Node_t *p2)
Definition fpgaCreate.c:506
void Fpga_ManSetLatchNum(Fpga_Man_t *p, int nLatches)
Definition fpgaCreate.c:71
Fpga_Node_t * Fpga_NodeAnd(Fpga_Man_t *p, Fpga_Node_t *p1, Fpga_Node_t *p2)
Definition fpgaCreate.c:470
int Fpga_NodeReadNum(Fpga_Node_t *p)
Definition fpgaCreate.c:102
void Fpga_ManCleanData0(Fpga_Man_t *pMan)
Definition fpgaUtils.c:657
void Fpga_CutsCleanRoot(Fpga_Man_t *pMan)
Definition fpgaCut.c:819
int Fpga_ManCheckConsistency(Fpga_Man_t *p)
Definition fpgaUtils.c:500
int Fpga_LutLibReadVarMax(Fpga_LutLib_t *p)
DECLARATIONS ///.
Definition fpgaLib.c:43
STRUCTURE DEFINITIONS ///.
Definition fpgaInt.h:100