ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
fpgaCreate.c
Go to the documentation of this file.
1
18
19#include "fpgaInt.h"
20#include "base/main/main.h"
21
23
24
28
29static void Fpga_TableCreate( Fpga_Man_t * p );
30static void Fpga_TableResize( Fpga_Man_t * p );
31static Fpga_Node_t * Fpga_TableLookup( Fpga_Man_t * p, Fpga_Node_t * p1, Fpga_Node_t * p2 );
32
33// hash key for the structural hash table
34static inline unsigned Fpga_HashKey2( Fpga_Node_t * p0, Fpga_Node_t * p1, int TableSize ) { return (unsigned)(((ABC_PTRUINT_T)(p0) + (ABC_PTRUINT_T)(p1) * 12582917) % TableSize); }
35
39
51int Fpga_ManReadInputNum( Fpga_Man_t * p ) { return p->nInputs; }
52int Fpga_ManReadOutputNum( Fpga_Man_t * p ) { return p->nOutputs; }
53Fpga_Node_t ** Fpga_ManReadInputs ( Fpga_Man_t * p ) { return p->pInputs; }
54Fpga_Node_t ** Fpga_ManReadOutputs( Fpga_Man_t * p ) { return p->pOutputs; }
55Fpga_Node_t * Fpga_ManReadConst1 ( Fpga_Man_t * p ) { return p->pConst1; }
56float * Fpga_ManReadInputArrivals( Fpga_Man_t * p ) { return p->pInputArrivals;}
57int Fpga_ManReadVerbose( Fpga_Man_t * p ) { return p->fVerbose; }
58int Fpga_ManReadVarMax( Fpga_Man_t * p ) { return p->pLutLib->LutMax; }
59float * Fpga_ManReadLutAreas( Fpga_Man_t * p ) { return p->pLutLib->pLutAreas; }
60Fpga_NodeVec_t* Fpga_ManReadMapping( Fpga_Man_t * p ) { return p->vMapping; }
61void Fpga_ManSetOutputNames( Fpga_Man_t * p, char ** ppNames ) { p->ppOutputNames = ppNames; }
62void Fpga_ManSetInputArrivals( Fpga_Man_t * p, float * pArrivals ) { p->pInputArrivals = pArrivals; }
63void Fpga_ManSetAreaRecovery( Fpga_Man_t * p, int fAreaRecovery ) { p->fAreaRecovery = fAreaRecovery;}
64void Fpga_ManSetDelayLimit( Fpga_Man_t * p, float DelayLimit ) { p->DelayLimit = DelayLimit; }
65void Fpga_ManSetAreaLimit( Fpga_Man_t * p, float AreaLimit ) { p->AreaLimit = AreaLimit; }
66void Fpga_ManSetChoiceNodeNum( Fpga_Man_t * p, int nChoiceNodes ) { p->nChoiceNodes = nChoiceNodes; }
67void Fpga_ManSetChoiceNum( Fpga_Man_t * p, int nChoices ) { p->nChoices = nChoices; }
68void Fpga_ManSetVerbose( Fpga_Man_t * p, int fVerbose ) { p->fVerbose = fVerbose; }
69void Fpga_ManSetSwitching( Fpga_Man_t * p, int fSwitching ) { p->fSwitching = fSwitching; }
70void Fpga_ManSetLatchPaths( Fpga_Man_t * p, int fLatchPaths ) { p->fLatchPaths = fLatchPaths; }
71void Fpga_ManSetLatchNum( Fpga_Man_t * p, int nLatches ) { p->nLatches = nLatches; }
72void Fpga_ManSetDelayTarget( Fpga_Man_t * p, float DelayTarget ) { p->DelayTarget = DelayTarget; }
73void Fpga_ManSetName( Fpga_Man_t * p, char * pFileName ) { p->pFileName = pFileName; }
74
86int Fpga_LibReadLutMax( Fpga_LutLib_t * pLib ) { return pLib->LutMax; }
87
99char * Fpga_NodeReadData0( Fpga_Node_t * p ) { return p->pData0; }
100Fpga_Node_t * Fpga_NodeReadData1( Fpga_Node_t * p ) { return p->pLevel; }
101int Fpga_NodeReadRefs( Fpga_Node_t * p ) { return p->nRefs; }
102int Fpga_NodeReadNum( Fpga_Node_t * p ) { return p->Num; }
103int Fpga_NodeReadLevel( Fpga_Node_t * p ) { return Fpga_Regular(p)->Level; }
104Fpga_Cut_t * Fpga_NodeReadCuts( Fpga_Node_t * p ) { return p->pCuts; }
105Fpga_Cut_t * Fpga_NodeReadCutBest( Fpga_Node_t * p ) { return p->pCutBest; }
108void Fpga_NodeSetData0( Fpga_Node_t * p, char * pData ) { p->pData0 = pData; }
109void Fpga_NodeSetData1( Fpga_Node_t * p, Fpga_Node_t * pNode ) { p->pLevel = pNode; }
110void Fpga_NodeSetNextE( Fpga_Node_t * p, Fpga_Node_t * pNextE ) { p->pNextE = pNextE; }
111void Fpga_NodeSetRepr( Fpga_Node_t * p, Fpga_Node_t * pRepr ) { p->pRepr = pRepr; }
112void Fpga_NodeSetSwitching( Fpga_Node_t * p, float Switching ) { p->Switching = Switching; }
113
125int Fpga_NodeIsConst( Fpga_Node_t * p ) { return (Fpga_Regular(p))->Num == -1; }
126int Fpga_NodeIsVar( Fpga_Node_t * p ) { return (Fpga_Regular(p))->p1 == NULL && (Fpga_Regular(p))->Num >= 0; }
127int Fpga_NodeIsAnd( Fpga_Node_t * p ) { return (Fpga_Regular(p))->p1 != NULL; }
128int Fpga_NodeComparePhase( Fpga_Node_t * p1, Fpga_Node_t * p2 ) { assert( !Fpga_IsComplement(p1) ); assert( !Fpga_IsComplement(p2) ); return p1->fInv ^ p2->fInv; }
129
141int Fpga_CutReadLeavesNum( Fpga_Cut_t * p ) { return p->nLeaves; }
142Fpga_Node_t ** Fpga_CutReadLeaves( Fpga_Cut_t * p ) { return p->ppLeaves; }
143
144
163Fpga_Man_t * Fpga_ManCreate( int nInputs, int nOutputs, int fVerbose )
164{
165 Fpga_Man_t * p;
166 int i;
167
168 // start the manager
169 p = ABC_ALLOC( Fpga_Man_t, 1 );
170 memset( p, 0, sizeof(Fpga_Man_t) );
171 p->pLutLib = (Fpga_LutLib_t *)Abc_FrameReadLibLut();
172 p->nVarsMax = p->pLutLib->LutMax;
173 p->fVerbose = fVerbose;
174 p->fAreaRecovery = 1;
175 p->fEpsilon = (float)0.001;
176
177 Fpga_TableCreate( p );
178//if ( p->fVerbose )
179// printf( "Node = %d (%d) bytes. Cut = %d bytes.\n", sizeof(Fpga_Node_t), FPGA_NUM_BYTES(sizeof(Fpga_Node_t)), sizeof(Fpga_Cut_t) );
180 p->mmNodes = Extra_MmFixedStart( FPGA_NUM_BYTES(sizeof(Fpga_Node_t)) );
181 p->mmCuts = Extra_MmFixedStart( sizeof(Fpga_Cut_t) );
182
183 assert( p->nVarsMax > 0 );
184// Fpga_MappingSetupTruthTables( p->uTruths );
185
186 // make sure the constant node will get index -1
187 p->nNodes = -1;
188 // create the constant node
189 p->pConst1 = Fpga_NodeCreate( p, NULL, NULL );
190 p->vNodesAll = Fpga_NodeVecAlloc( 1000 );
191 p->vMapping = Fpga_NodeVecAlloc( 1000 );
192
193 // create the PI nodes
194 p->nInputs = nInputs;
195 p->pInputs = ABC_ALLOC( Fpga_Node_t *, nInputs );
196 for ( i = 0; i < nInputs; i++ )
197 p->pInputs[i] = Fpga_NodeCreate( p, NULL, NULL );
198
199 // create the place for the output nodes
200 p->nOutputs = nOutputs;
201 p->pOutputs = ABC_ALLOC( Fpga_Node_t *, nOutputs );
202 memset( p->pOutputs, 0, sizeof(Fpga_Node_t *) * nOutputs );
203 return p;
204}
205
218{
219// Fpga_ManStats( p );
220// int i;
221// for ( i = 0; i < p->vNodesAll->nSize; i++ )
222// Fpga_NodeVecFree( p->vNodesAll->pArray[i]->vFanouts );
223// Fpga_NodeVecFree( p->pConst1->vFanouts );
224 if ( p->vMapping )
225 Fpga_NodeVecFree( p->vMapping );
226 if ( p->vAnds )
227 Fpga_NodeVecFree( p->vAnds );
228 if ( p->vNodesAll )
229 Fpga_NodeVecFree( p->vNodesAll );
230 Extra_MmFixedStop( p->mmNodes );
231 Extra_MmFixedStop( p->mmCuts );
232 ABC_FREE( p->ppOutputNames );
233 ABC_FREE( p->pInputArrivals );
234 ABC_FREE( p->pInputs );
235 ABC_FREE( p->pOutputs );
236 ABC_FREE( p->pBins );
237 ABC_FREE( p );
238}
239
240
253{
254// extern char * pNetName;
255// extern int TotalLuts;
256// FILE * pTable;
257
258
259/*
260 pTable = fopen( "stats.txt", "a+" );
261 fprintf( pTable, "%s ", pNetName );
262 fprintf( pTable, "%.0f ", p->fRequiredGlo );
263// fprintf( pTable, "%.0f ", p->fAreaGlo );//+ (float)nOutputInvs );
264 fprintf( pTable, "%.0f ", (float)TotalLuts );
265 fprintf( pTable, "%4.2f\n", (float)(p->timeTotal-p->timeToMap)/(float)(CLOCKS_PER_SEC) );
266 fclose( pTable );
267*/
268
269// printf( "N-canonical = %d. Matchings = %d. ", p->nCanons, p->nMatches );
270// printf( "Choice nodes = %d. Choices = %d.\n", p->nChoiceNodes, p->nChoices );
271 ABC_PRT( "ToMap", p->timeToMap );
272 ABC_PRT( "Cuts ", p->timeCuts );
273 ABC_PRT( "Match", p->timeMatch );
274 ABC_PRT( "Area ", p->timeRecover );
275 ABC_PRT( "ToNet", p->timeToNet );
276 ABC_PRT( "TOTAL", p->timeTotal );
277 if ( p->time1 ) { ABC_PRT( "time1", p->time1 ); }
278 if ( p->time2 ) { ABC_PRT( "time2", p->time2 ); }
279}
280
294{
295 Fpga_Node_t * pNode;
296 // create the node
297 pNode = (Fpga_Node_t *)Extra_MmFixedEntryFetch( p->mmNodes );
298 memset( pNode, 0, sizeof(Fpga_Node_t) );
299 // set very large required time
301 pNode->aEstFanouts = -1;
302 pNode->p1 = p1;
303 pNode->p2 = p2;
304 // set the number of this node
305 pNode->Num = p->nNodes++;
306 // place to store the fanouts
307// pNode->vFanouts = Fpga_NodeVecAlloc( 5 );
308 // store this node in the internal array
309 if ( pNode->Num >= 0 )
310 Fpga_NodeVecPush( p->vNodesAll, pNode );
311 else
312 pNode->fInv = 1;
313 // set the level of this node
314 if ( p1 )
315 {
316#ifdef FPGA_ALLOCATE_FANOUT
317 // create the fanout info
320#endif
321 // compute the level
322 pNode->Level = 1 + FPGA_MAX(Fpga_Regular(p1)->Level, Fpga_Regular(p2)->Level);
324 }
325 // reference the inputs
326 if ( p1 ) Fpga_NodeRef(p1);
327 if ( p2 ) Fpga_NodeRef(p2);
328 return pNode;
329}
330
342void Fpga_TableCreate( Fpga_Man_t * pMan )
343{
344 assert( pMan->pBins == NULL );
345 pMan->nBins = Abc_PrimeCudd(50000);
346 pMan->pBins = ABC_ALLOC( Fpga_Node_t *, pMan->nBins );
347 memset( pMan->pBins, 0, sizeof(Fpga_Node_t *) * pMan->nBins );
348 pMan->nNodes = 0;
349}
350
365Fpga_Node_t * Fpga_TableLookup( Fpga_Man_t * pMan, Fpga_Node_t * p1, Fpga_Node_t * p2 )
366{
367 Fpga_Node_t * pEnt;
368 unsigned Key;
369
370 if ( p1 == p2 )
371 return p1;
372 if ( p1 == Fpga_Not(p2) )
373 return Fpga_Not(pMan->pConst1);
374 if ( Fpga_NodeIsConst(p1) )
375 {
376 if ( p1 == pMan->pConst1 )
377 return p2;
378 return Fpga_Not(pMan->pConst1);
379 }
380 if ( Fpga_NodeIsConst(p2) )
381 {
382 if ( p2 == pMan->pConst1 )
383 return p1;
384 return Fpga_Not(pMan->pConst1);
385 }
386
387 if ( Fpga_Regular(p1)->Num > Fpga_Regular(p2)->Num )
388 pEnt = p1, p1 = p2, p2 = pEnt;
389
390 Key = Fpga_HashKey2( p1, p2, pMan->nBins );
391 for ( pEnt = pMan->pBins[Key]; pEnt; pEnt = pEnt->pNext )
392 if ( pEnt->p1 == p1 && pEnt->p2 == p2 )
393 return pEnt;
394 // resize the table
395 if ( pMan->nNodes >= 2 * pMan->nBins )
396 {
397 Fpga_TableResize( pMan );
398 Key = Fpga_HashKey2( p1, p2, pMan->nBins );
399 }
400 // create the new node
401 pEnt = Fpga_NodeCreate( pMan, p1, p2 );
402 // add the node to the corresponding linked list in the table
403 pEnt->pNext = pMan->pBins[Key];
404 pMan->pBins[Key] = pEnt;
405 return pEnt;
406}
407
408
420void Fpga_TableResize( Fpga_Man_t * pMan )
421{
422 Fpga_Node_t ** pBinsNew;
423 Fpga_Node_t * pEnt, * pEnt2;
424 int nBinsNew, Counter, i;
425 clock_t clk;
426 unsigned Key;
427
428clk = clock();
429 // get the new table size
430 nBinsNew = Abc_PrimeCudd(2 * pMan->nBins);
431 // allocate a new array
432 pBinsNew = ABC_ALLOC( Fpga_Node_t *, nBinsNew );
433 memset( pBinsNew, 0, sizeof(Fpga_Node_t *) * nBinsNew );
434 // rehash the entries from the old table
435 Counter = 0;
436 for ( i = 0; i < pMan->nBins; i++ )
437 for ( pEnt = pMan->pBins[i], pEnt2 = pEnt? pEnt->pNext: NULL; pEnt;
438 pEnt = pEnt2, pEnt2 = pEnt? pEnt->pNext: NULL )
439 {
440 Key = Fpga_HashKey2( pEnt->p1, pEnt->p2, nBinsNew );
441 pEnt->pNext = pBinsNew[Key];
442 pBinsNew[Key] = pEnt;
443 Counter++;
444 }
445 assert( Counter == pMan->nNodes - pMan->nInputs );
446 if ( pMan->fVerbose )
447 {
448// printf( "Increasing the unique table size from %6d to %6d. ", pMan->nBins, nBinsNew );
449// ABC_PRT( "Time", clock() - clk );
450 }
451 // replace the table and the parameters
452 ABC_FREE( pMan->pBins );
453 pMan->pBins = pBinsNew;
454 pMan->nBins = nBinsNew;
455}
456
457
458
471{
472 Fpga_Node_t * pNode;
473 pNode = Fpga_TableLookup( p, p1, p2 );
474 return pNode;
475}
476
489{
490 Fpga_Node_t * pNode;
491 pNode = Fpga_Not( Fpga_TableLookup( p, Fpga_Not(p1), Fpga_Not(p2) ) );
492 return pNode;
493}
494
507{
508 return Fpga_NodeMux( p, p1, Fpga_Not(p2), p2 );
509}
510
523{
524 Fpga_Node_t * pAnd1, * pAnd2, * pRes;
525 pAnd1 = Fpga_TableLookup( p, pC, pT );
526 pAnd2 = Fpga_TableLookup( p, Fpga_Not(pC), pE );
527 pRes = Fpga_NodeOr( p, pAnd1, pAnd2 );
528 return pRes;
529}
530
531
544void Fpga_NodeSetChoice( Fpga_Man_t * pMan, Fpga_Node_t * pNodeOld, Fpga_Node_t * pNodeNew )
545{
546 pNodeNew->pNextE = pNodeOld->pNextE;
547 pNodeOld->pNextE = pNodeNew;
548 pNodeNew->pRepr = pNodeOld;
549}
550
551
552
565{
566 FILE * pTable;
567 pTable = fopen( "stats.txt", "a+" );
568 fprintf( pTable, "%s ", p->pFileName );
569 fprintf( pTable, "%4d ", p->nInputs - p->nLatches );
570 fprintf( pTable, "%4d ", p->nOutputs - p->nLatches );
571 fprintf( pTable, "%4d ", p->nLatches );
572 fprintf( pTable, "%7d ", p->vAnds->nSize );
573 fprintf( pTable, "%7d ", Fpga_CutCountAll(p) );
574 fprintf( pTable, "%2d\n", (int)p->fRequiredGlo );
575 fclose( pTable );
576}
577
578
582
584
#define ABC_PRT(a, t)
Definition abc_global.h:255
#define ABC_ALLOC(type, num)
Definition abc_global.h:264
#define ABC_FREE(obj)
Definition abc_global.h:267
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_DLL void * Abc_FrameReadLibLut()
Definition mainFrame.c:57
Cube * p
Definition exorList.c:222
char * Extra_MmFixedEntryFetch(Extra_MmFixed_t *p)
void Extra_MmFixedStop(Extra_MmFixed_t *p)
Extra_MmFixed_t * Extra_MmFixedStart(int nEntrySize)
void Fpga_NodeSetData1(Fpga_Node_t *p, Fpga_Node_t *pNode)
Definition fpgaCreate.c:109
void Fpga_ManFree(Fpga_Man_t *p)
Definition fpgaCreate.c:217
void Fpga_ManSetAreaLimit(Fpga_Man_t *p, float AreaLimit)
Definition fpgaCreate.c:65
Fpga_Node_t * Fpga_NodeMux(Fpga_Man_t *p, Fpga_Node_t *pC, Fpga_Node_t *pT, Fpga_Node_t *pE)
Definition fpgaCreate.c:522
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_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
Fpga_Cut_t * Fpga_NodeReadCutBest(Fpga_Node_t *p)
Definition fpgaCreate.c:105
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
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
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
float * Fpga_ManReadLutAreas(Fpga_Man_t *p)
Definition fpgaCreate.c:59
void Fpga_ManSetInputArrivals(Fpga_Man_t *p, float *pArrivals)
Definition fpgaCreate.c:62
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
Fpga_Node_t * Fpga_NodeReadTwo(Fpga_Node_t *p)
Definition fpgaCreate.c:107
int Fpga_ManReadVerbose(Fpga_Man_t *p)
Definition fpgaCreate.c:57
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_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
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
int Fpga_CutCountAll(Fpga_Man_t *pMan)
Definition fpgaCut.c:767
#define FPGA_NUM_BYTES(n)
Definition fpgaInt.h:58
Fpga_NodeVec_t * Fpga_NodeVecAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Definition fpgaVec.c:45
void Fpga_NodeAddFaninFanout(Fpga_Node_t *pFanin, Fpga_Node_t *pFanout)
void Fpga_NodeVecFree(Fpga_NodeVec_t *p)
Definition fpgaVec.c:68
#define FPGA_MAX(a, b)
Definition fpgaInt.h:62
void Fpga_NodeVecPush(Fpga_NodeVec_t *p, Fpga_Node_t *Entry)
Definition fpgaVec.c:169
#define Fpga_NodeIsSimComplement(p)
Definition fpgaInt.h:89
#define FPGA_FLOAT_LARGE
Definition fpgaInt.h:65
#define Fpga_NodeRef(p)
Definition fpgaInt.h:86
struct Fpga_NodeStruct_t_ Fpga_Node_t
Definition fpga.h:44
struct Fpga_NodeVecStruct_t_ Fpga_NodeVec_t
Definition fpga.h:45
struct Fpga_ManStruct_t_ Fpga_Man_t
STRUCTURE DEFINITIONS ///.
Definition fpga.h:43
Fpga_Node_t * Fpga_NodeCreate(Fpga_Man_t *p, Fpga_Node_t *p1, Fpga_Node_t *p2)
Definition fpgaCreate.c:293
struct Fpga_LutLibStruct_t_ Fpga_LutLib_t
Definition fpga.h:47
struct Fpga_CutStruct_t_ Fpga_Cut_t
Definition fpga.h:46
#define Fpga_IsComplement(p)
GLOBAL VARIABLES ///.
Definition fpga.h:57
#define Fpga_Not(p)
Definition fpga.h:59
#define Fpga_Regular(p)
Definition fpga.h:58
Fpga_Node_t * pConst1
Definition fpgaInt.h:110
Fpga_Node_t ** pBins
Definition fpgaInt.h:102
Fpga_Node_t * pNextE
Definition fpgaInt.h:202
Fpga_Node_t * pRepr
Definition fpgaInt.h:203
Fpga_Node_t * p1
Definition fpgaInt.h:200
Fpga_Node_t * p2
Definition fpgaInt.h:201
Fpga_Node_t * pNext
Definition fpgaInt.h:183
#define assert(ex)
Definition util_old.h:213
char * memset()