ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
if.h
Go to the documentation of this file.
1
20
21#ifndef ABC__map__if__if_h
22#define ABC__map__if__if_h
23
24
28
29#include <stdio.h>
30#include <stdlib.h>
31#include <string.h>
32#include <assert.h>
33
34#include "misc/vec/vec.h"
35#include "misc/mem/mem.h"
36#include "misc/tim/tim.h"
37#include "misc/util/utilNam.h"
38#include "misc/vec/vecMem.h"
39#include "misc/util/utilTruth.h"
40#include "opt/dau/dau.h"
41#include "misc/vec/vecHash.h"
42#include "misc/vec/vecWec.h"
44
46
47
51
52// the maximum size of LUTs used for mapping (should be the same as FPGA_MAX_LUTSIZE defined in "fpga.h"!!!)
53#define IF_MAX_LUTSIZE 32
54// the largest possible number of LUT inputs when funtionality of the LUTs are computed
55#define IF_MAX_FUNC_LUTSIZE 15
56// a very large number
57#define IF_INFINITY 100000000
58// the largest possible user cut cost
59#define IF_COST_MAX 4095 // ((1<<12)-1)
60
61#define IF_BIG_CHAR ((char)120)
62
63// object types
64typedef enum {
65 IF_NONE, // 0: non-existent object
66 IF_CONST1, // 1: constant 1
67 IF_CI, // 2: combinational input
68 IF_CO, // 3: combinational output
69 IF_AND, // 4: AND node
70 IF_VOID // 5: unused object
71} If_Type_t;
72
76
77typedef struct If_Man_t_ If_Man_t;
78typedef struct If_Par_t_ If_Par_t;
79typedef struct If_Obj_t_ If_Obj_t;
80typedef struct If_Cut_t_ If_Cut_t;
81typedef struct If_Set_t_ If_Set_t;
85typedef struct Ifn_Ntk_t_ Ifn_Ntk_t;
86
87typedef struct Ifif_Par_t_ Ifif_Par_t;
89{
90 int nLutSize; // the LUT size
91 If_LibLut_t * pLutLib; // the LUT library
92 float pLutDelays[IF_MAX_LUTSIZE]; // pin-to-pin delays of the max LUT
93 float DelayWire; // wire delay
94 int nDegree; // structure degree
95 int fCascade; // cascade
96 int fVerbose; // verbose
97 int fVeryVerbose; // verbose
98};
99
100// parameters
102{
103 // user-controlable parameters
104 int nLutSize; // the LUT size
105 int nCutsMax; // the max number of cuts
106 int nFlowIters; // the number of iterations of area recovery
107 int nAreaIters; // the number of iterations of area recovery
108 int nGateSize; // the max size of the AND/OR gate to map into
109 int nNonDecLimit; // the max size of non-dec nodes
110 float DelayTarget; // delay target
111 float Epsilon; // value used in comparison floating point numbers
112 int nRelaxRatio; // delay relaxation ratio
113 int nStructType; // type of the structure
114 int nAndDelay; // delay of AND-gate in LUT library units
115 int nAndArea; // area of AND-gate in LUT library units
116 int nLutDecSize; // the LUT size for decomposition
117 int fPreprocess; // preprossing
118 int fArea; // area-oriented mapping
119 int fFancy; // a fancy feature
120 int fExpRed; // expand/reduce of the best cuts
121 int fLatchPaths; // reset timing on latch paths
122 int fLut6Filter; // uses filtering of 6-LUT functions
123 int fEdge; // uses edge-based cut selection heuristics
124 int fPower; // uses power-aware cut selection heuristics
125 int fCutMin; // performs cut minimization by removing functionally reducdant variables
126 int fDelayOpt; // special delay optimization
127 int fDelayOptLut; // delay optimization for LUTs
128 int fDsdBalance; // special delay optimization
129 int fUserRecLib; // use recorded library
130 int fUserSesLib; // use SAT-based synthesis
131 int fBidec; // use bi-decomposition
132 int fUse34Spec; // use specialized matching
133 int fUseBat; // use one specialized feature
134 int fUseBuffs; // use buffers to decouple outputs
135 int fEnableCheck07;// enable additional checking
136 int fEnableCheck08;// enable additional checking
137 int fEnableCheck10;// enable additional checking
138 int fEnableCheck75;// enable additional checking
139 int fEnableCheck75u;// enable additional checking
140 int fUseDsd; // compute DSD of the cut functions
141 int fUseDsdTune; // use matching based on precomputed manager
142 int fUseCofVars; // use cofactoring variables
143 int fUseAndVars; // use bi-decomposition
144 int fUseTtPerm; // compute truth tables of the cut functions
145 int fUseCheck1; // compute truth tables of the cut functions
146 int fUseCheck2; // compute truth tables of the cut functions
147 int fDeriveLuts; // enables deriving LUT structures
148 int fDoAverage; // optimize average rather than maximum level
149 int fHashMapping; // perform AIG hashing after mapping
150 int fUserLutDec; // perform Boolean decomposition during mapping
151 int fUserLut2D; // perform Boolean decomposition during mapping
152 int fVerbose; // the verbosity flag
153 int fVerboseTrace; // the verbosity flag
154 char * pLutStruct; // LUT structure
155 int fEnableStructN;// LUT structure using a new method
156 float WireDelay; // wire delay
157 // internal parameters
158 int fSkipCutFilter;// skip cut filter
159 int fAreaOnly; // area only mode
160 int fTruth; // truth table computation enabled
161 int fUsePerm; // use permutation (delay info)
162 int fUseBdds; // use local BDDs as a cost function
163 int fUseSops; // use local SOPs as a cost function
164 int fUseCnfs; // use local CNFs as a cost function
165 int fUseMv; // use local MV-SOPs as a cost function
166 int nLatchesCi; // the number of latches among the CIs
167 int nLatchesCo; // the number of latches among the COs
168 int nLatchesCiBox; // the number of white box outputs among the CIs
169 int nLatchesCoBox; // the number of white box inputs among the COs
170 int fLiftLeaves; // shift the leaves for seq mapping
171 int fUseCoAttrs; // use CO attributes
172 float DelayTargetNew;// new delay target
173 float FinalDelay; // final delay after mapping
174 float FinalArea; // final area after mapping
175 If_LibLut_t * pLutLib; // the LUT library
176 float * pTimesArr; // arrival times
177 float * pTimesReq; // required times
178 int (* pFuncCost) (If_Man_t *, If_Cut_t *); // procedure to compute the user's cost of a cut
179 int (* pFuncUser) (If_Man_t *, If_Obj_t *, If_Cut_t *); // procedure called for each cut when cut computation is finished
180 int (* pFuncCell) (If_Man_t *, unsigned *, int, int, char *); // procedure called for cut functions
181 int (* pFuncCell2) (If_Man_t *, word *, int, Vec_Str_t *, char **); // procedure called for cut functions
182 int (* pFuncWrite) (If_Man_t *); // procedure called for cut functions
183 void * pReoMan; // reordering manager
184};
185
186// the LUT library
188{
189 char * pName; // the name of the LUT library
190 int LutMax; // the maximum LUT size
191 int fVarPinDelays; // set to 1 if variable pin delays are specified
192 float pLutAreas[IF_MAX_LUTSIZE+1]; // the areas of LUTs
193 float pLutDelays[IF_MAX_LUTSIZE+1][IF_MAX_LUTSIZE+1];// the delays of LUTs
194};
195
196// manager
198{
199 char * pName;
200 // mapping parameters
202 // mapping nodes
203 If_Obj_t * pConst1; // the constant 1 node
204 Vec_Ptr_t * vCis; // the primary inputs
205 Vec_Ptr_t * vCos; // the primary outputs
206 Vec_Ptr_t * vObjs; // all objects
207 Vec_Ptr_t * vObjsRev; // reverse topological order of objects
208 Vec_Ptr_t * vTemp; // temporary array
209 int nObjs[IF_VOID];// the number of objects by type
210 // various data
211 int nLevelMax; // the max number of AIG levels
212 float fEpsilon; // epsilon used for comparison
213 float RequiredGlo; // global required times
214 float RequiredGlo2; // global required times
215 float AreaGlo; // global area
216 int nNets; // the sum total of fanins of all LUTs in the mapping
217 float dPower; // the sum total of switching activities of all LUTs in the mapping
218 int nCutsUsed; // the number of cuts currently used
219 int nCutsMerged; // the total number of cuts merged
220 unsigned * puTemp[4]; // used for the truth table computation
221 word * puTempW; // used for the truth table computation
222 int SortMode; // one of the three sorting modes
223 int fNextRound; // set to 1 after the first round
224 int nChoices; // the number of choice nodes
225 Vec_Int_t * vSwitching; // switching activity of each node
226 int pPerm[3][IF_MAX_LUTSIZE]; // permutations
227 unsigned uSharedMask; // mask of shared variables
228 int nShared; // the number of shared variables
229 int fReqTimeWarn; // warning about exceeding required times was printed
230 // SOP balancing
231 Vec_Int_t * vCover; // used to compute ISOP
232 Vec_Int_t * vArray; // intermediate storage
233 Vec_Wrd_t * vAnds; // intermediate storage
234 Vec_Wrd_t * vOrGate; // intermediate storage
235 Vec_Wrd_t * vAndGate; // intermediate storage
236 // sequential mapping
237 Vec_Ptr_t * vLatchOrder; // topological ordering of latches
238 Vec_Int_t * vLags; // sequentail lags of all nodes
239 int nAttempts; // the number of attempts in binary search
240 int nMaxIters; // the maximum number of iterations
241 int Period; // the current value of the clock period (for seq mapping)
242 // memory management
243 int nTruth6Words[IF_MAX_FUNC_LUTSIZE+1]; // the size of the truth table if allocated
244 int nPermWords; // the size of the permutation array (in words)
245 int nObjBytes; // the size of the object
246 int nCutBytes; // the size of the cut
247 int nSetBytes; // the size of the cut set
248 Mem_Fixed_t * pMemObj; // memory manager for objects (entrysize = nEntrySize)
249 Mem_Fixed_t * pMemSet; // memory manager for sets of cuts (entrysize = nCutSize*(nCutsMax+1))
250 If_Set_t * pMemCi; // memory for CI cutsets
251 If_Set_t * pMemAnd; // memory for AND cutsets
252 If_Set_t * pFreeList; // the list of free cutsets
253 int nSmallSupp; // the small support
256 int nCutsCount[32];
260 If_DsdMan_t * pIfDsdMan; // DSD manager
261 Vec_Mem_t * vTtMem[IF_MAX_FUNC_LUTSIZE+1]; // truth table memory and hash table
262 Vec_Wec_t * vTtIsops[IF_MAX_FUNC_LUTSIZE+1]; // mapping of truth table into DSD
263 Vec_Int_t * vTtDsds[IF_MAX_FUNC_LUTSIZE+1]; // mapping of truth table into DSD
264 Vec_Str_t * vTtPerms[IF_MAX_FUNC_LUTSIZE+1]; // mapping of truth table into permutations
265 Vec_Str_t * vTtVars[IF_MAX_FUNC_LUTSIZE+1]; // mapping of truth table into selected vars
266 Vec_Int_t * vTtDecs[IF_MAX_FUNC_LUTSIZE+1]; // mapping of truth table into decomposition pattern
267 Vec_Int_t * vTtOccurs[IF_MAX_FUNC_LUTSIZE+1];// truth table occurange counters
268 Hash_IntMan_t * vPairHash; // hashing pairs of truth tables
269 Vec_Int_t * vPairRes; // resulting truth table
270 Vec_Str_t * vPairPerms; // resulting permutation
273 unsigned uCanonPhase;
279 Vec_Int_t * vCutData; // cut data storage
282 void * pUserMan;
284 int pDumpIns[16];
287
288 // timing manager
290 Vec_Int_t * vCoAttrs; // CO attributes 0=optimize; 1=keep; 2=relax
291 // hash table for functions
292 int nTableSize[2]; // hash table size
293 int nTableEntries[2]; // hash table entries
294 void ** pHashTable[2]; // hash table bins
295 Mem_Fixed_t * pMemEntries; // memory manager for hash table entries
296 // statistics
297// abctime timeTruth;
298};
299
300// priority cut
302{
303 float Area; // area (or area-flow) of the cut
304 float Edge; // the edge flow
305 float Power; // the power flow
306 float Delay; // delay of the cut
307 int iCutFunc; // TT ID of the cut
308 int uMaskFunc; // polarity bitmask
309 unsigned uSign; // cut signature
310 unsigned Cost : 12; // the user's cost of the cut (related to IF_COST_MAX)
311 unsigned fCompl : 1; // the complemented attribute
312 unsigned fUser : 1; // using the user's area and delay
313 unsigned fUseless: 1; // cannot be used in the mapping
314 unsigned fAndCut : 1; // matched with AND gate
315 unsigned nLimit : 8; // the maximum number of leaves
316 unsigned nLeaves : 8; // the number of leaves
317 unsigned decDelay: 16; // pin-to-pin decomposition delay
318 int pLeaves[0];
319};
320
321// set of priority cut
323{
324 short nCutsMax; // the max number of cuts
325 short nCuts; // the current number of cuts
326 If_Set_t * pNext; // next cutset in the free list
327 If_Cut_t ** ppCuts; // the array of pointers to the cuts
328};
329
330// node extension
332{
333 unsigned Type : 4; // object
334 unsigned fCompl0 : 1; // complemented attribute
335 unsigned fCompl1 : 1; // complemented attribute
336 unsigned fPhase : 1; // phase of the node
337 unsigned fRepr : 1; // representative of the equivalence class
338 unsigned fMark : 1; // multipurpose mark
339 unsigned fVisit : 1; // multipurpose mark
340 unsigned fSpec : 1; // multipurpose mark
341 unsigned fDriver : 1; // multipurpose mark
342 unsigned fSkipCut: 1; // multipurpose mark
343 unsigned Level : 19; // logic level of the node
344 int Id; // integer ID
345 int IdPio; // integer ID of PIs/POs
346 int nRefs; // the number of references
347 int nVisits; // the number of visits to this node
348 int nVisitsCopy; // the number of visits to this node
349 If_Obj_t * pFanin0; // the first fanin
350 If_Obj_t * pFanin1; // the second fanin
351 If_Obj_t * pEquiv; // the choice node
352 float EstRefs; // estimated reference counter
353 float Required; // required time of the onde
354 float LValue; // sequential arrival time of the node
355 union{
356 void * pCopy; // used for object duplication
357 int iCopy;
358 };
359
360 If_Set_t * pCutSet; // the pointer to the cutset
361 If_Cut_t CutBest; // the best cut selected
362};
363
364typedef struct If_Box_t_ If_Box_t;
366{
367 char * pName;
368 char fSeq;
369 char fBlack;
370 char fOuter;
372 int Id;
373 int nPis;
374 int nPos;
375 int * pDelays;
376};
377
379{
382};
383
384static inline If_Obj_t * If_Regular( If_Obj_t * p ) { return (If_Obj_t *)((ABC_PTRUINT_T)(p) & ~01); }
385static inline If_Obj_t * If_Not( If_Obj_t * p ) { return (If_Obj_t *)((ABC_PTRUINT_T)(p) ^ 01); }
386static inline If_Obj_t * If_NotCond( If_Obj_t * p, int c ) { return (If_Obj_t *)((ABC_PTRUINT_T)(p) ^ (c)); }
387static inline int If_IsComplement( If_Obj_t * p ) { return (int )(((ABC_PTRUINT_T)p) & 01); }
388
389static inline int If_ManCiNum( If_Man_t * p ) { return p->nObjs[IF_CI]; }
390static inline int If_ManCoNum( If_Man_t * p ) { return p->nObjs[IF_CO]; }
391static inline int If_ManAndNum( If_Man_t * p ) { return p->nObjs[IF_AND]; }
392static inline int If_ManObjNum( If_Man_t * p ) { return Vec_PtrSize(p->vObjs); }
393
394static inline If_Obj_t * If_ManConst1( If_Man_t * p ) { return p->pConst1; }
395static inline If_Obj_t * If_ManCi( If_Man_t * p, int i ) { return (If_Obj_t *)Vec_PtrEntry( p->vCis, i ); }
396static inline If_Obj_t * If_ManCo( If_Man_t * p, int i ) { return (If_Obj_t *)Vec_PtrEntry( p->vCos, i ); }
397static inline If_Obj_t * If_ManLi( If_Man_t * p, int i ) { return (If_Obj_t *)Vec_PtrEntry( p->vCos, If_ManCoNum(p) - p->pPars->nLatchesCo + i ); }
398static inline If_Obj_t * If_ManLo( If_Man_t * p, int i ) { return (If_Obj_t *)Vec_PtrEntry( p->vCis, If_ManCiNum(p) - p->pPars->nLatchesCi + i ); }
399static inline If_Obj_t * If_ManObj( If_Man_t * p, int i ) { return (If_Obj_t *)Vec_PtrEntry( p->vObjs, i ); }
400
401static inline int If_ObjIsConst1( If_Obj_t * pObj ) { return pObj->Type == IF_CONST1; }
402static inline int If_ObjIsCi( If_Obj_t * pObj ) { return pObj->Type == IF_CI; }
403static inline int If_ObjIsCo( If_Obj_t * pObj ) { return pObj->Type == IF_CO; }
404static inline int If_ObjIsTerm( If_Obj_t * pObj ) { return pObj->Type == IF_CI || pObj->Type == IF_CO; }
405static inline int If_ObjIsLatch( If_Obj_t * pObj ) { return If_ObjIsCi(pObj) && pObj->pFanin0 != NULL; }
406static inline int If_ObjIsAnd( If_Obj_t * pObj ) { return pObj->Type == IF_AND; }
407
408static inline int If_ObjId( If_Obj_t * pObj ) { return pObj->Id; }
409static inline If_Obj_t * If_ObjFanin0( If_Obj_t * pObj ) { return pObj->pFanin0; }
410static inline If_Obj_t * If_ObjFanin1( If_Obj_t * pObj ) { return pObj->pFanin1; }
411static inline int If_ObjFaninC0( If_Obj_t * pObj ) { return pObj->fCompl0; }
412static inline int If_ObjFaninC1( If_Obj_t * pObj ) { return pObj->fCompl1; }
413static inline void * If_ObjCopy( If_Obj_t * pObj ) { return pObj->pCopy; }
414static inline int If_ObjLevel( If_Obj_t * pObj ) { return pObj->Level; }
415static inline void If_ObjSetLevel( If_Obj_t * pObj, int Level ) { pObj->Level = Level; }
416static inline void If_ObjSetCopy( If_Obj_t * pObj, void * pCopy ) { pObj->pCopy = pCopy; }
417static inline void If_ObjSetChoice( If_Obj_t * pObj, If_Obj_t * pEqu ) { pObj->pEquiv = pEqu; }
418
419static inline int If_CutLeaveNum( If_Cut_t * pCut ) { return pCut->nLeaves; }
420static inline int * If_CutLeaves( If_Cut_t * pCut ) { return pCut->pLeaves; }
421static inline If_Obj_t * If_CutLeaf( If_Man_t * p, If_Cut_t * pCut, int i ) { assert(i >= 0 && i < (int)pCut->nLeaves); return If_ManObj(p, pCut->pLeaves[i]); }
422static inline unsigned If_CutSuppMask( If_Cut_t * pCut ) { return (~(unsigned)0) >> (32-pCut->nLeaves); }
423static inline int If_CutTruthWords( int nVarsMax ) { return nVarsMax <= 5 ? 2 : (1 << (nVarsMax - 5)); }
424static inline int If_CutPermWords( int nVarsMax ) { return nVarsMax / sizeof(int) + ((nVarsMax % sizeof(int)) > 0); }
425static inline int If_CutLeafBit( If_Cut_t * pCut, int i ) { return (pCut->uMaskFunc >> i) & 1; }
426static inline char * If_CutPerm( If_Cut_t * pCut ) { return (char *)(pCut->pLeaves + pCut->nLeaves); }
427static inline void If_CutCopy( If_Man_t * p, If_Cut_t * pDst, If_Cut_t * pSrc ) { memcpy( pDst, pSrc, (size_t)p->nCutBytes ); }
428static inline void If_CutSetup( If_Man_t * p, If_Cut_t * pCut ) { memset(pCut, 0, (size_t)p->nCutBytes); pCut->nLimit = p->pPars->nLutSize; }
429
430static inline If_Cut_t * If_ObjCutBest( If_Obj_t * pObj ) { return &pObj->CutBest; }
431static inline unsigned If_ObjCutSign( unsigned ObjId ) { return (1 << (ObjId % 31)); }
432static inline unsigned If_ObjCutSignCompute( If_Cut_t * p ) { unsigned s = 0; int i; for ( i = 0; i < If_CutLeaveNum(p); i++ ) s |= If_ObjCutSign(p->pLeaves[i]); return s; }
433
434static inline float If_ObjArrTime( If_Obj_t * pObj ) { return If_ObjCutBest(pObj)->Delay; }
435static inline void If_ObjSetArrTime( If_Obj_t * pObj, float ArrTime ) { If_ObjCutBest(pObj)->Delay = ArrTime; }
436
437static inline float If_ObjLValue( If_Obj_t * pObj ) { return pObj->LValue; }
438static inline void If_ObjSetLValue( If_Obj_t * pObj, float LValue ) { pObj->LValue = LValue; }
439
440static inline void * If_CutData( If_Cut_t * pCut ) { return *(void **)pCut; }
441static inline void If_CutSetData( If_Cut_t * pCut, void * pData ) { *(void **)pCut = pData; }
442
443static inline int If_CutDataInt( If_Cut_t * pCut ) { return *(int *)pCut; }
444static inline void If_CutSetDataInt( If_Cut_t * pCut, int Data ) { *(int *)pCut = Data; }
445
446static inline int If_CutTruthLit( If_Cut_t * pCut ) { assert( pCut->iCutFunc >= 0 ); return pCut->iCutFunc; }
447static inline int If_CutTruthIsCompl( If_Cut_t * pCut ) { assert( pCut->iCutFunc >= 0 ); return Abc_LitIsCompl(pCut->iCutFunc); }
448static inline word * If_CutTruthWR( If_Man_t * p, If_Cut_t * pCut ) { return p->vTtMem[pCut->nLeaves] ? Vec_MemReadEntry(p->vTtMem[pCut->nLeaves], Abc_Lit2Var(pCut->iCutFunc)) : NULL; }
449static inline unsigned * If_CutTruthUR( If_Man_t * p, If_Cut_t * pCut) { return (unsigned *)If_CutTruthWR(p, pCut); }
450static inline word * If_CutTruthW( If_Man_t * p, If_Cut_t * pCut ) { assert( pCut->iCutFunc >= 0 ); Abc_TtCopy( p->puTempW, If_CutTruthWR(p, pCut), p->nTruth6Words[pCut->nLeaves], If_CutTruthIsCompl(pCut) ); return p->puTempW; }
451static inline unsigned * If_CutTruth( If_Man_t * p, If_Cut_t * pCut ) { return (unsigned *)If_CutTruthW(p, pCut); }
452
453static inline int If_CutDsdLit( If_Man_t * p, If_Cut_t * pCut ) { return Abc_Lit2LitL( Vec_IntArray(p->vTtDsds[pCut->nLeaves]), If_CutTruthLit(pCut) ); }
454static inline int If_CutDsdIsCompl( If_Man_t * p, If_Cut_t * pCut ) { return Abc_LitIsCompl( If_CutDsdLit(p, pCut) ); }
455static inline char * If_CutDsdPerm( If_Man_t * p, If_Cut_t * pCut ) { return Vec_StrEntryP( p->vTtPerms[pCut->nLeaves], Abc_Lit2Var(pCut->iCutFunc) * Abc_MaxInt(6, pCut->nLeaves) ); }
456
457static inline float If_CutLutArea( If_Man_t * p, If_Cut_t * pCut ) { return pCut->fAndCut ? p->pPars->nAndArea : (pCut->fUser? (float)pCut->Cost : (p->pPars->pLutLib? p->pPars->pLutLib->pLutAreas[pCut->nLeaves] : (float)1.0)); }
458static inline float If_CutLutDelay( If_LibLut_t * p, int Size, int iPin ) { return p ? (p->fVarPinDelays ? p->pLutDelays[Size][iPin] : p->pLutDelays[Size][0]) : 1.0; }
459
460
464
465#define IF_MIN(a,b) (((a) < (b))? (a) : (b))
466#define IF_MAX(a,b) (((a) > (b))? (a) : (b))
467
468// the small and large numbers (min/max float are 1.17e-38/3.40e+38)
469#define IF_FLOAT_LARGE ((float)1.0e+20)
470#define IF_FLOAT_SMALL ((float)1.0e-20)
471#define IF_INT_LARGE (10000000)
472
473// iterator over the primary inputs
474#define If_ManForEachCi( p, pObj, i ) \
475 Vec_PtrForEachEntry( If_Obj_t *, p->vCis, pObj, i )
476// iterator over the primary outputs
477#define If_ManForEachCo( p, pObj, i ) \
478 Vec_PtrForEachEntry( If_Obj_t *, p->vCos, pObj, i )
479// iterator over the primary inputs
480#define If_ManForEachPi( p, pObj, i ) \
481 Vec_PtrForEachEntryStop( If_Obj_t *, p->vCis, pObj, i, If_ManCiNum(p) - p->pPars->nLatchesCi - p->pPars->nLatchesCiBox )
482// iterator over the primary outputs
483#define If_ManForEachPo( p, pObj, i ) \
484 Vec_PtrForEachEntryStartStop( If_Obj_t *, p->vCos, pObj, i, p->pPars->nLatchesCoBox, If_ManCoNum(p) - p->pPars->nLatchesCo )
485// iterator over the latches
486#define If_ManForEachLatchInput( p, pObj, i ) \
487 Vec_PtrForEachEntryStart( If_Obj_t *, p->vCos, pObj, i, If_ManCoNum(p) - p->pPars->nLatchesCo )
488#define If_ManForEachLatchOutput( p, pObj, i ) \
489 Vec_PtrForEachEntryStartStop( If_Obj_t *, p->vCis, pObj, i, If_ManCiNum(p) - p->pPars->nLatchesCi - p->pPars->nLatchesCiBox, If_ManCiNum(p) - p->pPars->nLatchesCiBox )
490// iterator over all objects in topological order
491#define If_ManForEachObj( p, pObj, i ) \
492 Vec_PtrForEachEntry( If_Obj_t *, p->vObjs, pObj, i )
493// iterator over all objects in reverse topological order
494#define If_ManForEachObjReverse( p, pObj, i ) \
495 Vec_PtrForEachEntry( If_Obj_t *, p->vObjsRev, pObj, i )
496// iterator over logic nodes
497#define If_ManForEachNode( p, pObj, i ) \
498 If_ManForEachObj( p, pObj, i ) if ( pObj->Type != IF_AND ) {} else
499// iterator over cuts of the node
500#define If_ObjForEachCut( pObj, pCut, i ) \
501 for ( i = 0; (i < (pObj)->pCutSet->nCuts) && ((pCut) = (pObj)->pCutSet->ppCuts[i]); i++ )
502// iterator over the leaves of the cut
503#define If_CutForEachLeaf( p, pCut, pLeaf, i ) \
504 for ( i = 0; (i < (int)(pCut)->nLeaves) && ((pLeaf) = If_ManObj(p, (pCut)->pLeaves[i])); i++ )
505#define If_CutForEachLeafReverse( p, pCut, pLeaf, i ) \
506 for ( i = (int)(pCut)->nLeaves - 1; (i >= 0) && ((pLeaf) = If_ManObj(p, (pCut)->pLeaves[i])); i-- )
507//#define If_CutForEachLeaf( p, pCut, pLeaf, i ) \ \\prevent multiline comment
508// for ( i = 0; (i < (int)(pCut)->nLeaves) && ((pLeaf) = If_ManObj(p, p->pPars->fLiftLeaves? (pCut)->pLeaves[i] >> 8 : (pCut)->pLeaves[i])); i++ )
509// iterator over the leaves of the sequential cut
510#define If_CutForEachLeafSeq( p, pCut, pLeaf, Shift, i ) \
511 for ( i = 0; (i < (int)(pCut)->nLeaves) && ((pLeaf) = If_ManObj(p, (pCut)->pLeaves[i] >> 8)) && (((Shift) = ((pCut)->pLeaves[i] & 255)) >= 0); i++ )
512
516
517/*=== ifCore.c ===========================================================*/
518extern void If_ManSetDefaultPars( If_Par_t * pPars );
519extern int If_ManPerformMapping( If_Man_t * p );
520extern int If_ManPerformMappingComb( If_Man_t * p );
521extern void If_ManComputeSwitching( If_Man_t * p );
522/*=== ifCut.c ============================================================*/
523extern int If_CutVerifyCuts( If_Set_t * pCutSet, int fOrdered );
524extern int If_CutFilter( If_Set_t * pCutSet, If_Cut_t * pCut, int fSaveCut0 );
525extern void If_CutSort( If_Man_t * p, If_Set_t * pCutSet, If_Cut_t * pCut );
526extern void If_CutOrder( If_Cut_t * pCut );
527extern int If_CutMergeOrdered( If_Man_t * p, If_Cut_t * pCut0, If_Cut_t * pCut1, If_Cut_t * pCut );
528extern int If_CutMerge( If_Man_t * p, If_Cut_t * pCut0, If_Cut_t * pCut1, If_Cut_t * pCut );
529extern int If_CutCheck( If_Cut_t * pCut );
530extern void If_CutPrint( If_Cut_t * pCut );
531extern void If_CutPrintTiming( If_Man_t * p, If_Cut_t * pCut );
532extern void If_CutLift( If_Cut_t * pCut );
533extern void If_CutCopy( If_Man_t * p, If_Cut_t * pCutDest, If_Cut_t * pCutSrc );
534extern float If_CutAreaFlow( If_Man_t * p, If_Cut_t * pCut );
535extern float If_CutEdgeFlow( If_Man_t * p, If_Cut_t * pCut );
536extern float If_CutPowerFlow( If_Man_t * p, If_Cut_t * pCut, If_Obj_t * pRoot );
537extern float If_CutAverageRefs( If_Man_t * p, If_Cut_t * pCut );
538extern float If_CutAreaDeref( If_Man_t * p, If_Cut_t * pCut );
539extern float If_CutAreaRef( If_Man_t * p, If_Cut_t * pCut );
540extern float If_CutAreaDerefed( If_Man_t * p, If_Cut_t * pCut );
541extern float If_CutAreaRefed( If_Man_t * p, If_Cut_t * pCut );
542extern float If_CutEdgeDeref( If_Man_t * p, If_Cut_t * pCut );
543extern float If_CutEdgeRef( If_Man_t * p, If_Cut_t * pCut );
544extern float If_CutEdgeDerefed( If_Man_t * p, If_Cut_t * pCut );
545extern float If_CutEdgeRefed( If_Man_t * p, If_Cut_t * pCut );
546extern float If_CutPowerDeref( If_Man_t * p, If_Cut_t * pCut, If_Obj_t * pRoot );
547extern float If_CutPowerRef( If_Man_t * p, If_Cut_t * pCut, If_Obj_t * pRoot );
548extern float If_CutPowerDerefed( If_Man_t * p, If_Cut_t * pCut, If_Obj_t * pRoot );
549extern float If_CutPowerRefed( If_Man_t * p, If_Cut_t * pCut, If_Obj_t * pRoot );
550/*=== ifDec.c =============================================================*/
551extern word If_CutPerformDerive07( If_Man_t * p, unsigned * pTruth, int nVars, int nLeaves, char * pStr );
552extern int If_CutPerformCheck07( If_Man_t * p, unsigned * pTruth, int nVars, int nLeaves, char * pStr );
553extern int If_CutPerformCheck08( If_Man_t * p, unsigned * pTruth, int nVars, int nLeaves, char * pStr );
554extern int If_CutPerformCheck10( If_Man_t * p, unsigned * pTruth, int nVars, int nLeaves, char * pStr );
555extern int If_CutPerformCheck16( If_Man_t * p, unsigned * pTruth, int nVars, int nLeaves, char * pStr );
556extern int If_CutPerformCheckXX( If_Man_t * p, unsigned * pTruth, int nVars, int nLeaves, char * pStr );
557extern int If_CutPerformCheck45( If_Man_t * p, unsigned * pTruth, int nVars, int nLeaves, char * pStr );
558extern int If_CutPerformCheck54( If_Man_t * p, unsigned * pTruth, int nVars, int nLeaves, char * pStr );
559extern int If_CutPerformCheck75( If_Man_t * p, unsigned * pTruth, int nVars, int nLeaves, char * pStr );
560extern float If_CutDelayLutStruct( If_Man_t * p, If_Cut_t * pCut, char * pStr, float WireDelay );
561// extern int If_CutPerformAcd( If_Man_t * p, unsigned nVars, int lutSize, unsigned * pdelay, int use_late_arrival, unsigned * cost );
562extern int If_CluCheckExt( void * p, word * pTruth, int nVars, int nLutLeaf, int nLutRoot,
563 char * pLut0, char * pLut1, word * pFunc0, word * pFunc1 );
564extern int If_CluCheckExt3( void * p, word * pTruth, int nVars, int nLutLeaf, int nLutLeaf2, int nLutRoot,
565 char * pLut0, char * pLut1, char * pLut2, word * pFunc0, word * pFunc1, word * pFunc2 );
566extern int If_CluCheckXXExt( void * p, word * pTruth, int nVars, int nLutLeaf, int nLutRoot,
567 char * pLut0, char * pLut1, word * pFunc0, word * pFunc1 );
568extern int If_MatchCheck1( If_Man_t * p, unsigned * pTruth, int nVars, int nLeaves, char * pStr );
569extern int If_MatchCheck2( If_Man_t * p, unsigned * pTruth, int nVars, int nLeaves, char * pStr );
570/*=== ifDelay.c =============================================================*/
571extern int If_CutDelaySop( If_Man_t * p, If_Cut_t * pCut );
572extern int If_CutSopBalanceEvalInt( Vec_Int_t * vCover, int * pTimes, int * pFaninLits, Vec_Int_t * vAig, int * piRes, int nSuppAll, int * pArea );
573extern int If_CutSopBalanceEval( If_Man_t * p, If_Cut_t * pCut, Vec_Int_t * vAig );
574extern int If_CutSopBalancePinDelaysInt( Vec_Int_t * vCover, int * pTimes, word * pFaninRes, int nSuppAll, word * pRes );
575extern int If_CutSopBalancePinDelays( If_Man_t * p, If_Cut_t * pCut, char * pPerm );
576extern int If_CutLutBalanceEval( If_Man_t * p, If_Cut_t * pCut );
577extern int If_CutLutBalancePinDelays( If_Man_t * p, If_Cut_t * pCut, char * pPerm );
578extern int If_LutDecEval( If_Man_t * p, If_Cut_t * pCut, If_Obj_t * pObj, int optDelay, int fFirst );
579extern int If_Lut2DecEval( If_Man_t * p, If_Cut_t * pCut, If_Obj_t * pObj, int optDelay, int fFirst );
580extern int If_LutDecReEval( If_Man_t * p, If_Cut_t * pCut );
581extern float If_LutDecPinRequired( If_Man_t * p, If_Cut_t * pCut, int i, float required );
582/*=== ifDsd.c =============================================================*/
583extern If_DsdMan_t * If_DsdManAlloc( int nVars, int nLutSize );
584extern void If_DsdManAllocIsops( If_DsdMan_t * p, int nLutSize );
585extern void If_DsdManPrint( If_DsdMan_t * p, char * pFileName, int Number, int Support, int fOccurs, int fTtDump, int fVerbose );
586extern void If_DsdManTune( If_DsdMan_t * p, int LutSize, int fFast, int fAdd, int fSpec, int fVerbose );
587extern void Id_DsdManTuneStr( If_DsdMan_t * p, char * pStruct, int nConfls, int nProcs, int nInputs, int fVerbose );
588extern void If_DsdManFree( If_DsdMan_t * p, int fVerbose );
589extern void If_DsdManSave( If_DsdMan_t * p, char * pFileName );
590extern If_DsdMan_t * If_DsdManLoad( char * pFileName );
591extern void If_DsdManMerge( If_DsdMan_t * p, If_DsdMan_t * pNew );
592extern void If_DsdManCleanOccur( If_DsdMan_t * p, int fVerbose );
593extern void If_DsdManCleanMarks( If_DsdMan_t * p, int fVerbose );
594extern void If_DsdManInvertMarks( If_DsdMan_t * p, int fVerbose );
595extern If_DsdMan_t * If_DsdManFilter( If_DsdMan_t * p, int Limit );
596extern int If_DsdManCompute( If_DsdMan_t * p, word * pTruth, int nLeaves, unsigned char * pPerm, char * pLutStruct );
597extern char * If_DsdManFileName( If_DsdMan_t * p );
598extern int If_DsdManVarNum( If_DsdMan_t * p );
599extern int If_DsdManObjNum( If_DsdMan_t * p );
600extern int If_DsdManLutSize( If_DsdMan_t * p );
601extern int If_DsdManTtBitNum( If_DsdMan_t * p );
602extern int If_DsdManPermBitNum( If_DsdMan_t * p );
603extern void If_DsdManSetLutSize( If_DsdMan_t * p, int nLutSize );
604extern int If_DsdManSuppSize( If_DsdMan_t * p, int iDsd );
605extern int If_DsdManCheckDec( If_DsdMan_t * p, int iDsd );
606extern int If_DsdManReadMark( If_DsdMan_t * p, int iDsd );
607extern void If_DsdManSetNewAsUseless( If_DsdMan_t * p );
608extern word * If_DsdManGetFuncConfig( If_DsdMan_t * p, int iDsd );
609extern char * If_DsdManGetCellStr( If_DsdMan_t * p );
610extern unsigned If_DsdManCheckXY( If_DsdMan_t * p, int iDsd, int LutSize, int fDerive, unsigned uMaskNot, int fHighEffort, int fVerbose );
611extern int If_CutDsdBalanceEval( If_Man_t * p, If_Cut_t * pCut, Vec_Int_t * vAig );
612extern int If_CutDsdBalancePinDelays( If_Man_t * p, If_Cut_t * pCut, char * pPerm );
613extern void Id_DsdManTuneThresh( If_DsdMan_t * p, int fUnate, int fThresh, int fThreshHeuristic, int fVerbose );
614/*=== ifLib.c =============================================================*/
615extern If_LibLut_t * If_LibLutRead( char * FileName );
617extern void If_LibLutFree( If_LibLut_t * pLutLib );
618extern void If_LibLutPrint( If_LibLut_t * pLutLib );
619extern int If_LibLutDelaysAreDiscrete( If_LibLut_t * pLutLib );
620extern int If_LibLutDelaysAreDifferent( If_LibLut_t * pLutLib );
621extern If_LibLut_t * If_LibLutSetSimple( int nLutSize );
622extern float If_LibLutFastestPinDelay( If_LibLut_t * p );
623extern float If_LibLutSlowestPinDelay( If_LibLut_t * p );
624/*=== ifLibBox.c =============================================================*/
625extern If_LibBox_t * If_LibBoxStart();
626extern void If_LibBoxFree( If_LibBox_t * p );
627extern int If_LibBoxNum( If_LibBox_t * p );
628extern If_Box_t * If_LibBoxReadBox( If_LibBox_t * p, int Id );
629extern If_Box_t * If_LibBoxFindBox( If_LibBox_t * p, char * pName );
630extern void If_LibBoxAdd( If_LibBox_t * p, If_Box_t * pBox );
631extern If_LibBox_t * If_LibBoxRead( char * pFileName );
632extern If_LibBox_t * If_LibBoxRead2( char * pFileName );
633extern void If_LibBoxPrint( FILE * pFile, If_LibBox_t * p );
634extern void If_LibBoxWrite( char * pFileName, If_LibBox_t * p );
635extern int If_LibBoxLoad( char * pFileName );
636extern If_Box_t * If_BoxStart( char * pName, int Id, int nPis, int nPos, int fSeq, int fBlack, int fOuter );
637/*=== ifMan.c =============================================================*/
638extern If_Man_t * If_ManStart( If_Par_t * pPars );
639extern void If_ManRestart( If_Man_t * p );
640extern void If_ManStop( If_Man_t * p );
641extern If_Obj_t * If_ManCreateCi( If_Man_t * p );
642extern If_Obj_t * If_ManCreateCo( If_Man_t * p, If_Obj_t * pDriver );
643extern If_Obj_t * If_ManCreateAnd( If_Man_t * p, If_Obj_t * pFan0, If_Obj_t * pFan1 );
644extern If_Obj_t * If_ManCreateXor( If_Man_t * p, If_Obj_t * pFan0, If_Obj_t * pFan1 );
645extern If_Obj_t * If_ManCreateMux( If_Man_t * p, If_Obj_t * pFan0, If_Obj_t * pFan1, If_Obj_t * pCtrl );
646extern void If_ManCreateChoice( If_Man_t * p, If_Obj_t * pRepr );
647extern void If_ManSetupCutTriv( If_Man_t * p, If_Cut_t * pCut, int ObjId );
648extern void If_ManSetupCiCutSets( If_Man_t * p );
649extern If_Set_t * If_ManSetupNodeCutSet( If_Man_t * p, If_Obj_t * pObj );
650extern void If_ManDerefNodeCutSet( If_Man_t * p, If_Obj_t * pObj );
651extern void If_ManDerefChoiceCutSet( If_Man_t * p, If_Obj_t * pObj );
652extern void If_ManSetupSetAll( If_Man_t * p, int nCrossCut );
653/*=== ifMap.c =============================================================*/
654extern int * If_CutArrTimeProfile( If_Man_t * p, If_Cut_t * pCut );
655extern void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPreprocess, int fFirst );
656extern void If_ObjPerformMappingChoice( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPreprocess );
657extern int If_ManPerformMappingRound( If_Man_t * p, int nCutsUsed, int Mode, int fPreprocess, int fFirst, char * pLabel );
658/*=== ifReduce.c ==========================================================*/
659extern void If_ManImproveMapping( If_Man_t * p );
660/*=== ifSat.c ==========================================================*/
661extern void * If_ManSatBuildXY( int nLutSize );
662extern void * If_ManSatBuildXYZ( int nLutSize );
663extern void If_ManSatUnbuild( void * p );
664extern int If_ManSatCheckXY( void * pSat, int nLutSize, word * pTruth, int nVars, unsigned uSet, word * pTBound, word * pTFree, Vec_Int_t * vLits );
665extern unsigned If_ManSatCheckXYall( void * pSat, int nLutSize, word * pTruth, int nVars, Vec_Int_t * vLits );
666/*=== ifSeq.c =============================================================*/
667extern int If_ManPerformMappingSeq( If_Man_t * p );
668/*=== ifTime.c ============================================================*/
669extern float If_CutDelay( If_Man_t * p, If_Obj_t * pObj, If_Cut_t * pCut );
670extern void If_CutPropagateRequired( If_Man_t * p, If_Obj_t * pObj, If_Cut_t * pCut, float Required );
671extern float If_ManDelayMax( If_Man_t * p, int fSeq );
672extern void If_ManComputeRequired( If_Man_t * p );
673/*=== ifTruth.c ===========================================================*/
674extern void If_CutRotatePins( If_Man_t * p, If_Cut_t * pCut );
675extern int If_CutComputeTruth( If_Man_t * p, If_Cut_t * pCut, If_Cut_t * pCut0, If_Cut_t * pCut1, int fCompl0, int fCompl1 );
676extern int If_CutComputeTruthPerm( If_Man_t * p, If_Cut_t * pCut, If_Cut_t * pCut0, If_Cut_t * pCut1, int fCompl0, int fCompl1 );
677extern Vec_Mem_t * If_DeriveHashTable6( int nVars, word Truth );
678extern int If_CutCheckTruth6( If_Man_t * p, If_Cut_t * pCut );
679/*=== ifTune.c ===========================================================*/
680extern Ifn_Ntk_t * Ifn_NtkParse( char * pStr );
681extern int Ifn_NtkTtBits( char * pStr );
682extern int Ifn_NtkMatch( Ifn_Ntk_t * p, word * pTruth, int nVars, int nConfls, int fVerbose, int fVeryVerbose, word * pConfig );
683extern void Ifn_NtkPrint( Ifn_Ntk_t * p );
684extern int Ifn_NtkLutSizeMax( Ifn_Ntk_t * p );
685extern int Ifn_NtkInputNum( Ifn_Ntk_t * p );
686extern void * If_ManSatBuildFromCell( char * pStr, Vec_Int_t ** pvPiVars, Vec_Int_t ** pvPoVars, Ifn_Ntk_t ** ppNtk );
687extern int If_ManSatFindCofigBits( void * pSat, Vec_Int_t * vPiVars, Vec_Int_t * vPoVars, word * pTruth, int nVars, word Perm, int nInps, Vec_Int_t * vValues );
688extern int If_ManSatDeriveGiaFromBits( void * pNew, Ifn_Ntk_t * p, word * pTtData, Vec_Int_t * vLeaves, Vec_Int_t * vValues );
689extern void * If_ManDeriveGiaFromCells( void * p );
690/*=== ifUtil.c ============================================================*/
691extern void If_ManCleanNodeCopy( If_Man_t * p );
692extern void If_ManCleanCutData( If_Man_t * p );
693extern void If_ManCleanMarkV( If_Man_t * p );
694extern float If_ManScanMapping( If_Man_t * p );
697extern void If_ManResetOriginalRefs( If_Man_t * p );
698extern int If_ManCrossCut( If_Man_t * p );
699
701extern void If_ManMarkMapping( If_Man_t * p );
704
705extern int If_ManCountSpecialPos( If_Man_t * p );
706extern void If_CutTraverse( If_Man_t * p, If_Obj_t * pRoot, If_Cut_t * pCut, Vec_Ptr_t * vNodes );
707extern void If_ObjPrint( If_Obj_t * pObj );
708
709extern int acd_evaluate( word * pTruth, unsigned nVars, int lutSize, unsigned *pdelay, unsigned *cost, int try_no_late_arrival );
710extern int acd_decompose( word * pTruth, unsigned nVars, int lutSize, unsigned *pdelay, unsigned char *decomposition );
711extern int acd2_evaluate( word * pTruth, unsigned nVars, int lutSize, unsigned *pdelay, unsigned *cost, int try_no_late_arrival );
712extern int acd2_decompose( word * pTruth, unsigned nVars, int lutSize, unsigned *pdelay, unsigned char *decomposition );
713
715
716#endif
717
721
ABC_INT64_T abctime
Definition abc_global.h:332
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
struct Vec_Str_t_ Vec_Str_t
Definition bblif.c:46
Cube * p
Definition exorList.c:222
float If_LutDecPinRequired(If_Man_t *p, If_Cut_t *pCut, int i, float required)
Definition ifDelay.c:625
void If_ObjPrint(If_Obj_t *pObj)
Definition ifUtil.c:604
struct If_LibBox_t_ If_LibBox_t
Definition if.h:83
int Ifn_NtkInputNum(Ifn_Ntk_t *p)
Definition ifTune.c:167
If_DsdMan_t * If_DsdManFilter(If_DsdMan_t *p, int Limit)
Definition ifDsd.c:1294
If_LibBox_t * If_LibBoxRead2(char *pFileName)
Definition ifLibBox.c:160
int If_CutMerge(If_Man_t *p, If_Cut_t *pCut0, If_Cut_t *pCut1, If_Cut_t *pCut)
Definition ifCut.c:364
int If_MatchCheck1(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
Definition ifDec07.c:1119
void If_ManCleanCutData(If_Man_t *p)
Definition ifUtil.c:64
void If_DsdManCleanOccur(If_DsdMan_t *p, int fVerbose)
Definition ifDsd.c:1248
int acd_decompose(word *pTruth, unsigned nVars, int lutSize, unsigned *pdelay, unsigned char *decomposition)
void * If_ManDeriveGiaFromCells(void *p)
Definition ifTune.c:825
unsigned If_DsdManCheckXY(If_DsdMan_t *p, int iDsd, int LutSize, int fDerive, unsigned uMaskNot, int fHighEffort, int fVerbose)
Definition ifDsd.c:2017
void If_DsdManSetNewAsUseless(If_DsdMan_t *p)
Definition ifDsd.c:209
int If_CutLutBalancePinDelays(If_Man_t *p, If_Cut_t *pCut, char *pPerm)
Definition ifDelay.c:327
float If_CutEdgeRefed(If_Man_t *p, If_Cut_t *pCut)
Definition ifCut.c:1234
void If_LibBoxPrint(FILE *pFile, If_LibBox_t *p)
Definition ifLibBox.c:339
int If_CutCheck(If_Cut_t *pCut)
Definition ifCut.c:834
void Ifn_NtkPrint(Ifn_Ntk_t *p)
Definition ifTune.c:141
void If_ManCreateChoice(If_Man_t *p, If_Obj_t *pRepr)
Definition ifMan.c:460
float If_CutAreaDeref(If_Man_t *p, If_Cut_t *pCut)
Definition ifCut.c:1056
void If_ObjPerformMappingAnd(If_Man_t *p, If_Obj_t *pObj, int Mode, int fPreprocess, int fFirst)
Definition ifMap.c:162
int If_CutComputeTruthPerm(If_Man_t *p, If_Cut_t *pCut, If_Cut_t *pCut0, If_Cut_t *pCut1, int fCompl0, int fCompl1)
Definition ifTruth.c:269
void If_ManCleanMarkV(If_Man_t *p)
Definition ifUtil.c:83
void If_ManSetupCutTriv(If_Man_t *p, If_Cut_t *pCut, int ObjId)
Definition ifMan.c:517
float If_CutPowerFlow(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pRoot)
Definition ifCut.c:1003
float If_CutEdgeDerefed(If_Man_t *p, If_Cut_t *pCut)
Definition ifCut.c:1211
void If_CutPrint(If_Cut_t *pCut)
Definition ifCut.c:864
If_Obj_t * If_ManCreateCo(If_Man_t *p, If_Obj_t *pDriver)
Definition ifMan.c:356
float If_CutDelay(If_Man_t *p, If_Obj_t *pObj, If_Cut_t *pCut)
Definition ifTime.c:91
If_LibLut_t * If_LibLutSetSimple(int nLutSize)
Definition ifLibLut.c:438
void If_DsdManPrint(If_DsdMan_t *p, char *pFileName, int Number, int Support, int fOccurs, int fTtDump, int fVerbose)
Definition ifDsd.c:701
If_Box_t * If_LibBoxReadBox(If_LibBox_t *p, int Id)
Definition ifLibBox.c:121
void If_DsdManCleanMarks(If_DsdMan_t *p, int fVerbose)
Definition ifDsd.c:1255
int If_CutPerformCheck54(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
Definition ifDec16.c:1886
struct If_Par_t_ If_Par_t
Definition if.h:78
int If_DsdManLutSize(If_DsdMan_t *p)
Definition ifDsd.c:181
void If_ManSetupCiCutSets(If_Man_t *p)
Definition ifMan.c:566
float If_CutEdgeFlow(If_Man_t *p, If_Cut_t *pCut)
Definition ifCut.c:965
int If_CutFilter(If_Set_t *pCutSet, If_Cut_t *pCut, int fSaveCut0)
Definition ifCut.c:146
void If_LibLutPrint(If_LibLut_t *pLutLib)
Definition ifLibLut.c:352
void If_LibBoxWrite(char *pFileName, If_LibBox_t *p)
Definition ifLibBox.c:356
If_Type_t
Definition if.h:64
@ IF_CO
Definition if.h:68
@ IF_VOID
Definition if.h:70
@ IF_AND
Definition if.h:69
@ IF_NONE
Definition if.h:65
@ IF_CONST1
Definition if.h:66
@ IF_CI
Definition if.h:67
void Id_DsdManTuneStr(If_DsdMan_t *p, char *pStruct, int nConfls, int nProcs, int nInputs, int fVerbose)
Definition ifDsd.c:2557
float If_ManScanMapping(If_Man_t *p)
void If_DsdManMerge(If_DsdMan_t *p, If_DsdMan_t *pNew)
Definition ifDsd.c:1201
float If_CutPowerRefed(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pRoot)
Definition ifCut.c:1337
float If_CutAverageRefs(If_Man_t *p, If_Cut_t *pCut)
Definition ifCut.c:1034
Vec_Ptr_t * If_ManCollectMappingDirect(If_Man_t *p)
Definition ifUtil.c:462
void If_ManResetOriginalRefs(If_Man_t *p)
Definition ifUtil.c:287
float If_CutPowerRef(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pRoot)
Definition ifCut.c:1286
int If_CluCheckXXExt(void *p, word *pTruth, int nVars, int nLutLeaf, int nLutRoot, char *pLut0, char *pLut1, word *pFunc0, word *pFunc1)
Definition ifDec66.c:301
struct If_Cut_t_ If_Cut_t
Definition if.h:80
float If_CutAreaRef(If_Man_t *p, If_Cut_t *pCut)
Definition ifCut.c:1083
int If_CutPerformCheck75(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
Definition ifDec75.c:303
If_Set_t * If_ManSetupNodeCutSet(If_Man_t *p, If_Obj_t *pObj)
Definition ifMan.c:597
int If_DsdManSuppSize(If_DsdMan_t *p, int iDsd)
Definition ifDsd.c:197
If_LibBox_t * If_LibBoxRead(char *pFileName)
Definition ifLibBox.c:278
int acd_evaluate(word *pTruth, unsigned nVars, int lutSize, unsigned *pdelay, unsigned *cost, int try_no_late_arrival)
int If_CutPerformCheckXX(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
Definition ifDec66.c:363
If_Box_t * If_BoxStart(char *pName, int Id, int nPis, int nPos, int fSeq, int fBlack, int fOuter)
FUNCTION DEFINITIONS ///.
Definition ifLibBox.c:49
int If_ManSatFindCofigBits(void *pSat, Vec_Int_t *vPiVars, Vec_Int_t *vPoVars, word *pTruth, int nVars, word Perm, int nInps, Vec_Int_t *vValues)
Definition ifTune.c:698
int If_MatchCheck2(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
Definition ifDec07.c:1128
char * If_DsdManGetCellStr(If_DsdMan_t *p)
Definition ifDsd.c:219
Ifn_Ntk_t * Ifn_NtkParse(char *pStr)
Definition ifTune.c:440
int If_CutPerformCheck07(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
Definition ifDec07.c:1060
unsigned If_ManSatCheckXYall(void *pSat, int nLutSize, word *pTruth, int nVars, Vec_Int_t *vLits)
Definition ifSat.c:477
void If_CutRotatePins(If_Man_t *p, If_Cut_t *pCut)
Definition ifTruth.c:68
float If_CutAreaFlow(If_Man_t *p, If_Cut_t *pCut)
Definition ifCut.c:927
If_Obj_t * If_ManCreateXor(If_Man_t *p, If_Obj_t *pFan0, If_Obj_t *pFan1)
Definition ifMan.c:422
int Ifn_NtkMatch(Ifn_Ntk_t *p, word *pTruth, int nVars, int nConfls, int fVerbose, int fVeryVerbose, word *pConfig)
Definition ifTune.c:1328
int If_ManSatDeriveGiaFromBits(void *pNew, Ifn_Ntk_t *p, word *pTtData, Vec_Int_t *vLeaves, Vec_Int_t *vValues)
Definition ifTune.c:742
int If_DsdManObjNum(If_DsdMan_t *p)
Definition ifDsd.c:177
void Id_DsdManTuneThresh(If_DsdMan_t *p, int fUnate, int fThresh, int fThreshHeuristic, int fVerbose)
Vec_Ptr_t * If_ManReverseOrder(If_Man_t *p)
Definition ifUtil.c:363
void If_ManDerefChoiceCutSet(If_Man_t *p, If_Obj_t *pObj)
Definition ifMan.c:663
int If_LibLutDelaysAreDiscrete(If_LibLut_t *pLutLib)
Definition ifLibLut.c:383
word If_CutPerformDerive07(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
Definition ifDec07.c:1018
int Ifn_NtkTtBits(char *pStr)
Definition ifTune.c:464
void If_CutTraverse(If_Man_t *p, If_Obj_t *pRoot, If_Cut_t *pCut, Vec_Ptr_t *vNodes)
Definition ifUtil.c:565
int If_CluCheckExt3(void *p, word *pTruth, int nVars, int nLutLeaf, int nLutLeaf2, int nLutRoot, char *pLut0, char *pLut1, char *pLut2, word *pFunc0, word *pFunc1, word *pFunc2)
Definition ifDec16.c:2079
void If_DsdManInvertMarks(If_DsdMan_t *p, int fVerbose)
Definition ifDsd.c:1264
int If_ManPerformMappingComb(If_Man_t *p)
Definition ifCore.c:106
void If_ManMarkMapping(If_Man_t *p)
Definition ifUtil.c:434
int If_CutLutBalanceEval(If_Man_t *p, If_Cut_t *pCut)
Definition ifDelay.c:369
int If_ManCountSpecialPos(If_Man_t *p)
Definition ifUtil.c:520
int If_DsdManCompute(If_DsdMan_t *p, word *pTruth, int nLeaves, unsigned char *pPerm, char *pLutStruct)
Definition ifDsd.c:2063
void If_DsdManTune(If_DsdMan_t *p, int LutSize, int fFast, int fAdd, int fSpec, int fVerbose)
Definition ifDsd.c:2411
int If_DsdManVarNum(If_DsdMan_t *p)
Definition ifDsd.c:173
void If_CutPrintTiming(If_Man_t *p, If_Cut_t *pCut)
Definition ifCut.c:884
int If_CutDsdBalanceEval(If_Man_t *p, If_Cut_t *pCut, Vec_Int_t *vAig)
Definition ifDsd.c:2322
int If_CutDelaySop(If_Man_t *p, If_Cut_t *pCut)
Definition ifDelay.c:64
int If_CutPerformCheck08(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
Definition ifDec08.c:475
If_LibLut_t * If_LibLutRead(char *FileName)
Definition ifLibLut.c:202
struct If_LibLut_t_ If_LibLut_t
Definition if.h:82
word * If_DsdManGetFuncConfig(If_DsdMan_t *p, int iDsd)
Definition ifDsd.c:215
void If_DsdManSave(If_DsdMan_t *p, char *pFileName)
Definition ifDsd.c:1049
void * If_ManSatBuildXY(int nLutSize)
DECLARATIONS ///.
Definition ifSat.c:45
int If_CutPerformCheck10(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
Definition ifDec10.c:474
void If_ObjPerformMappingChoice(If_Man_t *p, If_Obj_t *pObj, int Mode, int fPreprocess)
Definition ifMap.c:521
void If_DsdManAllocIsops(If_DsdMan_t *p, int nLutSize)
Definition ifDsd.c:306
void If_ManRestart(If_Man_t *p)
Definition ifMan.c:185
float If_LibLutFastestPinDelay(If_LibLut_t *p)
Definition ifLibLut.c:478
#define IF_MAX_LUTSIZE
INCLUDES ///.
Definition if.h:53
struct If_DsdMan_t_ If_DsdMan_t
Definition if.h:84
void If_LibLutFree(If_LibLut_t *pLutLib)
Definition ifLibLut.c:332
float If_CutDelayLutStruct(If_Man_t *p, If_Cut_t *pCut, char *pStr, float WireDelay)
Definition ifDec16.c:2103
void If_ManSetDefaultPars(If_Par_t *pPars)
FUNCTION DECLARATIONS ///.
Definition ifCore.c:47
Vec_Int_t * If_ManCollectMappingInt(If_Man_t *p)
Definition ifUtil.c:486
int If_LutDecReEval(If_Man_t *p, If_Cut_t *pCut)
Definition ifDelay.c:597
int Ifn_NtkLutSizeMax(Ifn_Ntk_t *p)
Definition ifTune.c:159
int * If_CutArrTimeProfile(If_Man_t *p, If_Cut_t *pCut)
Definition ifMap.c:143
Vec_Mem_t * If_DeriveHashTable6(int nVars, word Truth)
Definition ifTruth.c:345
int If_LibBoxNum(If_LibBox_t *p)
Definition ifLibBox.c:144
float If_ManScanMappingSeq(If_Man_t *p)
float If_ManDelayMax(If_Man_t *p, int fSeq)
Definition ifTime.c:269
If_Obj_t * If_ManCreateAnd(If_Man_t *p, If_Obj_t *pFan0, If_Obj_t *pFan1)
Definition ifMan.c:384
int If_CutVerifyCuts(If_Set_t *pCutSet, int fOrdered)
Definition ifCut.c:62
int acd2_evaluate(word *pTruth, unsigned nVars, int lutSize, unsigned *pdelay, unsigned *cost, int try_no_late_arrival)
struct If_Set_t_ If_Set_t
Definition if.h:81
struct Ifn_Ntk_t_ Ifn_Ntk_t
Definition if.h:85
If_Obj_t * If_ManCreateMux(If_Man_t *p, If_Obj_t *pFan0, If_Obj_t *pFan1, If_Obj_t *pCtrl)
Definition ifMan.c:441
float If_CutEdgeDeref(If_Man_t *p, If_Cut_t *pCut)
Definition ifCut.c:1157
void If_ManComputeSwitching(If_Man_t *p)
FUNCTION DEFINITIONS ///.
Definition abcIf.c:59
If_DsdMan_t * If_DsdManAlloc(int nVars, int nLutSize)
Definition ifDsd.c:264
void If_ManComputeRequired(If_Man_t *p)
Definition ifTime.c:313
void If_ManStop(If_Man_t *p)
Definition ifMan.c:212
int acd2_decompose(word *pTruth, unsigned nVars, int lutSize, unsigned *pdelay, unsigned char *decomposition)
int If_ManPerformMapping(If_Man_t *p)
Definition ifCore.c:82
void If_LibBoxAdd(If_LibBox_t *p, If_Box_t *pBox)
Definition ifLibBox.c:136
void If_ManSetupSetAll(If_Man_t *p, int nCrossCut)
Definition ifMan.c:693
int If_DsdManReadMark(If_DsdMan_t *p, int iDsd)
Definition ifDsd.c:205
float If_CutEdgeRef(If_Man_t *p, If_Cut_t *pCut)
Definition ifCut.c:1184
int If_ManPerformMappingSeq(If_Man_t *p)
Definition ifSeq.c:334
int If_Lut2DecEval(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pObj, int optDelay, int fFirst)
Definition ifDelay.c:508
void If_CutSort(If_Man_t *p, If_Set_t *pCutSet, If_Cut_t *pCut)
Definition ifCut.c:746
If_Box_t * If_LibBoxFindBox(If_LibBox_t *p, char *pName)
Definition ifLibBox.c:125
int If_CutCheckTruth6(If_Man_t *p, If_Cut_t *pCut)
Definition ifTruth.c:396
void If_CutOrder(If_Cut_t *pCut)
Definition ifCut.c:805
float If_CutAreaRefed(If_Man_t *p, If_Cut_t *pCut)
Definition ifCut.c:1133
void If_CutLift(If_Cut_t *pCut)
Definition ifCut.c:905
int If_ManPerformMappingRound(If_Man_t *p, int nCutsUsed, int Mode, int fPreprocess, int fFirst, char *pLabel)
Definition ifMap.c:606
void * If_ManSatBuildFromCell(char *pStr, Vec_Int_t **pvPiVars, Vec_Int_t **pvPoVars, Ifn_Ntk_t **ppNtk)
Definition ifTune.c:633
float If_CutPowerDeref(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pRoot)
Definition ifCut.c:1258
#define IF_MAX_FUNC_LUTSIZE
Definition if.h:55
int If_CluCheckExt(void *p, word *pTruth, int nVars, int nLutLeaf, int nLutRoot, char *pLut0, char *pLut1, word *pFunc0, word *pFunc1)
Definition ifDec16.c:2066
int If_ManSatCheckXY(void *pSat, int nLutSize, word *pTruth, int nVars, unsigned uSet, word *pTBound, word *pTFree, Vec_Int_t *vLits)
Definition ifSat.c:151
struct If_Man_t_ If_Man_t
BASIC TYPES ///.
Definition if.h:77
struct If_Box_t_ If_Box_t
Definition if.h:364
void If_ManDerefNodeCutSet(If_Man_t *p, If_Obj_t *pObj)
Definition ifMan.c:620
int If_LibLutDelaysAreDifferent(If_LibLut_t *pLutLib)
Definition ifLibLut.c:407
If_Man_t * If_ManStart(If_Par_t *pPars)
FUNCTION DEFINITIONS ///.
Definition ifMan.c:50
If_Obj_t * If_ManCreateCi(If_Man_t *p)
Definition ifMan.c:334
void If_LibBoxFree(If_LibBox_t *p)
Definition ifLibBox.c:98
float If_LibLutSlowestPinDelay(If_LibLut_t *p)
Definition ifLibLut.c:494
float If_CutAreaDerefed(If_Man_t *p, If_Cut_t *pCut)
Definition ifCut.c:1110
If_LibBox_t * If_LibBoxStart()
Definition ifLibBox.c:86
void If_ManImproveMapping(If_Man_t *p)
FUNCTION DEFINITIONS ///.
Definition ifReduce.c:51
int If_DsdManPermBitNum(If_DsdMan_t *p)
Definition ifDsd.c:189
int If_LibBoxLoad(char *pFileName)
Definition ifLibBox.c:381
int If_CutPerformCheck16(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
Definition ifDec16.c:2216
int If_CutSopBalanceEvalInt(Vec_Int_t *vCover, int *pTimes, int *pFaninLits, Vec_Int_t *vAig, int *piRes, int nSuppAll, int *pArea)
Definition ifDelay.c:192
int If_CutSopBalancePinDelays(If_Man_t *p, If_Cut_t *pCut, char *pPerm)
Definition ifDelay.c:159
int If_CutSopBalanceEval(If_Man_t *p, If_Cut_t *pCut, Vec_Int_t *vAig)
Definition ifDelay.c:248
If_DsdMan_t * If_DsdManLoad(char *pFileName)
Definition ifDsd.c:1106
int If_CutMergeOrdered(If_Man_t *p, If_Cut_t *pCut0, If_Cut_t *pCut1, If_Cut_t *pCut)
Definition ifCut.c:290
struct If_Obj_t_ If_Obj_t
Definition if.h:79
int If_ManCrossCut(If_Man_t *p)
Definition ifUtil.c:316
void If_DsdManFree(If_DsdMan_t *p, int fVerbose)
Definition ifDsd.c:333
struct Ifif_Par_t_ Ifif_Par_t
Definition if.h:87
void If_DsdManSetLutSize(If_DsdMan_t *p, int nLutSize)
Definition ifDsd.c:193
float If_CutPowerDerefed(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pRoot)
Definition ifCut.c:1314
int If_CutComputeTruth(If_Man_t *p, If_Cut_t *pCut, If_Cut_t *pCut0, If_Cut_t *pCut1, int fCompl0, int fCompl1)
Definition ifTruth.c:99
void If_CutPropagateRequired(If_Man_t *p, If_Obj_t *pObj, If_Cut_t *pCut, float Required)
Definition ifTime.c:178
void If_ManSatUnbuild(void *p)
Definition ifSat.c:86
If_LibLut_t * If_LibLutDup(If_LibLut_t *p)
Definition ifLibLut.c:312
void If_ManCleanNodeCopy(If_Man_t *p)
DECLARATIONS ///.
Definition ifUtil.c:45
int If_CutSopBalancePinDelaysInt(Vec_Int_t *vCover, int *pTimes, word *pFaninRes, int nSuppAll, word *pRes)
Definition ifDelay.c:120
int If_LutDecEval(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pObj, int optDelay, int fFirst)
Definition ifDelay.c:415
int If_DsdManCheckDec(If_DsdMan_t *p, int iDsd)
Definition ifDsd.c:201
int If_DsdManTtBitNum(If_DsdMan_t *p)
Definition ifDsd.c:185
int If_CutDsdBalancePinDelays(If_Man_t *p, If_Cut_t *pCut, char *pPerm)
Definition ifDsd.c:2183
char * If_DsdManFileName(If_DsdMan_t *p)
FUNCTION DEFINITIONS ///.
Definition ifDsd.c:169
int If_CutPerformCheck45(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
Definition ifDec16.c:1865
float If_ManScanMappingDirect(If_Man_t *p)
void * If_ManSatBuildXYZ(int nLutSize)
Definition ifSat.c:64
unsigned __int64 word
DECLARATIONS ///.
Definition kitPerm.c:36
typedefABC_NAMESPACE_HEADER_START struct Mem_Fixed_t_ Mem_Fixed_t
DECLARATIONS ///.
Definition mem.h:33
int Id
Definition if.h:372
int nPos
Definition if.h:374
int nPis
Definition if.h:373
char fUnused
Definition if.h:371
char fBlack
Definition if.h:369
char fOuter
Definition if.h:370
int * pDelays
Definition if.h:375
char * pName
Definition if.h:367
char fSeq
Definition if.h:368
float Power
Definition if.h:305
unsigned Cost
Definition if.h:310
int pLeaves[0]
Definition if.h:318
unsigned nLeaves
Definition if.h:316
float Delay
Definition if.h:306
unsigned nLimit
Definition if.h:315
unsigned fAndCut
Definition if.h:314
unsigned decDelay
Definition if.h:317
unsigned fUseless
Definition if.h:313
unsigned fCompl
Definition if.h:311
unsigned uSign
Definition if.h:309
float Area
Definition if.h:303
int uMaskFunc
Definition if.h:308
int iCutFunc
Definition if.h:307
unsigned fUser
Definition if.h:312
float Edge
Definition if.h:304
Vec_Ptr_t * vBoxes
Definition if.h:381
int nBoxes
Definition if.h:380
char * pName
Definition if.h:189
int fVarPinDelays
Definition if.h:191
int LutMax
Definition if.h:190
float pLutAreas[IF_MAX_LUTSIZE+1]
Definition if.h:192
float pLutDelays[IF_MAX_LUTSIZE+1][IF_MAX_LUTSIZE+1]
Definition if.h:193
int nCutBytes
Definition if.h:246
int nShared
Definition if.h:228
Vec_Int_t * vTtDsds[IF_MAX_FUNC_LUTSIZE+1]
Definition if.h:263
float fEpsilon
Definition if.h:212
Vec_Ptr_t * vCos
Definition if.h:205
int nLevelMax
Definition if.h:211
Vec_Str_t * vTtVars[IF_MAX_FUNC_LUTSIZE+1]
Definition if.h:265
Vec_Int_t * vCoAttrs
Definition if.h:290
If_Par_t * pPars
Definition if.h:201
Vec_Int_t * vVisited2
Definition if.h:286
int nCacheMisses
Definition if.h:275
Mem_Fixed_t * pMemSet
Definition if.h:249
int nCountNonDec[2]
Definition if.h:278
int nCuts5
Definition if.h:259
float RequiredGlo2
Definition if.h:214
Vec_Wrd_t * vOrGate
Definition if.h:234
Vec_Int_t * vPairRes
Definition if.h:269
float AreaGlo
Definition if.h:215
Vec_Wrd_t * vAndGate
Definition if.h:235
int nCuts5a
Definition if.h:259
float dPower
Definition if.h:217
int nCutsUselessAll
Definition if.h:258
int nCacheHits
Definition if.h:274
If_Set_t * pMemCi
Definition if.h:250
int pPerm[3][IF_MAX_LUTSIZE]
Definition if.h:226
int nCutsUsed
Definition if.h:218
int nAttempts
Definition if.h:239
int nPermWords
Definition if.h:244
Vec_Wrd_t * vAnds
Definition if.h:233
Vec_Int_t * vCutData
Definition if.h:279
unsigned * puTemp[4]
Definition if.h:220
int SortMode
Definition if.h:222
int nChoices
Definition if.h:224
int nCutsCountAll
Definition if.h:257
Vec_Ptr_t * vCis
Definition if.h:204
int nSmallSupp
Definition if.h:253
int nCutsUseless[32]
Definition if.h:255
Vec_Int_t * vSwitching
Definition if.h:225
Vec_Int_t * vTtOccurs[IF_MAX_FUNC_LUTSIZE+1]
Definition if.h:267
void ** pHashTable[2]
Definition if.h:294
Vec_Str_t * vMarks
Definition if.h:285
unsigned uCanonPhase
Definition if.h:273
Vec_Mem_t * vTtMem[IF_MAX_FUNC_LUTSIZE+1]
Definition if.h:261
abctime timeCache[6]
Definition if.h:276
Mem_Fixed_t * pMemEntries
Definition if.h:295
int fReqTimeWarn
Definition if.h:229
float RequiredGlo
Definition if.h:213
int nCutsMerged
Definition if.h:219
Vec_Int_t * vDump
Definition if.h:283
If_Set_t * pFreeList
Definition if.h:252
unsigned uSharedMask
Definition if.h:227
Hash_IntMan_t * vPairHash
Definition if.h:268
int nTableEntries[2]
Definition if.h:293
Vec_Str_t * vTtPerms[IF_MAX_FUNC_LUTSIZE+1]
Definition if.h:264
word * puTempW
Definition if.h:221
Vec_Ptr_t * vLatchOrder
Definition if.h:237
int nTruth6Words[IF_MAX_FUNC_LUTSIZE+1]
Definition if.h:243
Vec_Ptr_t * vVisited
Definition if.h:281
char * pName
Definition if.h:199
If_Set_t * pMemAnd
Definition if.h:251
Vec_Ptr_t * vTemp
Definition if.h:208
int nCutsTotal
Definition if.h:254
Vec_Int_t * vCover
Definition if.h:231
int Period
Definition if.h:241
If_Obj_t * pConst1
Definition if.h:203
Vec_Ptr_t * vObjs
Definition if.h:206
int nTableSize[2]
Definition if.h:292
int nCutsCount[32]
Definition if.h:256
Vec_Int_t * vArray
Definition if.h:232
int pArrTimeProfile[IF_MAX_FUNC_LUTSIZE]
Definition if.h:280
Tim_Man_t * pManTim
Definition if.h:289
int pDumpIns[16]
Definition if.h:284
Mem_Fixed_t * pMemObj
Definition if.h:248
void * pUserMan
Definition if.h:282
Vec_Mem_t * vTtMem6
Definition if.h:271
Vec_Wec_t * vTtIsops[IF_MAX_FUNC_LUTSIZE+1]
Definition if.h:262
Vec_Str_t * vPairPerms
Definition if.h:270
int fNextRound
Definition if.h:223
If_DsdMan_t * pIfDsdMan
Definition if.h:260
int nObjBytes
Definition if.h:245
int nObjs[IF_VOID]
Definition if.h:209
Vec_Int_t * vLags
Definition if.h:238
int nMaxIters
Definition if.h:240
int nNets
Definition if.h:216
Vec_Int_t * vTtDecs[IF_MAX_FUNC_LUTSIZE+1]
Definition if.h:266
char pCanonPerm[IF_MAX_LUTSIZE]
Definition if.h:272
int nSetBytes
Definition if.h:247
Vec_Ptr_t * vObjsRev
Definition if.h:207
int nBestCutSmall[2]
Definition if.h:277
unsigned fMark
Definition if.h:338
int nRefs
Definition if.h:346
unsigned fPhase
Definition if.h:336
float EstRefs
Definition if.h:352
int IdPio
Definition if.h:345
If_Obj_t * pFanin1
Definition if.h:350
float LValue
Definition if.h:354
int iCopy
Definition if.h:357
unsigned fVisit
Definition if.h:339
If_Obj_t * pFanin0
Definition if.h:349
unsigned Level
Definition if.h:343
unsigned fDriver
Definition if.h:341
int nVisits
Definition if.h:347
unsigned fRepr
Definition if.h:337
unsigned fCompl1
Definition if.h:335
If_Cut_t CutBest
Definition if.h:361
unsigned fSkipCut
Definition if.h:342
unsigned fSpec
Definition if.h:340
unsigned Type
Definition if.h:333
int nVisitsCopy
Definition if.h:348
If_Set_t * pCutSet
Definition if.h:360
unsigned fCompl0
Definition if.h:334
float Required
Definition if.h:353
int Id
Definition if.h:344
void * pCopy
Definition if.h:356
If_Obj_t * pEquiv
Definition if.h:351
int fEnableStructN
Definition if.h:155
int fLut6Filter
Definition if.h:122
int fUseCoAttrs
Definition if.h:171
int nLatchesCiBox
Definition if.h:168
float * pTimesArr
Definition if.h:176
int fUseDsd
Definition if.h:140
int nGateSize
Definition if.h:108
int fAreaOnly
Definition if.h:159
int fLatchPaths
Definition if.h:121
int fDelayOpt
Definition if.h:126
int fSkipCutFilter
Definition if.h:158
int fUseSops
Definition if.h:163
int fUserLut2D
Definition if.h:151
float Epsilon
Definition if.h:111
int fEnableCheck75
Definition if.h:138
int nRelaxRatio
Definition if.h:112
int fDeriveLuts
Definition if.h:147
int nLatchesCoBox
Definition if.h:169
int fEnableCheck10
Definition if.h:137
int fUseAndVars
Definition if.h:143
int fTruth
Definition if.h:160
int fPower
Definition if.h:124
int fUserLutDec
Definition if.h:150
int nLutSize
Definition if.h:104
int fUseCnfs
Definition if.h:164
int fExpRed
Definition if.h:120
float FinalDelay
Definition if.h:173
int fVerboseTrace
Definition if.h:153
int nStructType
Definition if.h:113
int nLatchesCo
Definition if.h:167
int fUseCofVars
Definition if.h:142
int nLutDecSize
Definition if.h:116
int fEdge
Definition if.h:123
int fUseTtPerm
Definition if.h:144
int fUserSesLib
Definition if.h:130
int fUseBuffs
Definition if.h:134
int fUseBat
Definition if.h:133
int fEnableCheck07
Definition if.h:135
int nFlowIters
Definition if.h:106
int fUse34Spec
Definition if.h:132
int nAreaIters
Definition if.h:107
int fUseDsdTune
Definition if.h:141
int(* pFuncUser)(If_Man_t *, If_Obj_t *, If_Cut_t *)
Definition if.h:179
int fEnableCheck75u
Definition if.h:139
int fEnableCheck08
Definition if.h:136
int fLiftLeaves
Definition if.h:170
int fUseBdds
Definition if.h:162
int fDoAverage
Definition if.h:148
int(* pFuncCell2)(If_Man_t *, word *, int, Vec_Str_t *, char **)
Definition if.h:181
int nNonDecLimit
Definition if.h:109
int fDelayOptLut
Definition if.h:127
float WireDelay
Definition if.h:156
int fBidec
Definition if.h:131
int(* pFuncCell)(If_Man_t *, unsigned *, int, int, char *)
Definition if.h:180
int fUseMv
Definition if.h:165
int nAndArea
Definition if.h:115
int fUseCheck2
Definition if.h:146
int nCutsMax
Definition if.h:105
int fVerbose
Definition if.h:152
int fDsdBalance
Definition if.h:128
float DelayTarget
Definition if.h:110
float DelayTargetNew
Definition if.h:172
void * pReoMan
Definition if.h:183
int fCutMin
Definition if.h:125
float * pTimesReq
Definition if.h:177
int fPreprocess
Definition if.h:117
If_LibLut_t * pLutLib
Definition if.h:175
int fHashMapping
Definition if.h:149
int nLatchesCi
Definition if.h:166
int fFancy
Definition if.h:119
float FinalArea
Definition if.h:174
int fUserRecLib
Definition if.h:129
int nAndDelay
Definition if.h:114
int(* pFuncWrite)(If_Man_t *)
Definition if.h:182
int(* pFuncCost)(If_Man_t *, If_Cut_t *)
Definition if.h:178
char * pLutStruct
Definition if.h:154
int fUseCheck1
Definition if.h:145
int fUsePerm
Definition if.h:161
int fArea
Definition if.h:118
If_Cut_t ** ppCuts
Definition if.h:327
short nCutsMax
Definition if.h:324
If_Set_t * pNext
Definition if.h:326
short nCuts
Definition if.h:325
int nDegree
Definition if.h:94
float DelayWire
Definition if.h:93
int fCascade
Definition if.h:95
If_LibLut_t * pLutLib
Definition if.h:91
float pLutDelays[IF_MAX_LUTSIZE]
Definition if.h:92
int fVerbose
Definition if.h:96
int nLutSize
Definition if.h:90
int fVeryVerbose
Definition if.h:97
typedefABC_NAMESPACE_HEADER_START struct Tim_Man_t_ Tim_Man_t
INCLUDES ///.
Definition tim.h:92
typedefABC_NAMESPACE_IMPL_START struct Vec_Mem_t_ Vec_Mem_t
DECLARATIONS ///.
Definition utilMem.c:35
#define assert(ex)
Definition util_old.h:213
char * memcpy()
char * memset()
struct Hash_IntMan_t_ Hash_IntMan_t
Definition vecHash.h:51
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.
Definition vecWec.h:42
typedefABC_NAMESPACE_HEADER_START struct Vec_Wrd_t_ Vec_Wrd_t
INCLUDES ///.
Definition vecWrd.h:42