ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
fpgaCreate.c File Reference
#include "fpgaInt.h"
#include "base/main/main.h"
Include dependency graph for fpgaCreate.c:

Go to the source code of this file.

Functions

int Fpga_ManReadInputNum (Fpga_Man_t *p)
 FUNCTION DEFINITIONS ///.
 
int Fpga_ManReadOutputNum (Fpga_Man_t *p)
 
Fpga_Node_t ** Fpga_ManReadInputs (Fpga_Man_t *p)
 
Fpga_Node_t ** Fpga_ManReadOutputs (Fpga_Man_t *p)
 
Fpga_Node_tFpga_ManReadConst1 (Fpga_Man_t *p)
 
float * Fpga_ManReadInputArrivals (Fpga_Man_t *p)
 
int Fpga_ManReadVerbose (Fpga_Man_t *p)
 
int Fpga_ManReadVarMax (Fpga_Man_t *p)
 
float * Fpga_ManReadLutAreas (Fpga_Man_t *p)
 
Fpga_NodeVec_tFpga_ManReadMapping (Fpga_Man_t *p)
 
void Fpga_ManSetOutputNames (Fpga_Man_t *p, char **ppNames)
 
void Fpga_ManSetInputArrivals (Fpga_Man_t *p, float *pArrivals)
 
void Fpga_ManSetAreaRecovery (Fpga_Man_t *p, int fAreaRecovery)
 
void Fpga_ManSetDelayLimit (Fpga_Man_t *p, float DelayLimit)
 
void Fpga_ManSetAreaLimit (Fpga_Man_t *p, float AreaLimit)
 
void Fpga_ManSetChoiceNodeNum (Fpga_Man_t *p, int nChoiceNodes)
 
void Fpga_ManSetChoiceNum (Fpga_Man_t *p, int nChoices)
 
void Fpga_ManSetVerbose (Fpga_Man_t *p, int fVerbose)
 
void Fpga_ManSetSwitching (Fpga_Man_t *p, int fSwitching)
 
void Fpga_ManSetLatchPaths (Fpga_Man_t *p, int fLatchPaths)
 
void Fpga_ManSetLatchNum (Fpga_Man_t *p, int nLatches)
 
void Fpga_ManSetDelayTarget (Fpga_Man_t *p, float DelayTarget)
 
void Fpga_ManSetName (Fpga_Man_t *p, char *pFileName)
 
int Fpga_LibReadLutMax (Fpga_LutLib_t *pLib)
 
char * Fpga_NodeReadData0 (Fpga_Node_t *p)
 
Fpga_Node_tFpga_NodeReadData1 (Fpga_Node_t *p)
 
int Fpga_NodeReadRefs (Fpga_Node_t *p)
 
int Fpga_NodeReadNum (Fpga_Node_t *p)
 
int Fpga_NodeReadLevel (Fpga_Node_t *p)
 
Fpga_Cut_tFpga_NodeReadCuts (Fpga_Node_t *p)
 
Fpga_Cut_tFpga_NodeReadCutBest (Fpga_Node_t *p)
 
Fpga_Node_tFpga_NodeReadOne (Fpga_Node_t *p)
 
Fpga_Node_tFpga_NodeReadTwo (Fpga_Node_t *p)
 
void Fpga_NodeSetData0 (Fpga_Node_t *p, char *pData)
 
void Fpga_NodeSetData1 (Fpga_Node_t *p, Fpga_Node_t *pNode)
 
void Fpga_NodeSetNextE (Fpga_Node_t *p, Fpga_Node_t *pNextE)
 
void Fpga_NodeSetRepr (Fpga_Node_t *p, Fpga_Node_t *pRepr)
 
void Fpga_NodeSetSwitching (Fpga_Node_t *p, float Switching)
 
int Fpga_NodeIsConst (Fpga_Node_t *p)
 
int Fpga_NodeIsVar (Fpga_Node_t *p)
 
