ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
FxchMan.c File Reference
#include "Fxch.h"
Include dependency graph for FxchMan.c:

Go to the source code of this file.

Functions

Fxch_Man_tFxch_ManAlloc (Vec_Wec_t *vCubes)
 PUBLIC INTERFACE ///.
 
void Fxch_ManFree (Fxch_Man_t *pFxchMan)
 
void Fxch_ManMapLiteralsIntoCubes (Fxch_Man_t *pFxchMan, int nVars)
 
void Fxch_ManGenerateLitHashKeys (Fxch_Man_t *pFxchMan)
 
void Fxch_ManSCHashTablesInit (Fxch_Man_t *pFxchMan)
 
void Fxch_ManSCHashTablesFree (Fxch_Man_t *pFxchMan)
 
void Fxch_ManDivCreate (Fxch_Man_t *pFxchMan)
 
int Fxch_ManComputeLevelDiv (Fxch_Man_t *pFxchMan, Vec_Int_t *vCubeFree)
 
int Fxch_ManComputeLevelCube (Fxch_Man_t *pFxchMan, Vec_Int_t *vCube)
 
void Fxch_ManComputeLevel (Fxch_Man_t *pFxchMan)
 
void Fxch_ManUpdate (Fxch_Man_t *pFxchMan, int iDiv)
 
void Fxch_ManPrintDivs (Fxch_Man_t *pFxchMan)
 
void Fxch_ManPrintStats (Fxch_Man_t *pFxchMan)
 

Function Documentation

◆ Fxch_ManAlloc()

Fxch_Man_t * Fxch_ManAlloc ( Vec_Wec_t * vCubes)

PUBLIC INTERFACE ///.

Definition at line 169 of file FxchMan.c.

170{
171 Fxch_Man_t* pFxchMan = ABC_CALLOC( Fxch_Man_t, 1 );
172
173 pFxchMan->vCubes = vCubes;
174 pFxchMan->nCubesInit = Vec_WecSize( vCubes );
175
176 pFxchMan->pDivHash = Hsh_VecManStart( 1024 );
177 pFxchMan->vDivWeights = Vec_FltAlloc( 1024 );
178 pFxchMan->vDivCubePairs = Vec_WecAlloc( 1024 );
179
180 pFxchMan->vCubeFree = Vec_IntAlloc( 4 );
181 pFxchMan->vDiv = Vec_IntAlloc( 4 );
182
183 pFxchMan->vCubesS = Vec_IntAlloc( 128 );
184 pFxchMan->vPairs = Vec_IntAlloc( 128 );
185 pFxchMan->vCubesToUpdate = Vec_IntAlloc( 64 );
186 pFxchMan->vCubesToRemove = Vec_IntAlloc( 64 );
187 pFxchMan->vSCC = Vec_IntAlloc( 64 );
188
189 return pFxchMan;
190}
#define ABC_CALLOC(type, num)
Definition abc_global.h:265
struct Fxch_Man_t_ Fxch_Man_t
TYPEDEF DECLARATIONS ///.
Definition plaFxch.c:42
Vec_Int_t * vSCC
Definition Fxch.h:124
Vec_Flt_t * vDivWeights
Definition Fxch.h:104
Hsh_VecMan_t * pDivHash
Definition Fxch.h:103
Vec_Wec_t vCubes
Definition plaFxch.c:46
Vec_Wec_t vPairs
Definition plaFxch.c:55
Vec_Int_t * vCubeFree
Definition Fxch.h:119
Vec_Int_t vCubesS
Definition plaFxch.c:58
int nCubesInit
Definition Fxch.h:93
Vec_Int_t * vDiv
Definition Fxch.h:120
Vec_Int_t * vCubesToUpdate
Definition Fxch.h:123
Vec_Int_t * vCubesToRemove
Definition Fxch.h:122
Vec_Wec_t * vDivCubePairs
Definition Fxch.h:106
Here is the caller graph for this function:

◆ Fxch_ManComputeLevel()

void Fxch_ManComputeLevel ( Fxch_Man_t * pFxchMan)

Definition at line 338 of file FxchMan.c.