int Fpga_NodeIsAnd (Fpga_Node_t *p)
 
int Fpga_NodeComparePhase (Fpga_Node_t *p1, Fpga_Node_t *p2)
 
int Fpga_CutReadLeavesNum (Fpga_Cut_t *p)
 
Fpga_Node_t ** Fpga_CutReadLeaves (Fpga_Cut_t *p)
 
Fpga_Man_tFpga_ManCreate (int nInputs, int nOutputs, int fVerbose)
 FUNCTION DEFINITIONS ///.
 
void Fpga_ManFree (Fpga_Man_t *p)
 
void Fpga_ManPrintTimeStats (Fpga_Man_t *p)
 
Fpga_Node_tFpga_NodeCreate (Fpga_Man_t *p, Fpga_Node_t *p1, Fpga_Node_t *p2)
 
Fpga_Node_tFpga_NodeAnd (Fpga_Man_t *p, Fpga_Node_t *p1, Fpga_Node_t *p2)
 
Fpga_Node_tFpga_NodeOr (Fpga_Man_t *p, Fpga_Node_t *p1, Fpga_Node_t *p2)
 
Fpga_Node_tFpga_NodeExor (Fpga_Man_t *p, Fpga_Node_t *p1, Fpga_Node_t *p2)
 
Fpga_Node_tFpga_NodeMux (Fpga_Man_t *p, Fpga_Node_t *pC, Fpga_Node_t *pT, Fpga_Node_t *pE)
 
void Fpga_NodeSetChoice (Fpga_Man_t *pMan, Fpga_Node_t *pNodeOld, Fpga_Node_t *pNodeNew)
 
void Fpga_ManStats (Fpga_Man_t *p)
 

Function Documentation

◆ Fpga_CutReadLeaves()

Fpga_Node_t ** Fpga_CutReadLeaves ( Fpga_Cut_t * p)

Definition at line 142 of file fpgaCreate.c.

142{ return p->ppLeaves; }
Cube * p
Definition exorList.c:222

◆ Fpga_CutReadLeavesNum()

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.

141{ return p->nLeaves; }

◆ Fpga_LibReadLutMax()

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.

86{ return pLib->LutMax; }

◆ Fpga_ManCreate()

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.

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}
#define ABC_ALLOC(type, num)
Definition abc_global.h:264
ABC_DLL void * Abc_FrameReadLibLut()
Definition mainFrame.c:57
Extra_MmFixed_t * Extra_MmFixedStart(int nEntrySize)
Fpga_Node_t * Fpga_NodeCreate(Fpga_Man_t *p, Fpga_Node_t *p1, Fpga_Node_t *p2)
Definition fpgaCreate.c:293
#define FPGA_NUM_BYTES(n)
Definition fpgaInt.h:58
Fpga_NodeVec_t * Fpga_NodeVecAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Definition fpgaVec.c:45
struct Fpga_NodeStruct_t_ Fpga_Node_t
Definition fpga.h:44
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 assert(ex)
Definition util_old.h:213
char * memset()
Here is the call graph for this function:

◆ Fpga_ManFree()

void Fpga_ManFree ( Fpga_Man_t * p)

Function*************************************************************

Synopsis [Deallocates the mapping manager.]

Description []

SideEffects []

SeeAlso []

Definition at line 217 of file fpgaCreate.c.

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}
#define ABC_FREE(obj)
Definition abc_global.h:267
void Extra_MmFixedStop(Extra_MmFixed_t *p)
void Fpga_NodeVecFree(Fpga_NodeVec_t *p)
Definition fpgaVec.c:68
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Fpga_ManPrintTimeStats()

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.

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}
#define ABC_PRT(a, t)
Definition abc_global.h:255

◆ Fpga_ManReadConst1()

Fpga_Node_t * Fpga_ManReadConst1 ( Fpga_Man_t * p)

Definition at line 55 of file fpgaCreate.c.

55{ return p->pConst1; }