339{
340 Vec_Int_t* vCube;
341 int i,
342 iVar,
343 iFirst = 0;
344
345 iVar = Vec_IntEntry( Vec_WecEntry( pFxchMan->vCubes, 0 ), 0 );
346 pFxchMan->vLevels = Vec_IntStart( pFxchMan->nVars );
347
348 Vec_WecForEachLevel( pFxchMan->vCubes, vCube, i )
349 {
350 if ( iVar != Vec_IntEntry( vCube, 0 ) )
351 {
352 Vec_IntAddToEntry( pFxchMan->vLevels, iVar, i - iFirst );
353 iVar = Vec_IntEntry( vCube, 0 );
354 iFirst = i;
355 }
356 Vec_IntUpdateEntry( pFxchMan->vLevels, iVar, Fxch_ManComputeLevelCube( pFxchMan, vCube ) );
357 }
358}
int Fxch_ManComputeLevelCube(Fxch_Man_t *pFxchMan, Vec_Int_t *vCube)
Definition FxchMan.c:325
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
int nVars
Definition plaFxch.c:65
Vec_Int_t * vLevels
Definition Fxch.h:108
#define Vec_WecForEachLevel(vGlob, vVec, i)
MACRO DEFINITIONS ///.
Definition vecWec.h:55
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Fxch_ManComputeLevelCube()

int Fxch_ManComputeLevelCube ( Fxch_Man_t * pFxchMan,
Vec_Int_t * vCube )

Definition at line 325 of file FxchMan.c.

327{
328 int k,
329 Lit,
330 Level = 0;
331
332 Vec_IntForEachEntryStart( vCube, Lit, k, 1 )
333 Level = Abc_MaxInt( Level, Vec_IntEntry( pFxchMan->vLevels, Abc_Lit2Var( Lit ) ) );
334
335 return Level;
336}
#define Vec_IntForEachEntryStart(vVec, Entry, i, Start)
Definition vecInt.h:56
Here is the caller graph for this function:

◆ Fxch_ManComputeLevelDiv()

int Fxch_ManComputeLevelDiv ( Fxch_Man_t * pFxchMan,
Vec_Int_t * vCubeFree )

Definition at line 312 of file FxchMan.c.

314{
315 int i,
316 Lit,
317 Level = 0;
318
319 Vec_IntForEachEntry( vCubeFree, Lit, i )
320 Level = Abc_MaxInt( Level, Vec_IntEntry( pFxchMan->vLevels, Abc_Lit2Var( Abc_Lit2Var( Lit ) ) ) );
321
322 return Abc_MinInt( Level, 800 );
323}
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
Definition vecInt.h:54
Here is the caller graph for this function:

◆ Fxch_ManDivCreate()

void Fxch_ManDivCreate ( Fxch_Man_t * pFxchMan)

Definition at line 288 of file FxchMan.c.

289{
290 Vec_Int_t* vCube;
291 float Weight;
292 int fAdd = 1,
293 fUpdate = 0,
294 iCube;
295
296 Vec_WecForEachLevel( pFxchMan->vCubes, vCube, iCube )
297 {
298 Fxch_ManDivSingleCube( pFxchMan, iCube, fAdd, fUpdate );
299 Fxch_ManDivDoubleCube( pFxchMan, iCube, fAdd, fUpdate );
300 }
301
302 pFxchMan->vDivPrio = Vec_QueAlloc( Vec_FltSize( pFxchMan->vDivWeights ) );
303 Vec_QueSetPriority( pFxchMan->vDivPrio, Vec_FltArrayP( pFxchMan->vDivWeights ) );
304 Vec_FltForEachEntry( pFxchMan->vDivWeights, Weight, iCube )
305 {
306 if ( Weight > 0.0 )
307 Vec_QuePush( pFxchMan->vDivPrio, iCube );
308 }
309}
Vec_Que_t * vDivPrio
Definition Fxch.h:105
#define Vec_FltForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
Definition vecFlt.h:54
Here is the caller graph for this function:

◆ Fxch_ManFree()

void Fxch_ManFree ( Fxch_Man_t * pFxchMan)

Definition at line 192 of file FxchMan.c.