◆ Fpga_ManReadInputArrivals()

float * Fpga_ManReadInputArrivals ( Fpga_Man_t * p)

Definition at line 56 of file fpgaCreate.c.

56{ return p->pInputArrivals;}

◆ Fpga_ManReadInputNum()

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.

51{ return p->nInputs; }

◆ Fpga_ManReadInputs()

Fpga_Node_t ** Fpga_ManReadInputs ( Fpga_Man_t * p)

Definition at line 53 of file fpgaCreate.c.

53{ return p->pInputs; }

◆ Fpga_ManReadLutAreas()

float * Fpga_ManReadLutAreas ( Fpga_Man_t * p)

Definition at line 59 of file fpgaCreate.c.

59{ return p->pLutLib->pLutAreas; }

◆ Fpga_ManReadMapping()

Fpga_NodeVec_t * Fpga_ManReadMapping ( Fpga_Man_t * p)

Definition at line 60 of file fpgaCreate.c.

60{ return p->vMapping; }

◆ Fpga_ManReadOutputNum()

int Fpga_ManReadOutputNum ( Fpga_Man_t * p)

Definition at line 52 of file fpgaCreate.c.

52{ return p->nOutputs; }

◆ Fpga_ManReadOutputs()

Fpga_Node_t ** Fpga_ManReadOutputs ( Fpga_Man_t * p)

Definition at line 54 of file fpgaCreate.c.

54{ return p->pOutputs; }

◆ Fpga_ManReadVarMax()

int Fpga_ManReadVarMax ( Fpga_Man_t * p)

Definition at line 58 of file fpgaCreate.c.

58{ return p->pLutLib->LutMax; }

◆ Fpga_ManReadVerbose()

int Fpga_ManReadVerbose ( Fpga_Man_t * p)

Definition at line 57 of file fpgaCreate.c.

57{ return p->fVerbose; }

◆ Fpga_ManSetAreaLimit()

void Fpga_ManSetAreaLimit ( Fpga_Man_t * p,
float AreaLimit )

Definition at line 65 of file fpgaCreate.c.

65{ p->AreaLimit = AreaLimit; }

◆ Fpga_ManSetAreaRecovery()

void Fpga_ManSetAreaRecovery ( Fpga_Man_t * p,
int fAreaRecovery )

Definition at line 63 of file fpgaCreate.c.

63{ p->fAreaRecovery = fAreaRecovery;}

◆ Fpga_ManSetChoiceNodeNum()

void Fpga_ManSetChoiceNodeNum ( Fpga_Man_t * p,
int nChoiceNodes )

Definition at line 66 of file fpgaCreate.c.

66{ p->nChoiceNodes = nChoiceNodes; }

◆ Fpga_ManSetChoiceNum()

void Fpga_ManSetChoiceNum ( Fpga_Man_t * p,
int nChoices )

Definition at line 67 of file fpgaCreate.c.

67{ p->nChoices = nChoices; }

◆ Fpga_ManSetDelayLimit()

void Fpga_ManSetDelayLimit ( Fpga_Man_t * p,
float DelayLimit )

Definition at line 64 of file fpgaCreate.c.

64{ p->DelayLimit = DelayLimit; }

◆ Fpga_ManSetDelayTarget()

void Fpga_ManSetDelayTarget ( Fpga_Man_t * p,
float DelayTarget )

Definition at line 72 of file fpgaCreate.c.

72{ p->DelayTarget = DelayTarget; }
Here is the caller graph for this function:

◆ Fpga_ManSetInputArrivals()

void Fpga_ManSetInputArrivals ( Fpga_Man_t * p,
float * pArrivals )

Definition at line 62 of file fpgaCreate.c.

62{ p->pInputArrivals = pArrivals; }

◆ Fpga_ManSetLatchNum()

void Fpga_ManSetLatchNum ( Fpga_Man_t * p,
int nLatches )

Definition at line 71 of file fpgaCreate.c.