193{
194 Vec_WecFree( pFxchMan->vLits );
195 Vec_IntFree( pFxchMan->vLitCount );
196 Vec_IntFree( pFxchMan->vLitHashKeys );
197 Hsh_VecManStop( pFxchMan->pDivHash );
198 Vec_FltFree( pFxchMan->vDivWeights );
199 Vec_QueFree( pFxchMan->vDivPrio );
200 Vec_WecFree( pFxchMan->vDivCubePairs );
201 Vec_IntFree( pFxchMan->vLevels );
202
203 Vec_IntFree( pFxchMan->vCubeFree );
204 Vec_IntFree( pFxchMan->vDiv );
205
206 Vec_IntFree( pFxchMan->vCubesS );
207 Vec_IntFree( pFxchMan->vPairs );
208 Vec_IntFree( pFxchMan->vCubesToUpdate );
209 Vec_IntFree( pFxchMan->vCubesToRemove );
210 Vec_IntFree( pFxchMan->vSCC );
211
212 ABC_FREE( pFxchMan );
213}
#define ABC_FREE(obj)
Definition abc_global.h:267
Vec_Wec_t vLits
Definition plaFxch.c:48
Vec_Int_t * vLitHashKeys
Definition Fxch.h:101
Vec_Int_t * vLitCount
Definition Fxch.h:100
Here is the caller graph for this function:

◆ Fxch_ManGenerateLitHashKeys()

void Fxch_ManGenerateLitHashKeys ( Fxch_Man_t * pFxchMan)

Definition at line 255 of file FxchMan.c.

256{
257 int i;
258 /* Generates the random number which will be used for hashing cubes */
259 Gia_ManRandom( 1 );
260 pFxchMan->vLitHashKeys = Vec_IntAlloc( ( 2 * pFxchMan->nVars ) );
261 for ( i = 0; i < (2 * pFxchMan->nVars); i++ )
262 Vec_IntPush( pFxchMan->vLitHashKeys, Gia_ManRandom(0) & 0x3FFFFFF );
263}
unsigned Gia_ManRandom(int fReset)
FUNCTION DEFINITIONS ///.
Definition giaUtil.c:49
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Fxch_ManMapLiteralsIntoCubes()

void Fxch_ManMapLiteralsIntoCubes ( Fxch_Man_t * pFxchMan,
int nVars )

Definition at line 215 of file FxchMan.c.

217{
218
219 Vec_Int_t* vCube;
220 int i, k,
221 Lit,
222 Count;
223
224 pFxchMan->nVars = 0;
225 pFxchMan->nLits = 0;
226 Vec_WecForEachLevel( pFxchMan->vCubes, vCube, i )
227 {
228 assert( Vec_IntSize(vCube) > 0 );
229 pFxchMan->nVars = Abc_MaxInt( pFxchMan->nVars, Vec_IntEntry( vCube, 0 ) );
230 pFxchMan->nLits += Vec_IntSize(vCube) - 1;
231 Vec_IntForEachEntryStart( vCube, Lit, k, 1 )
232 pFxchMan->nVars = Abc_MaxInt( pFxchMan->nVars, Abc_Lit2Var( Lit ) );
233 }
234
235 assert( pFxchMan->nVars < nVars );
236 pFxchMan->nVars = nVars;
237
238 /* Count the number of time each literal appears on the SOP */
239 pFxchMan->vLitCount = Vec_IntStart( 2 * pFxchMan->nVars );
240 Vec_WecForEachLevel( pFxchMan->vCubes, vCube, i )
241 Vec_IntForEachEntryStart( vCube, Lit, k, 1 )
242 Vec_IntAddToEntry( pFxchMan->vLitCount, Lit, 1 );
243
244 /* Allocate space to the array of arrays wich maps Literals into cubes which uses them */
245 pFxchMan->vLits = Vec_WecStart( 2 * pFxchMan->nVars );
246 Vec_IntForEachEntry( pFxchMan->vLitCount, Count, Lit )
247 Vec_IntGrow( Vec_WecEntry( pFxchMan->vLits, Lit ), Count );
248
249 /* Maps Literals into cubes which uses them */
250 Vec_WecForEachLevel( pFxchMan->vCubes, vCube, i )
251 Vec_IntForEachEntryStart( vCube, Lit, k, 1 )
252 Vec_WecPush( pFxchMan->vLits, Lit, i );
253}
int nLits
Definition plaFxch.c:66
#define assert(ex)
Definition util_old.h:213
Here is the caller graph for this function:

◆ Fxch_ManPrintDivs()

void Fxch_ManPrintDivs ( Fxch_Man_t * pFxchMan)

Definition at line 764 of file FxchMan.c.

765{
766 int iDiv;
767
768 for ( iDiv = 0; iDiv < Vec_FltSize( pFxchMan->vDivWeights ); iDiv++ )
769 Fxch_DivPrint( pFxchMan, iDiv );
770}
void Fxch_DivPrint(Fxch_Man_t *pFxchMan, int iDiv)
Definition FxchDiv.c:446
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Fxch_ManPrintStats()

void Fxch_ManPrintStats ( Fxch_Man_t * pFxchMan)

Definition at line 772 of file FxchMan.c.

773{
774 printf( "Cubes =%8d ", Vec_WecSizeUsed( pFxchMan->vCubes ) );
775 printf( "Lits =%8d ", Vec_WecSizeUsed( pFxchMan->vLits ) );
776 printf( "Divs =%8d ", Hsh_VecSize( pFxchMan->pDivHash ) );
777 printf( "Divs+ =%8d ", Vec_QueSize( pFxchMan->vDivPrio ) );
778 printf( "Extr =%7d \n", pFxchMan->nExtDivs );
779}
int nExtDivs
Definition Fxch.h:133
Here is the caller graph for this function:

◆ Fxch_ManSCHashTablesFree()

void Fxch_ManSCHashTablesFree ( Fxch_Man_t * pFxchMan)

Definition at line 283 of file FxchMan.c.

284{
286}
void Fxch_SCHashTableDelete(Fxch_SCHashTable_t *)
Fxch_SCHashTable_t * pSCHashTable
Definition Fxch.h:97
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Fxch_ManSCHashTablesInit()

void Fxch_ManSCHashTablesInit ( Fxch_Man_t * pFxchMan)

Definition at line 265 of file FxchMan.c.

266{
267 Vec_Wec_t* vCubes = pFxchMan->vCubes;
268 Vec_Int_t* vCube;
269 int iCube,
270 nTotalHashed = 0;
271
272 Vec_WecForEachLevel( vCubes, vCube, iCube )
273 {
274 int nLits = Vec_IntSize( vCube ) - 1,
275 nSubCubes = nLits <= 2? nLits + 1: ( nLits * nLits + nLits ) / 2;
276
277 nTotalHashed += nSubCubes + 1;
278 }
279
280 pFxchMan->pSCHashTable = Fxch_SCHashTableCreate( pFxchMan, nTotalHashed );
281}
Fxch_SCHashTable_t * Fxch_SCHashTableCreate(Fxch_Man_t *pFxchMan, int nEntries)
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.
Definition vecWec.h:42
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Fxch_ManUpdate()

void Fxch_ManUpdate ( Fxch_Man_t * pFxchMan,
int iDiv )

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

Synopsis [Updates the data-structure when one divisor is selected.]

Description []

SideEffects []

SeeAlso []

Definition at line 584 of file FxchMan.c.