71{ p->nLatches = nLatches; }
Here is the caller graph for this function:

◆ Fpga_ManSetLatchPaths()

void Fpga_ManSetLatchPaths ( Fpga_Man_t * p,
int fLatchPaths )

Definition at line 70 of file fpgaCreate.c.

70{ p->fLatchPaths = fLatchPaths; }
Here is the caller graph for this function:

◆ Fpga_ManSetName()

void Fpga_ManSetName ( Fpga_Man_t * p,
char * pFileName )

Definition at line 73 of file fpgaCreate.c.

73{ p->pFileName = pFileName; }

◆ Fpga_ManSetOutputNames()

void Fpga_ManSetOutputNames ( Fpga_Man_t * p,
char ** ppNames )

Definition at line 61 of file fpgaCreate.c.

61{ p->ppOutputNames = ppNames; }

◆ Fpga_ManSetSwitching()

void Fpga_ManSetSwitching ( Fpga_Man_t * p,
int fSwitching )

Definition at line 69 of file fpgaCreate.c.

69{ p->fSwitching = fSwitching; }
Here is the caller graph for this function:

◆ Fpga_ManSetVerbose()

void Fpga_ManSetVerbose ( Fpga_Man_t * p,
int fVerbose )

Definition at line 68 of file fpgaCreate.c.

68{ p->fVerbose = fVerbose; }

◆ Fpga_ManStats()

void Fpga_ManStats ( Fpga_Man_t * p)

Function*************************************************************

Synopsis [Prints some interesting stats.]

Description []

SideEffects []

SeeAlso []

Definition at line 564 of file fpgaCreate.c.

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}
int Fpga_CutCountAll(Fpga_Man_t *pMan)
Definition fpgaCut.c:767
Here is the call graph for this function:

◆ Fpga_NodeAnd()

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.

471{
472 Fpga_Node_t * pNode;
473 pNode = Fpga_TableLookup( p, p1, p2 );
474 return pNode;
475}

◆ Fpga_NodeComparePhase()

int Fpga_NodeComparePhase ( Fpga_Node_t * p1,
Fpga_Node_t * p2 )

Definition at line 128 of file fpgaCreate.c.

128{ assert( !Fpga_IsComplement(p1) ); assert( !Fpga_IsComplement(p2) ); return p1->fInv ^ p2->fInv; }
#define Fpga_IsComplement(p)
GLOBAL VARIABLES ///.
Definition fpga.h:57

◆ Fpga_NodeCreate()

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.

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}
char * Extra_MmFixedEntryFetch(Extra_MmFixed_t *p)
void Fpga_NodeAddFaninFanout(Fpga_Node_t *pFanin, Fpga_Node_t *pFanout)
#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
#define Fpga_Regular(p)
Definition fpga.h:58
Fpga_Node_t * p1
Definition fpgaInt.h:200
Fpga_Node_t * p2
Definition fpgaInt.h:201
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Fpga_NodeExor()

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.

507{
508 return Fpga_NodeMux( p, p1, Fpga_Not(p2), p2 );
509}
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
#define Fpga_Not(p)
Definition fpga.h:59
Here is the call graph for this function:

◆ Fpga_NodeIsAnd()

int Fpga_NodeIsAnd ( Fpga_Node_t * p)

Definition at line 127 of file fpgaCreate.c.

127{ return (Fpga_Regular(p))->p1 != NULL; }
Here is the caller graph for this function:

◆ Fpga_NodeIsConst()

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.

125{ return (Fpga_Regular(p))->Num == -1; }
Here is the caller graph for this function:

◆ Fpga_NodeIsVar()

int Fpga_NodeIsVar ( Fpga_Node_t * p)

Definition at line 126 of file fpgaCreate.c.

126{ return (Fpga_Regular(p))->p1 == NULL && (Fpga_Regular(p))->Num >= 0; }
Here is the caller graph for this function:

◆ Fpga_NodeMux()

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.

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}
Fpga_Node_t * Fpga_NodeOr(Fpga_Man_t *p, Fpga_Node_t *p1, Fpga_Node_t *p2)
Definition fpgaCreate.c:488
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Fpga_NodeOr()

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.

489{
490 Fpga_Node_t * pNode;
491 pNode = Fpga_Not( Fpga_TableLookup( p, Fpga_Not(p1), Fpga_Not(p2) ) );
492 return pNode;
493}
Here is the caller graph for this function:

◆ Fpga_NodeReadCutBest()

Fpga_Cut_t * Fpga_NodeReadCutBest ( Fpga_Node_t * p)

Definition at line 105 of file fpgaCreate.c.

105{ return p->pCutBest; }

◆ Fpga_NodeReadCuts()

Fpga_Cut_t * Fpga_NodeReadCuts ( Fpga_Node_t * p)

Definition at line 104 of file fpgaCreate.c.

104{ return p->pCuts; }

◆ Fpga_NodeReadData0()

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.

99{ return p->pData0; }

◆ Fpga_NodeReadData1()

Fpga_Node_t * Fpga_NodeReadData1 ( Fpga_Node_t * p)

Definition at line 100 of file fpgaCreate.c.

100{ return p->pLevel; }

◆ Fpga_NodeReadLevel()

int Fpga_NodeReadLevel ( Fpga_Node_t * p)

Definition at line 103 of file fpgaCreate.c.

103{ return Fpga_Regular(p)->Level; }

◆ Fpga_NodeReadNum()

int Fpga_NodeReadNum ( Fpga_Node_t * p)

Definition at line 102 of file fpgaCreate.c.

102{ return p->Num; }

◆ Fpga_NodeReadOne()

Fpga_Node_t * Fpga_NodeReadOne ( Fpga_Node_t * p)

Definition at line 106 of file fpgaCreate.c.

106{ return p->p1; }

◆ Fpga_NodeReadRefs()

int Fpga_NodeReadRefs ( Fpga_Node_t * p)

Definition at line 101 of file fpgaCreate.c.

101{ return p->nRefs; }

◆ Fpga_NodeReadTwo()

Fpga_Node_t * Fpga_NodeReadTwo ( Fpga_Node_t * p)

Definition at line 107 of file fpgaCreate.c.

107{ return p->p2; }

◆ Fpga_NodeSetChoice()

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.

545{
546 pNodeNew->pNextE = pNodeOld->pNextE;
547 pNodeOld->pNextE = pNodeNew;
548 pNodeNew->pRepr = pNodeOld;
549}
Fpga_Node_t * pNextE
Definition fpgaInt.h:202
Fpga_Node_t * pRepr
Definition fpgaInt.h:203

◆ Fpga_NodeSetData0()

void Fpga_NodeSetData0 ( Fpga_Node_t * p,
char * pData )

Definition at line 108 of file fpgaCreate.c.

108{ p->pData0 = pData; }

◆ Fpga_NodeSetData1()

void Fpga_NodeSetData1 ( Fpga_Node_t * p,
Fpga_Node_t * pNode )

Definition at line 109 of file fpgaCreate.c.

109{ p->pLevel = pNode; }

◆ Fpga_NodeSetNextE()

void Fpga_NodeSetNextE ( Fpga_Node_t * p,
Fpga_Node_t * pNextE )

Definition at line 110 of file fpgaCreate.c.

110{ p->pNextE = pNextE; }

◆ Fpga_NodeSetRepr()

void Fpga_NodeSetRepr ( Fpga_Node_t * p,
Fpga_Node_t * pRepr )

Definition at line 111 of file fpgaCreate.c.

111{ p->pRepr = pRepr; }

◆ Fpga_NodeSetSwitching()

void Fpga_NodeSetSwitching ( Fpga_Node_t * p,
float Switching )

Definition at line 112 of file fpgaCreate.c.

112{ p->Switching = Switching; }