586{
587 int i, iCube0, iCube1,
588 Lit0 = -1,
589 Lit1 = -1,
590 iVarNew;
591
592 Vec_Int_t* vCube0,
593 * vCube1,
594 * vDivCubePairs;
595
596 /* Get the selected candidate (divisor) */
597 Vec_IntClear( pFxchMan->vDiv );
598 Vec_IntAppend( pFxchMan->vDiv, Hsh_VecReadEntry( pFxchMan->pDivHash, iDiv ) );
599
600 /* Find cubes associated with the divisor */
601 Vec_IntClear( pFxchMan->vCubesS );
602 if ( Vec_IntSize( pFxchMan->vDiv ) == 2 )
603 {
604 Lit0 = Abc_Lit2Var( Vec_IntEntry( pFxchMan->vDiv, 0 ) );
605 Lit1 = Abc_Lit2Var( Vec_IntEntry( pFxchMan->vDiv, 1 ) );
606 assert( Lit0 >= 0 && Lit1 >= 0 );
607
608 Fxch_ManCompressCubes( pFxchMan->vCubes, Vec_WecEntry( pFxchMan->vLits, Abc_LitNot( Lit0 ) ) );
609 Fxch_ManCompressCubes( pFxchMan->vCubes, Vec_WecEntry( pFxchMan->vLits, Abc_LitNot( Lit1 ) ) );
610 Vec_IntTwoRemoveCommon( Vec_WecEntry( pFxchMan->vLits, Abc_LitNot( Lit0 ) ),
611 Vec_WecEntry( pFxchMan->vLits, Abc_LitNot( Lit1 ) ),
612 pFxchMan->vCubesS );
613 }
614
615 /* Find pairs associated with the divisor */
616 Vec_IntClear( pFxchMan->vPairs );
617 vDivCubePairs = Vec_WecEntry( pFxchMan->vDivCubePairs, iDiv );
618 Vec_IntAppend( pFxchMan->vPairs, vDivCubePairs );
619 Vec_IntErase( vDivCubePairs );
620
621 Vec_IntForEachEntryDouble( pFxchMan->vPairs, iCube0, iCube1, i )
622 {
623 assert( Fxch_ManGetLit( pFxchMan, iCube0, 0) == Fxch_ManGetLit( pFxchMan, iCube1, 0) );
624 if (iCube0 > iCube1)
625 {
626 Vec_IntSetEntry( pFxchMan->vPairs, i, iCube1);
627 Vec_IntSetEntry( pFxchMan->vPairs, i+1, iCube0);
628 }
629 }
630
631 Vec_IntUniqifyPairs( pFxchMan->vPairs );
632 assert( Vec_IntSize( pFxchMan->vPairs ) % 2 == 0 );
633
634 /* subtract cost of single-cube divisors */
635 Vec_IntForEachEntry( pFxchMan->vCubesS, iCube0, i )
636 {
637 Fxch_ManDivSingleCube( pFxchMan, iCube0, 0, 1);
638
639 if ( Vec_WecEntryEntry( pFxchMan->vCubes, iCube0, 0 ) == 0 )
640 Fxch_ManDivDoubleCube( pFxchMan, iCube0, 0, 1 );
641 }
642
643 Vec_IntForEachEntry( pFxchMan->vPairs, iCube0, i )
644 {
645 Fxch_ManDivSingleCube( pFxchMan, iCube0, 0, 1);
646
647 if ( Vec_WecEntryEntry( pFxchMan->vCubes, iCube0, 0 ) == 0 )
648 Fxch_ManDivDoubleCube( pFxchMan, iCube0, 0, 1 );
649 }
650
651 Vec_IntClear( pFxchMan->vCubesToUpdate );
652 if ( Fxch_DivIsNotConstant1( pFxchMan->vDiv ) )
653 {
654 iVarNew = Fxch_ManCreateCube( pFxchMan, Lit0, Lit1 );
655 Fxch_ManExtractDivFromCube( pFxchMan, Lit0, Lit1, iVarNew );
656 Fxch_ManExtractDivFromCubePairs( pFxchMan, iVarNew );
657 }
658 else
659 Fxch_ManExtractDivFromCubePairs( pFxchMan, 0 );
660
661 assert( Vec_IntSize( pFxchMan->vCubesToUpdate ) );
662
663 /* Add cost */
664 Vec_IntForEachEntry( pFxchMan->vCubesToUpdate, iCube0, i )
665 {
666 Fxch_ManDivSingleCube( pFxchMan, iCube0, 1, 1 );
667
668 if ( Vec_WecEntryEntry( pFxchMan->vCubes, iCube0, 0 ) == 0 )
669 Fxch_ManDivDoubleCube( pFxchMan, iCube0, 1, 1 );
670 }
671
672 /* Deal with SCC */
673 if ( Vec_IntSize( pFxchMan->vSCC ) )
674 {
675 Vec_IntUniqifyPairs( pFxchMan->vSCC );
676 assert( Vec_IntSize( pFxchMan->vSCC ) % 2 == 0 );
677
678 Vec_IntForEachEntryDouble( pFxchMan->vSCC, iCube0, iCube1, i )
679 {
680 int j, RetValue = 1;
681 int* pOutputID0 = Vec_IntEntryP( pFxchMan->vOutputID, iCube0 * pFxchMan->nSizeOutputID );
682 int* pOutputID1 = Vec_IntEntryP( pFxchMan->vOutputID, iCube1 * pFxchMan->nSizeOutputID );
683 vCube0 = Vec_WecEntry( pFxchMan->vCubes, iCube0 );
684 vCube1 = Vec_WecEntry( pFxchMan->vCubes, iCube1 );
685
686 if ( !Vec_WecIntHasMark( vCube0 ) )
687 {
688 Fxch_ManDivSingleCube( pFxchMan, iCube0, 0, 1 );
689 Fxch_ManDivDoubleCube( pFxchMan, iCube0, 0, 1 );
690 Vec_WecIntSetMark( vCube0 );
691 }
692
693 if ( !Vec_WecIntHasMark( vCube1 ) )
694 {
695 Fxch_ManDivSingleCube( pFxchMan, iCube1, 0, 1 );
696 Fxch_ManDivDoubleCube( pFxchMan, iCube1, 0, 1 );
697 Vec_WecIntSetMark( vCube1 );
698 }
699
700 if ( Vec_IntSize( vCube0 ) == Vec_IntSize( vCube1 ) )
701 {
702 for ( j = 0; j < pFxchMan->nSizeOutputID; j++ )
703 {
704 pOutputID1[j] |= pOutputID0[j];
705 pOutputID0[j] = 0;
706 }
707 Vec_IntClear( Vec_WecEntry( pFxchMan->vCubes, iCube0 ) );
708 Vec_WecIntXorMark( vCube0 );
709 continue;
710 }
711
712 for ( j = 0; j < pFxchMan->nSizeOutputID && RetValue; j++ )
713 RetValue = ( pOutputID0[j] == pOutputID1[j] );
714
715 if ( RetValue )
716 {
717 Vec_IntClear( Vec_WecEntry( pFxchMan->vCubes, iCube0 ) );
718 Vec_WecIntXorMark( vCube0 );
719 }
720 else
721 {
722 RetValue = 0;
723 for ( j = 0; j < pFxchMan->nSizeOutputID; j++ )
724 {
725 RetValue |= ( pOutputID0[j] & ~( pOutputID1[j] ) );
726 pOutputID0[j] &= ~( pOutputID1[j] );
727 }
728
729 if ( RetValue == 0 )
730 {
731 Vec_IntClear( Vec_WecEntry( pFxchMan->vCubes, iCube0 ) );
732 Vec_WecIntXorMark( vCube0 );
733 }
734 }
735 }
736
737 Vec_IntForEachEntryDouble( pFxchMan->vSCC, iCube0, iCube1, i )
738 {
739 vCube0 = Vec_WecEntry( pFxchMan->vCubes, iCube0 );
740 vCube1 = Vec_WecEntry( pFxchMan->vCubes, iCube1 );
741
742 if ( Vec_WecIntHasMark( vCube0 ) )
743 {
744 Fxch_ManDivSingleCube( pFxchMan, iCube0, 1, 1 );
745 Fxch_ManDivDoubleCube( pFxchMan, iCube0, 1, 1 );
746 Vec_WecIntXorMark( vCube0 );
747 }
748
749 if ( Vec_WecIntHasMark( vCube1 ) )
750 {
751 Fxch_ManDivSingleCube( pFxchMan, iCube1, 1, 1 );
752 Fxch_ManDivDoubleCube( pFxchMan, iCube1, 1, 1 );
753 Vec_WecIntXorMark( vCube1 );
754 }
755 }
756
757 Vec_IntClear( pFxchMan->vSCC );
758 }
759
760 pFxchMan->nExtDivs++;
761}
int Fxch_DivIsNotConstant1(Vec_Int_t *vDiv)
Definition FxchDiv.c:470
Vec_Int_t * vOutputID
Definition Fxch.h:112
int nSizeOutputID
Definition Fxch.h:114
#define Vec_IntForEachEntryDouble(vVec, Entry1, Entry2, i)
Definition vecInt.h:72
Here is the call graph for this function: